예제 #1
0
        public void AmountAtDay_OverrideBeforeInOneDayTest()
        {
            var operation1 = Substitute.For <EmployeeIssueOperation>();

            operation1.Id.Returns(1);
            operation1.OperationTime.Returns(new DateTime(2017, 11, 28));
            operation1.StartOfUse.Returns(new DateTime(2017, 11, 28));
            operation1.ExpiryByNorm.Returns(new DateTime(2020, 11, 28));
            operation1.AutoWriteoffDate.Returns(new DateTime(2020, 11, 28));
            operation1.Issued.Returns(1);

            var operation3 = Substitute.For <EmployeeIssueOperation>();

            operation3.Id.Returns(3);
            operation3.OperationTime.Returns(new DateTime(2019, 12, 16, 0, 0, 0));
            operation3.StartOfUse.Returns(new DateTime(2019, 12, 16));
            operation3.ExpiryByNorm.Returns(new DateTime(2021, 12, 16));
            operation3.AutoWriteoffDate.Returns(new DateTime(2021, 12, 16));
            operation3.Issued.Returns(1);

            var operationOverride = Substitute.For <EmployeeIssueOperation>();

            operationOverride.Id.Returns(4);
            operationOverride.OperationTime.Returns(new DateTime(2019, 12, 16, 17, 21, 0));
            operationOverride.StartOfUse.Returns(new DateTime(2019, 12, 16));
            operationOverride.ExpiryByNorm.Returns(new DateTime(2021, 1, 10));
            operationOverride.AutoWriteoffDate.Returns(new DateTime(2021, 1, 10));
            operationOverride.OverrideBefore.Returns(true);
            operationOverride.Issued.Returns(5);

            var list = new List <EmployeeIssueOperation>()
            {
                operation1, operation3, operationOverride
            };
            var graph = new IssueGraph(list);

            //Проверяем корректное начисление количества
            Assert.That(graph.UsedAmountAtEndOfDay(new DateTime(2019, 12, 15)), Is.EqualTo(1));
            Assert.That(graph.AmountAtEndOfDay(new DateTime(2019, 12, 16)), Is.EqualTo(5));
            Assert.That(graph.UsedAmountAtEndOfDay(new DateTime(2020, 1, 15)), Is.EqualTo(5));
            Assert.That(graph.UsedAmountAtEndOfDay(new DateTime(2021, 1, 15)), Is.EqualTo(0));
            //Проверяем что не создали пустых интервалов.
            var last = graph.OrderedIntervals.Last();

            Assert.That(last.StartDate, Is.EqualTo(new DateTime(2021, 1, 10)));
            //Проверяем что имеется отметка что данный интервал сбрасывает предыдущую историю.
            var beforeLast = graph.OrderedIntervalsReverse.Skip(1).First();

            Assert.That(beforeLast.Reset, Is.True);
        }
예제 #2
0
        public void AmountAtDay_OverrideBeforeTest()
        {
            var operation1 = Substitute.For <EmployeeIssueOperation>();

            operation1.Id.Returns(1);
            operation1.OperationTime.Returns(new DateTime(2017, 11, 28));
            operation1.StartOfUse.Returns(new DateTime(2017, 11, 28));
            operation1.ExpiryByNorm.Returns(new DateTime(2020, 11, 28));
            operation1.AutoWriteoffDate.Returns(new DateTime(2020, 11, 28));
            operation1.Issued.Returns(1);

            var operation3 = Substitute.For <EmployeeIssueOperation>();

            operation3.Id.Returns(3);
            operation3.OperationTime.Returns(new DateTime(2018, 12, 16, 17, 51, 0));
            operation3.StartOfUse.Returns(new DateTime(2018, 12, 16));
            operation3.ExpiryByNorm.Returns(new DateTime(2021, 12, 16));
            operation3.AutoWriteoffDate.Returns(new DateTime(2021, 12, 16));
            operation3.Issued.Returns(1);

            var operationOverride = Substitute.For <EmployeeIssueOperation>();

            operationOverride.Id.Returns(4);
            operationOverride.OperationTime.Returns(new DateTime(2019, 12, 16, 17, 21, 0));
            operationOverride.StartOfUse.Returns(new DateTime(2019, 12, 16));
            operationOverride.ExpiryByNorm.Returns(new DateTime(2021, 1, 10));
            operationOverride.AutoWriteoffDate.Returns(new DateTime(2021, 1, 10));
            operationOverride.OverrideBefore.Returns(true);
            operationOverride.Issued.Returns(5);

            var list = new List <EmployeeIssueOperation>()
            {
                operation1, operation3, operationOverride
            };
            var graph = new IssueGraph(list);

            //Проверяем корректное начисление количества
            Assert.That(graph.UsedAmountAtEndOfDay(new DateTime(2019, 12, 15)), Is.EqualTo(2));
            Assert.That(graph.AmountAtEndOfDay(new DateTime(2019, 12, 16)), Is.EqualTo(5));
            Assert.That(graph.UsedAmountAtEndOfDay(new DateTime(2020, 1, 15)), Is.EqualTo(5));
            Assert.That(graph.UsedAmountAtEndOfDay(new DateTime(2021, 1, 15)), Is.EqualTo(0));
            //Проверяем что не создали пустых интервалов.
            var last = graph.OrderedIntervals.Last();

            Assert.That(last.StartDate, Is.EqualTo(new DateTime(2021, 1, 10)));
        }
예제 #3
0
        public void UsedAmountAtEndOfDay_IgnoreTimeTest()
        {
            var operation1 = Substitute.For <EmployeeIssueOperation>();

            operation1.OperationTime.Returns(new DateTime(2018, 1, 1, 9, 0, 0));
            operation1.StartOfUse.Returns(new DateTime(2018, 1, 1, 14, 0, 0));
            operation1.AutoWriteoffDate.Returns(new DateTime(2018, 2, 1));
            operation1.Issued.Returns(2);

            var list = new List <EmployeeIssueOperation>()
            {
                operation1
            };
            var graph = new IssueGraph(list);

            Assert.That(graph.UsedAmountAtEndOfDay(new DateTime(2018, 1, 1)), Is.EqualTo(2));
        }