Hi all,
 
I am just looking for some guidance.
 
I have the following monstrous unit test (see below) where I seem to be testing 
bout 10 different tests in the same unit test.
 
The problem is that it is a work flow type of situation and I need the data to 
be in a certain state before I finally test the bit of functionality 
(planController.AttemptSignOff;.
 
If I split it up into different tests then I am retesting everything each time 
and duplicating code.  This is even the case if I start using helper methods.
 
The guidelines say that unit tests should only test one thing and one thing 
only.
 
I simply cannot see how I can break this up.  
 
Any words of advice from the more knowledgeable out there?
 
[Test]
public void Sign_off_Process()
{
    Plan plan = null;
    PlanController planController = GetPlanController();
    _mockRepository.ReplayAll();
    try
    {
        plan = SavePlanAsSystemAdmin(planController);
        Guid planUid = plan.Uid;
        planController.AddSignOffContact(plan, GetFirstItem<Contact>());
        _mockRepository.BackToRecord(_mockEmailSender);
        _mockEmailSender.Send(null, null, null, null, null);
        LastCall.IgnoreArguments();
        _mockRepository.ReplayAll();
        planController.RequestSignOff(plan, "testurl");
        _mockRepository.VerifyAll();
        plan = planController.LoadPlan(planUid);
        SignOffContact signOffContact = plan.SignOffList[0];
        Assert.IsTrue(plan.ReadOnly);
        Assert.AreEqual(plan.MajorVersion, signOffContact.VerMajor);
        Assert.AreEqual(plan.MinorVersion, signOffContact.VerMinor);
        Assert.AreEqual(false, plan.SignOffOperators[0].SetUp);
        Assert.AreEqual(1, signOffContact.Requested);
        Guid signOffOperatorUid = plan.SignOffOperators[0].Uid;
        SignOffOperator signOffOperator = 
planController.GetSignOffOperator(signOffOperatorUid);
        Assert.AreEqual(1, signOffOperator.Plans.Count);
        plan = signOffOperator.Plans[0];
        Assert.IsNotNull(plan);
        Assert.IsFalse(signOffOperator.SetUp);
        string validLogIn = "1234";
        string invalidLogIn = "12345";
        signOffOperator.Pin = "ABCD";
        Assert.IsFalse(planController.IsValid(signOffOperator));
        signOffOperator.Pin = validLogIn;
        Assert.IsTrue(planController.IsValid(signOffOperator));
        planController.SetUpSignOffOperator(signOffOperator);
        signOffOperator = planController.GetSignOffOperator(signOffOperatorUid);
        Assert.IsTrue(signOffOperator.SetUp);
        
Assert.IsFalse(planController.LogInSignOffOperatorWithPin(signOffOperatorUid, 
invalidLogIn));
        
Assert.IsTrue(planController.LogInSignOffOperatorWithPin(signOffOperator, 
validLogIn));
        Assert.AreEqual(1, 
planController.SignOffOperatorsPlanList(signOffOperatorUid).Count);
        _mockRepository.BackToRecord(_mockEmailSender);
        _mockEmailSender.Send(null, null, null, null, null);
        LastCall.IgnoreArguments();
        _mockRepository.ReplayAll();
        planController.AttemptSignOff(signOffOperatorUid);
        _mockRepository.VerifyAll();
    }
    catch (Exception ex)
    {
        _log.Error(ex);
        Assert.Fail(ex.Message);
    }
    finally
    {
        if ((plan != null) && (!plan.IsNew))
            planController.DeletePlan(plan.Uid);
    }
}
 [EMAIL PROTECTED]
_________________________________________________________________
Who's friends with who and co-starred in what?
http://www.searchgamesbox.com/celebrityseparation.shtml
===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to