public void UpdateNextIssue_WihtoutWriteoffAndWithoutExpiryByNormCase()
        {
            var operation1 = Substitute.For <EmployeeIssueOperation>();

            operation1.OperationTime.Returns(new DateTime(2018, 1, 1));
            operation1.ExpiryByNorm.Returns(x => null);
            operation1.Issued.Returns(10);

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

            var uow      = Substitute.For <IUnitOfWork>();
            var employee = Substitute.For <EmployeeCard>();

            employee.Id.Returns(777);             //Необходимо чтобы было более 0, для запроса имеющихся операций.

            var norm = Substitute.For <NormItem>();

            norm.Amount.Returns(10);

            var item = new EmployeeCardItemTested();

            item.EmployeeCard             = employee;
            item.GetIssueGraphForItemFunc = () => graph;
            item.ActiveNormItem           = norm;

            item.UpdateNextIssue(uow);
            Assert.That(item.NextIssue, Is.Null);
        }
        public void UpdateNextIssue_NotBreakNextIssueDateAfterRecreateItem()
        {
            var operation1 = Substitute.For <EmployeeIssueOperation>();

            operation1.OperationTime.Returns(new DateTime(2017, 1, 1));
            operation1.AutoWriteoffDate.Returns(new DateTime(2017, 10, 1));
            operation1.Issued.Returns(10);

            var uow  = Substitute.For <IUnitOfWork>();
            var list = new List <EmployeeIssueOperation> {
                operation1
            };
            var graph    = new IssueGraph(list);
            var employee = Substitute.For <EmployeeCard>();

            employee.Id.Returns(777);             //Необходимо чтобы было более 0, для запроса имеющихся операций.

            var norm = Substitute.For <NormItem>();

            norm.Amount.Returns(10);

            var item = new EmployeeCardItemTested();

            item.EmployeeCard             = employee;
            item.GetIssueGraphForItemFunc = () => graph;
            item.Created        = new DateTime(2018, 1, 15);
            item.ActiveNormItem = norm;

            item.UpdateNextIssue(uow);
            Assert.That(item.NextIssue, Is.EqualTo(new DateTime(2017, 10, 1)));
        }
        public void UpdateNextIssue_WithoutIssuesNextDateEqualCreateItemDate()
        {
            var uow      = Substitute.For <IUnitOfWork>();
            var graph    = Substitute.For <IssueGraph>();
            var employee = Substitute.For <EmployeeCard>();
            var normItem = Substitute.For <NormItem>();

            var item = new EmployeeCardItemTested();

            item.EmployeeCard             = employee;
            item.GetIssueGraphForItemFunc = () => graph;
            item.Created        = new DateTime(2018, 1, 15);
            item.ActiveNormItem = normItem;

            item.UpdateNextIssue(uow);
            Assert.That(item.NextIssue, Is.EqualTo(new DateTime(2018, 1, 15)));
        }
        public void UpdateNextIssue_MoveDateToLeaveEndCase()
        {
            var operation1 = Substitute.For <EmployeeIssueOperation>();

            operation1.OperationTime.Returns(new DateTime(2018, 1, 1));
            operation1.AutoWriteoffDate.Returns(new DateTime(2018, 2, 1));
            operation1.Issued.Returns(10);

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

            var uow      = Substitute.For <IUnitOfWork>();
            var employee = Substitute.For <EmployeeCard>();

            employee.Id.Returns(777);             //Необходимо чтобы было более 0, для запроса имеющихся операций.
            var vacation = Substitute.For <EmployeeVacation>();

            vacation.Employee.Returns(employee);
            vacation.BeginDate.Returns(new DateTime(2018, 1, 15));
            vacation.EndDate.Returns(new DateTime(2018, 2, 15));
            employee.Vacations.Returns(new List <EmployeeVacation> {
                vacation
            });

            var norm = Substitute.For <NormItem>();

            norm.Amount.Returns(10);

            var item = new EmployeeCardItemTested();

            item.EmployeeCard             = employee;
            item.GetIssueGraphForItemFunc = () => graph;
            item.ActiveNormItem           = norm;

            item.UpdateNextIssue(uow);
            Assert.That(item.NextIssue, Is.EqualTo(new DateTime(2018, 2, 16)));
        }