Refactor Code

  • Gravatar
    Object Mother OR Object Builder Pattern

    by azamsharp on 5/27/2008 7:01:52 AM
  • Ben told me about Object Mother/Builder pattern which can be used with Fluent Interface Pattern to quickly set up the environment for testing. Here I have created a UserBuilder class which is responsible for creating or setting up a dummy user for test.
  • Here is the class:

    public class UserBuilder
    {
    private MembershipUser user;
    private tblUserInfo info;

    public UserBuilder New(string userName, string password, string email)
    {
    user = Membership.CreateUser(userName, password, email);
    info = new tblUserInfo() { DateCreated = DateTime.Now, DateModified = DateTime.Now, Active = true };
    return this;
    }

    public UserBuilder WithFirstName(string firstName)
    {
    info.FirstName = firstName;
    return this;
    }

    public UserBuilder WithLastName(string lastName)
    {
    info.LastName = lastName;
    return this;
    }

    public UserBuilder WithInfo(UserInfoBuilder infoBuilder)
    {
    infoBuilder.New((Guid)user.ProviderUserKey, user.UserName);

    return this;
    }

    public UserBuilder AssignRole(string roleName)
    {
    Roles.AddUserToRole(user.UserName, roleName);
    return this;
    }




    public MembershipUser Build()
    {
    return user;
    }


    }

    Usage:

    [Test]
    [RollBack]
    public void should_be_able_to_assign_tutor_role_to_the_user()
    {
    var alice = new UserBuilder().New("alice", "alice1234$", "alice@yahoo.com")
    .AssignRole("Tutor").Build();

    var vAlice = Membership.GetUser(alice.UserName);

    Assert.IsTrue(Roles.IsUserInRole(vAlice.UserName, "Tutor"));

    }

  • Refactor it!
Please log in to refactor the code! Login