Created
September 11, 2009 21:23
-
-
Save cprieto/185595 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using FluentValidation; | |
using FluentValidation.TestHelper; | |
using Moq; | |
using Rioshu.Educa.Data; | |
using Rioshu.Educa.Models; | |
using Rioshu.Educa.Validators; | |
using Xunit; | |
namespace Membership.App.Facts | |
{ | |
public class SignUpFormValidatorFacts | |
{ | |
readonly Mock<IMemberRepository> mockedRepo = new Mock<IMemberRepository>(); | |
readonly IValidator<SignUpForm> validator; | |
const string TakenUsername = FakeData.TakenUsername; | |
const string AvailableUsername = FakeData.AvailableUsername; | |
public SignUpFormValidatorFacts() | |
{ | |
mockedRepo.Setup(r => r.GetByUsername(TakenUsername)).Returns(FakeData.FakeMember); | |
validator = new SignUpFormValidator(mockedRepo.Object); | |
} | |
[Fact] | |
public void Empty_username_is_not_valid() | |
{ | |
validator.ShouldHaveValidationErrorFor(x => x.Username, string.Empty); | |
validator.ShouldNotHaveValidationErrorFor(x => x.Username, AvailableUsername); | |
} | |
[Fact] | |
public void Username_must_be_only_alphanumeric() | |
{ | |
validator.ShouldNotHaveValidationErrorFor(x => x.Username, "validusername"); | |
validator.ShouldNotHaveValidationErrorFor(x => x.Username, "valid_username"); | |
validator.ShouldNotHaveValidationErrorFor(x => x.Username, "valid.username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid,username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid$username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid?username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid¿username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid!username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid¡username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid&username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid%username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid#username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid\"username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid|username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid°username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid¬username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid*username"); | |
validator.ShouldHaveValidationErrorFor(x => x.Username, "invalid´username"); | |
} | |
[Fact] | |
public void Empty_first_name_is_not_valid() | |
{ | |
validator.ShouldHaveValidationErrorFor(x => x.FirstName, string.Empty); | |
validator.ShouldNotHaveValidationErrorFor(x => x.FirstName, "first name"); | |
} | |
[Fact] | |
public void Empty_last_name_is_not_valid() | |
{ | |
validator.ShouldHaveValidationErrorFor(x => x.LastName, string.Empty); | |
validator.ShouldNotHaveValidationErrorFor(x => x.LastName, "last name"); | |
} | |
[Fact] | |
public void Email_must_be_a_valid_email_empty_is_allowed() | |
{ | |
validator.ShouldHaveValidationErrorFor(x => x.Email, "invalid_email"); | |
validator.ShouldNotHaveValidationErrorFor(x => x.Email, "email@email.com"); | |
validator.ShouldNotHaveValidationErrorFor(x => x.Email, string.Empty); | |
} | |
[Fact] | |
public void BirthDate_must_be_set_on_the_past() | |
{ | |
validator.ShouldHaveValidationErrorFor(x => x.BirthDate, DateTime.Now); | |
validator.ShouldNotHaveValidationErrorFor(x => x.BirthDate, DateTime.Now.AddDays(-2)); | |
} | |
[Fact] | |
public void Password_must_not_be_empty() | |
{ | |
validator.ShouldHaveValidationErrorFor(x => x.Password, string.Empty); | |
validator.ShouldNotHaveValidationErrorFor(x => x.Password, "non.empty"); | |
} | |
[Fact] | |
public void Password_must_have_more_than_4_chars_and_less_than_15() | |
{ | |
validator.ShouldHaveValidationErrorFor(x => x.Password, "123"); | |
validator.ShouldHaveValidationErrorFor(x => x.Password, "1234567890123456"); | |
validator.ShouldNotHaveValidationErrorFor(x => x.Password, "1234"); | |
validator.ShouldNotHaveValidationErrorFor(x => x.Password, "123456789012345"); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment