public void ProjectTotalDetailEstimate()
        {
            var storyA  = EntityFactory.CreateStory("Story A", SandboxProject);
            var defectB = EntityFactory.CreateDefect("Defect B", SandboxProject);

            var task1 = storyA.CreateTask("Task 1");

            task1.DetailEstimate   = 5;
            defectB.DetailEstimate = 10;

            task1.Save();
            defectB.Save();

            var rogue = SandboxProject.CreateDefect("Rogue");

            rogue.DetailEstimate = 13.37;
            rogue.Save();
            rogue.Delete();

            Assert.AreEqual(15, SandboxProject.GetTotalDetailEstimate(null));
            Assert.AreEqual(15, SandboxProject.GetTotalDetailEstimate(new WorkitemFilter()));
            Assert.AreEqual(10, SandboxProject.GetTotalDetailEstimate(new PrimaryWorkitemFilter()));
            Assert.AreEqual(null, SandboxProject.GetTotalDetailEstimate(new StoryFilter()));
            Assert.AreEqual(10, SandboxProject.GetTotalDetailEstimate(new DefectFilter()));
            Assert.AreEqual(5, SandboxProject.GetTotalDetailEstimate(new SecondaryWorkitemFilter()));
            Assert.AreEqual(5, SandboxProject.GetTotalDetailEstimate(new TaskFilter()));
            Assert.AreEqual(null, SandboxProject.GetTotalDetailEstimate(new TestFilter()));
        }
        public void ProjectTotalDetailEstimateAndDown()
        {
            var childProject = EntityFactory.CreateSubProject("Son of " + SandboxName, DateTime.Now, null, SandboxProject);
            var storyA       = EntityFactory.CreateStory("Story A", SandboxProject);
            var defectB      = EntityFactory.CreateDefect("Defect B", SandboxProject);

            var storyC  = EntityFactory.CreateStory("Story C", childProject);
            var defectD = EntityFactory.CreateDefect("Defect D", childProject);

            var task1 = storyA.CreateTask("Task 1");

            task1.DetailEstimate   = 5;
            defectB.DetailEstimate = 10;

            var test1 = storyC.CreateTest("Test 1");

            test1.DetailEstimate   = 2;
            defectD.DetailEstimate = 3;

            task1.Save();
            defectB.Save();
            test1.Save();
            defectD.Save();

            var rogue = SandboxProject.CreateDefect("Rogue");

            rogue.DetailEstimate = 13.37;
            rogue.Save();
            rogue.Delete();

            Assert.AreEqual(20, SandboxProject.GetTotalDetailEstimate(null, true));
            Assert.AreEqual(20, SandboxProject.GetTotalDetailEstimate(new WorkitemFilter(), true));
            Assert.AreEqual(13, SandboxProject.GetTotalDetailEstimate(new PrimaryWorkitemFilter(), true));
            Assert.AreEqual(null, SandboxProject.GetTotalDetailEstimate(new StoryFilter(), true));
            Assert.AreEqual(13, SandboxProject.GetTotalDetailEstimate(new DefectFilter(), true));
            Assert.AreEqual(7, SandboxProject.GetTotalDetailEstimate(new SecondaryWorkitemFilter(), true));
            Assert.AreEqual(5, SandboxProject.GetTotalDetailEstimate(new TaskFilter(), true));
            Assert.AreEqual(2, SandboxProject.GetTotalDetailEstimate(new TestFilter(), true));
        }