Skip to content

Instantly share code, notes, and snippets.

@cprieto
Created September 10, 2009 04:53
Show Gist options
  • Save cprieto/184315 to your computer and use it in GitHub Desktop.
Save cprieto/184315 to your computer and use it in GitHub Desktop.
[Subject(typeof(MembershipService), "Registering a user")]
public class when_member_data_is_totally_correct : Membership_service_subscription_context
{
Because of = () =>
suo.Register(signup);
It should_save_member_to_repository = () =>
memberRepository.Verify(r => r.Add(Moq.It.Is<Member>(m => m.Username == "non.exists")));
}
[Subject(typeof(MembershipService), "Registering a user")]
public class when_member_data_is_submited : Membership_service_subscription_context
{
Because of = () =>
suo.Register(signup);
It should_check_with_repository_if_user_already_exists = () =>
memberRepository.Verify(r => r.GetByUsername(Moq.It.IsAny<string>()));
}
[Subject(typeof(MembershipService), "Registering a user")]
public class when_username_is_already_taken : Membership_service_subscription_context
{
static Exception exception;
Because of = () => {
signup.Username = "username";
exception = Catch.Exception(() => suo.Register(signup));
};
It should_throw_a_validation_exception = () =>
exception.ShouldBeOfType<ValidationException>();
}
public class Membership_service_subscription_context
{
protected static Mock<IMemberRepository> memberRepository = new Mock<IMemberRepository>();
protected static IMembershipService suo;
protected static SignUpForm signup;
protected static Member member;
Establish context = () =>
{
member = new Member("username", "first name", "last name", string.Empty, DateTime.Now, Gender.Male, MemberType.Student);
signup = new SignUpForm
{
Username = "non.exists",
FirstName = "first name",
LastName = "last name",
Email = "email@mail.com",
Password = "password",
RepeatPassword = "password",
BirthDate = DateTime.Now,
SchoolId = 1
};
memberRepository.Setup(r => r.GetByUsername(member.Username)).Returns(member);
memberRepository.Setup(r => r.GetByUsername("non.exist")).Returns(() => null);
suo = new MembershipService(memberRepository.Object);
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment