Skip to content

Instantly share code, notes, and snippets.

@cprieto
Created September 11, 2009 21:23
Show Gist options
  • Save cprieto/185595 to your computer and use it in GitHub Desktop.
Save cprieto/185595 to your computer and use it in GitHub Desktop.
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