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); }
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))); }
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)); }