Beispiel #1
0
        public void ShouldGetDoneDateForInProgressDateWithNoInProgressStateMaps()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "TO_DO", "DOING"),
                new JiraState(new DateTime(2020, 10, 8), "DOING", "VALIDATING"),
                new JiraState(new DateTime(2020, 10, 9), "VALIDATING", "DONE")
            };

            var partialWorkflowMap = new List <WorkflowMap>()
            {
                new WorkflowMap(new string[] { "TO_DO" }, "STUFF TO DO", StateType.ToDo, "TEST_TYPE", 1),
                new WorkflowMap(new string[] { "DONE" }, "FINISHED", StateType.Done, "TEST_TYPE", 4)
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE",
                Status     = "DONE"
            };

            var target = IssueTimeInStateMapper.GetInProgressDate(testIssue, partialWorkflowMap);

            Assert.AreEqual(new DateTime(2020, 10, 9), target);
        }
Beispiel #2
0
        public void ShouldHaveOnlyOneResultForEachState()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "", "TO_DO"),
                new JiraState(new DateTime(2020, 10, 7), "TO_DO", "DOING"),
                new JiraState(new DateTime(2020, 10, 8), "DOING", "VALIDATING"),
                new JiraState(new DateTime(2020, 10, 9), "VALIDATING", "DOING"),
                new JiraState(new DateTime(2020, 10, 10), "DOING", "VALIDATING"),
                new JiraState(new DateTime(2020, 10, 11), "VALIDATING", "DONE"),
                new JiraState(new DateTime(2020, 10, 11), "DONE", "TO_DO"),
                new JiraState(new DateTime(2020, 10, 11), "TO_DO", "DONE")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE"
            };

            var target = IssueTimeInStateMapper.GetTimeInStates(testIssue, _mockWorkflowMap);

            Assert.AreEqual(_mockWorkflowMap.Count, target.Count);

            _mockWorkflowMap.ForEach(map =>
            {
                Assert.AreEqual(1, target.Where(state => state.StateName.Equals(map.MappedState)).Count());
            });
        }
Beispiel #3
0
        public void ShouldFindEarliestInProgressStateAfterLastToDoState()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "TO_DO", "DOING"),
                new JiraState(new DateTime(2020, 10, 8), "DOING", "VALIDATING"),
                new JiraState(new DateTime(2020, 10, 9), "VALIDATING", "TO_DO"),
                new JiraState(new DateTime(2020, 10, 10), "TO_DO", "DOING"),
                new JiraState(new DateTime(2020, 10, 11), "DOING", "VALIDATING"),
                new JiraState(new DateTime(2020, 10, 12), "VALIDATING", "DONE")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE"
            };

            var target = IssueTimeInStateMapper.GetTimeInStates(testIssue, _mockWorkflowMap);

            Assert.IsTrue(target.Any(state => state.StateName.Equals("DOING STUFF") && state.Date.Equals(new DateTime(2020, 10, 10))));
            Assert.IsFalse(target.Any(state => state.StateName.Equals("DOING STUFF") && state.Date.Equals(new DateTime(2020, 10, 7))));
            Assert.IsTrue(target.Any(state => state.StateName.Equals("TESTING STUFF") && state.Date.Equals(new DateTime(2020, 10, 11))));
            Assert.IsFalse(target.Any(state => state.StateName.Equals("TESTING STUFF") && state.Date.Equals(new DateTime(2020, 10, 8))));
        }
Beispiel #4
0
        public void ShouldNotGetCycleTimeForIssueNotStarted()
        {
            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION");

            var target = IssueTimeInStateMapper.GetCycleTime(testIssue);

            Assert.IsNull(target);
        }
Beispiel #5
0
        public void ShouldNotGetCycleTimeForIssueStartedButNotDone()
        {
            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                InProgressDate = DateTime.Today
            };

            var target = IssueTimeInStateMapper.GetCycleTime(testIssue);

            Assert.IsNull(target);
        }
Beispiel #6
0
        public void ShouldGeteCycleTimeForDoneIssue()
        {
            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                InProgressDate = DateTime.Today,
                DoneDate       = DateTime.Today.AddDays(3)
            };

            var target = IssueTimeInStateMapper.GetCycleTime(testIssue);

            Assert.AreEqual(4, target);
        }
Beispiel #7
0
        public void ShouldNotSetTimeInStateForDoneStates()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "DOING", "DONE")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE"
            };

            var target = IssueTimeInStateMapper.GetTimeInStates(testIssue, _mockWorkflowMap);

            Assert.AreEqual(0, target.Where(state => state.StateName.Equals("FINISHED")).Select(state => state.DaysInState).First());
        }
Beispiel #8
0
        public void ShouldNotGetValidInProgressDateWhenNotStarted()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "", "TO_DO")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE",
                Status     = "TO_DO"
            };

            var target = IssueTimeInStateMapper.GetInProgressDate(testIssue, _mockWorkflowMap);

            Assert.AreEqual(DateTime.MinValue, target);
        }
Beispiel #9
0
        public void ShouldNotGetDoneDateWhenMovedBackFromDone()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "DOING", "DONE"),
                new JiraState(new DateTime(2020, 10, 8), "DONE", "DOING")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE",
                Status     = "DOING"
            };

            var target = IssueTimeInStateMapper.GetDoneDate(testIssue, _mockWorkflowMap);

            Assert.AreEqual(DateTime.MinValue, target);
        }
Beispiel #10
0
        public void ShouldGetDoneDateForInProgressDateWhenOnlyMovedToDone()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "", "TO_DO"),
                new JiraState(new DateTime(2020, 10, 8), "TO_DO", "DONE")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE",
                Status     = "DONE"
            };

            var target = IssueTimeInStateMapper.GetInProgressDate(testIssue, _mockWorkflowMap);

            Assert.AreEqual(new DateTime(2020, 10, 8), target);
        }
Beispiel #11
0
        public void ShouldSetDaysInStateWhenSkippingStates()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 1), "TO_DO", "DOING"),
                new JiraState(new DateTime(2020, 10, 10), "DOING", "DONE")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE"
            };

            var target = IssueTimeInStateMapper.GetTimeInStates(testIssue, _mockWorkflowMap, null);

            Assert.AreEqual(0, target.Where(state => state.StateName.Equals("STUFF TO DO")).Select(state => state.DaysInState).First());
            Assert.AreEqual(10, target.Where(state => state.StateName.Equals("DOING STUFF")).Select(state => state.DaysInState).First());
            Assert.AreEqual(0, target.Where(state => state.StateName.Equals("TESTING STUFF")).Select(state => state.DaysInState).First());
        }
Beispiel #12
0
        public void ShouldFindLastDoneState()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "DOING", "DONE"),
                new JiraState(new DateTime(2020, 10, 8), "DONE", "TO_DO"),
                new JiraState(new DateTime(2020, 10, 9), "TO_DO", "DOING"),
                new JiraState(new DateTime(2020, 10, 10), "DOING", "DONE")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE"
            };

            var target = IssueTimeInStateMapper.GetTimeInStates(testIssue, _mockWorkflowMap);

            Assert.IsTrue(target.Any(state => state.StateName.Equals("FINISHED") && state.Date.Equals(new DateTime(2020, 10, 10))));
            Assert.IsFalse(target.Any(state => state.StateName.Equals("FINISHED") && state.Date.Equals(new DateTime(2020, 10, 7))));
        }
Beispiel #13
0
        public void ShouldGetEarliestInProgressStatusForInProgressDate()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "TO_DO", "DOING"),
                new JiraState(new DateTime(2020, 10, 8), "DOING", "VALIDATING"),
                new JiraState(new DateTime(2020, 10, 9), "VALIDATING", "DOING"),
                new JiraState(new DateTime(2020, 10, 10), "DOING", "VALIDATING"),
                new JiraState(new DateTime(2020, 10, 11), "VALIDATING", "DONE")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE",
                Status     = "DONE"
            };

            var target = IssueTimeInStateMapper.GetInProgressDate(testIssue, _mockWorkflowMap);

            Assert.AreEqual(new DateTime(2020, 10, 7), target);
        }
Beispiel #14
0
        public void ShouldSetDaysInStateWithoutWeekends()
        {
            var jiraStates = new List <JiraState>()
            {
                new JiraState(new DateTime(2020, 10, 7), "", "TO_DO"),
                new JiraState(new DateTime(2020, 10, 8), "TO_DO", "DOING"),
                new JiraState(new DateTime(2020, 10, 10), "DOING", "VALIDATING"),
                new JiraState(new DateTime(2020, 10, 13), "VALIDATING", "DONE")
            };

            var testIssue = new JiraIssue("TEST_KEY", "DESCRIPTION")
            {
                JiraStates = jiraStates,
                Type       = "TEST_TYPE"
            };

            var target = IssueTimeInStateMapper.GetTimeInStates(testIssue, _mockWorkflowMap, new List <DayOfWeek> {
                DayOfWeek.Saturday, DayOfWeek.Sunday
            });

            Assert.AreEqual(2, target.Where(state => state.StateName.Equals("STUFF TO DO")).Select(state => state.DaysInState).First());
            Assert.AreEqual(2, target.Where(state => state.StateName.Equals("DOING STUFF")).Select(state => state.DaysInState).First());
            Assert.AreEqual(2, target.Where(state => state.StateName.Equals("TESTING STUFF")).Select(state => state.DaysInState).First());
        }