-
-
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