Looks to me like you're doing much more than testing the sign off process.

On Fri, 4 Jan 2008 15:50:57 +0000, Paul Cowan <[EMAIL PROTECTED]> wrote:

>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

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