コード例 #1
0
ファイル: DealServiceTest.cs プロジェクト: dmozhnov/EmpireERP
        public void DealServiceTest_ChangeContractAndOldContractIsUsedByAnyDeal_OldContractStaysUndeleted()
        {
            //Arrange
            var client = new Mock <Client>();

            client.Setup(x => x.Organizations).Returns(new List <ContractorOrganization> {
                clientOrganization
            });

            var oldContract = new ClientContract(accountOrganization, clientOrganization, "Старый договор", "1", DateTime.Now, DateTime.Now);
            var newContract = new ClientContract(accountOrganization, clientOrganization, "Новый договор", "2", DateTime.Now, DateTime.Now);

            var deal = new Deal_Accessor("Сделка1", It.IsAny <User>())
            {
                Client = client.Object, Contract = oldContract
            };

            clientContractRepository.Setup(x => x.IsUsedBySingleDeal(It.IsAny <ClientContract>(), It.IsAny <Deal>())).Returns(false);

            //Act
            dealService.SetContract((Deal)deal.Target, newContract, user.Object);

            //Assert
            clientContractRepository.Verify(x => x.Delete(It.IsAny <ClientContract>()), Times.Never());
        }
コード例 #2
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_TryToSetContractWithClientOrganizationThatIsNotLinkedToClient_ThrowsException()
        {
            try
            {
                var client = new Mock <Client>();
                client.Setup(x => x.Organizations).Returns(new List <ContractorOrganization> {
                    clientOrganization
                });

                var deal = new Deal_Accessor("Тестовая сделка", user)
                {
                    Client = client.Object
                };

                var newClientOrganization = new Mock <ClientOrganization>();

                var newContract = new Mock <ClientContract>();
                newContract.Setup(x => x.ContractorOrganization).Returns(newClientOrganization.Object);

                deal.Contract = newContract.Object;

                Assert.Fail("Исключение не вызвано.");
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Выбранная организация клиента больше не принадлежит данному клиенту. Возможно, она была удалена.", ex.Message);
            }
        }
コード例 #3
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_SetContractToNull_Ok()
        {
            var deal = new Deal_Accessor();

            deal.Contract = null;

            Assert.IsNull(deal.Contract);
        }
コード例 #4
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_PreviousStage_Must_Work_From_Stage0()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            deal.PerformStageChanging(DealStage.DecisionMakerSearch);
            Assert.AreEqual(DealStage.DecisionMakerSearch, deal.Stage);

            deal.CheckPossibilityToMoveToPreviousStage();
            deal.MoveToPreviousStage(); // Из-за отсутствия порядкового номера этапа время будет одинаковым, и метод перехода сработает неверно.
            // Из пройденных этапов будет выбран не последний, а неопределенный.
        }
コード例 #5
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_ChangeContractToNull_Ok()
        {
            var clientContract = new Mock <ClientContract>();
            var deal           = new Deal_Accessor()
            {
                contract = clientContract.Object
            };

            deal.Contract = null;

            Assert.IsNull(deal.Contract);
        }
コード例 #6
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_PreviousStage_Must_Work_From_Stage2()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            deal.stageHistory.Clear();
            deal.PerformStageChanging(DealStage.ClientInvestigation);
            deal.PerformStageChanging(DealStage.CommercialProposalPreparation);

            deal.CheckPossibilityToMoveToPreviousStage();
            deal.MoveToPreviousStage(); // Из-за отсутствия порядкового номера этапа время будет одинаковым, и метод перехода сработает неверно.
            // Из пройденных этапов будет выбран не последний, а неопределенный.
        }
コード例 #7
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_NextStage_Must_Work_From_Stage6()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            deal.Stage = DealStage.ContractClosing;

            deal.CheckPossibilityToMoveToNextStage();
            deal.MoveToNextStage();

            Assert.AreEqual(DealStage.SuccessfullyClosed, deal.Stage);
            Assert.IsFalse(deal.IsActive);
            Assert.IsTrue(deal.IsClosed);
        }
コード例 #8
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_NextStage_Must_Work_From_Stage2()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            deal.Stage = DealStage.CommercialProposalPreparation;

            deal.CheckPossibilityToMoveToNextStage();
            deal.MoveToNextStage();

            Assert.AreEqual(DealStage.Negotiations, deal.Stage);
            Assert.IsTrue(deal.IsActive);
            Assert.IsFalse(deal.IsClosed);
        }
コード例 #9
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_NextStage_Must_Work_From_Stage4_With_Contract()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            deal.Stage = DealStage.ContractSigning;

            deal.Contract = contract;
            Assert.IsNotNull(deal.Contract);

            deal.CheckPossibilityToMoveToNextStage();
            deal.MoveToNextStage();

            Assert.AreEqual(DealStage.ContractExecution, deal.Stage);
            Assert.IsTrue(deal.IsActive);
            Assert.IsFalse(deal.IsClosed);
        }
コード例 #10
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_NextStage_Must_Work_From_Stage1()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            Assert.AreEqual(DealStage.ClientInvestigation, deal.Stage);
            Assert.AreEqual(1, deal.StageHistory.Count());
            Assert.IsTrue(deal.IsActive);
            Assert.IsFalse(deal.IsClosed);

            deal.CheckPossibilityToMoveToNextStage();
            deal.MoveToNextStage();

            Assert.AreEqual(DealStage.CommercialProposalPreparation, deal.Stage);
            Assert.AreEqual(2, deal.StageHistory.Count());
            Assert.IsTrue(deal.IsActive);
            Assert.IsFalse(deal.IsClosed);
        }
コード例 #11
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_PreviousStage_Must_Not_Work_From_Stage1()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            deal.Stage = DealStage.ClientInvestigation;
            Assert.IsTrue(deal.IsActive);
            Assert.IsFalse(deal.IsClosed);

            try
            {
                deal.CheckPossibilityToMoveToPreviousStage();
                Assert.Fail("Исключение не вызвано.");
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Этап сделки «Исследование клиента» не имеет предыдущего этапа.", ex.Message);
            }
        }
コード例 #12
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_NextStage_Must_Not_Work_From_Stage0()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            deal.Stage = DealStage.DecisionMakerSearch;
            Assert.IsTrue(deal.IsActive);
            Assert.IsFalse(deal.IsClosed);

            try
            {
                deal.CheckPossibilityToMoveToNextStage();
                Assert.Fail("Исключение не вызвано.");
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Этап сделки «Поиск принимающего решения» не имеет следующего этапа.", ex.Message);
            }
        }
コード例 #13
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_NextStage_Must_Not_Work_From_Stage7_3()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            deal.PerformStageChanging(DealStage.DealRejection);
            Assert.IsFalse(deal.IsActive);
            Assert.IsTrue(deal.IsClosed);

            try
            {
                deal.CheckPossibilityToMoveToNextStage();
                Assert.Fail("Исключение не вызвано.");
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Этап сделки «Отказ» не имеет следующего этапа.", ex.Message);
            }
        }
コード例 #14
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_Payment_NextStage_Must_Not_Work_From_Stage4_Without_Contract()
        {
            var deal = new Deal_Accessor("Тестовая сделка", user);

            deal.Stage = DealStage.ContractSigning;
            Assert.IsTrue(deal.IsActive);
            Assert.IsFalse(deal.IsClosed);
            Assert.IsNull(deal.Contract);

            try
            {
                deal.CheckPossibilityToMoveToNextStage();
                Assert.Fail("Исключение не вызвано.");
            }
            catch (Exception ex)
            {
                Assert.AreEqual("Невозможно перевести сделку на этап «Исполнение договора», так как по ней отсутствует договор.", ex.Message);
            }
        }
コード例 #15
0
ファイル: DealTest.cs プロジェクト: dmozhnov/EmpireERP
        public void Deal_SetContract_Ok()
        {
            var client = new Mock <Client>();

            client.Setup(x => x.Organizations).Returns(new List <ContractorOrganization> {
                clientOrganization
            });

            var deal = new Deal_Accessor("Тестовая сделка", user)
            {
                Client = client.Object
            };

            var newContract = new Mock <ClientContract>();

            newContract.Setup(x => x.ContractorOrganization).Returns(clientOrganization);

            deal.Contract = newContract.Object;

            Assert.AreEqual(newContract.Object, deal.Contract);
        }
コード例 #16
0
ファイル: DealServiceTest.cs プロジェクト: dmozhnov/EmpireERP
        public void DealServiceTest_SetContract_Ok()
        {
            //Arrange
            var client = new Mock <Client>();

            client.Setup(x => x.Organizations).Returns(new List <ContractorOrganization> {
                clientOrganization
            });

            var deal = new Deal_Accessor("Сделка1", It.IsAny <User>())
            {
                Client = client.Object
            };
            var contract = new ClientContract(accountOrganization, clientOrganization, "Тестовый договор", "1", DateTime.Now, DateTime.Now);

            //Act
            dealService.SetContract((Deal)deal.Target, contract, user.Object);

            //Assert
            Assert.AreEqual(contract, deal.Contract);
        }