public void CreateFuelExpenseOperationTest() { // arrange expenseCategoryMock = Substitute.For <ExpenseCategory>(); CategoryRepository.FuelDocumentExpenseCategoryTestGap = (arg) => expenseCategoryMock; FuelType fuelTypeMock = Substitute.For <FuelType>(); fuelTypeMock.Cost.Returns(30); Car carMock = Substitute.For <Car>(); carMock.IsCompanyCar.Returns(false); Organization organisationMock = Substitute.For <Organization>(); IUnitOfWork uowMock = Substitute.For <IUnitOfWork>(); VodovozRouteList routeListMock = Substitute.For <VodovozRouteList>(); Subdivision subdivisionMock = Substitute.For <Subdivision>(); routeListMock.ClosingSubdivision = subdivisionMock; IFuelRepository fuelRepositoryMock = Substitute.For <IFuelRepository>(); fuelRepositoryMock.GetFuelBalanceForSubdivision(uowMock, subdivisionMock, fuelTypeMock).Returns(50); OrganizationParametersProvider organisationParametersProviderMock = Substitute.For <OrganizationParametersProvider>(); CashDistributionCommonOrganisationProvider commonOrganisationProviderMock = Substitute.For <CashDistributionCommonOrganisationProvider>(organisationParametersProviderMock); commonOrganisationProviderMock.GetCommonOrganisation(uowMock).Returns(organisationMock); var fuelDocument = new FuelDocument(); fuelDocument.Driver = Substitute.For <Employee>(); fuelDocument.Car = carMock; fuelDocument.Date = DateTime.Now; fuelDocument.LastEditDate = DateTime.Now; fuelDocument.Fuel = fuelTypeMock; fuelDocument.RouteList = routeListMock; fuelDocument.UoW = uowMock; fuelDocument.FuelCoupons = 40; fuelDocument.PayedForFuel = null; fuelDocument.Subdivision = subdivisionMock; // act fuelDocument.CreateOperations(fuelRepositoryMock, commonOrganisationProviderMock); // assert AssertsAccumulator.Create .Accumulate(() => Assert.That(fuelDocument.FuelExpenseOperation.FuelDocument, Is.SameAs(fuelDocument), "Документ в операции должен совпадать с документом выдачи топлива")) .Accumulate(() => Assert.That(fuelDocument.FuelExpenseOperation.FuelTransferDocument, Is.Null, "Документ перемещения топлива не должен быть заполнен")) .Accumulate(() => Assert.That(fuelDocument.FuelExpenseOperation.RelatedToSubdivision, Is.SameAs(fuelDocument.RouteList.ClosingSubdivision), "Подразделение в операции должно совпадать с подразделением в маршрутном листе")) .Accumulate(() => Assert.That(fuelDocument.FuelExpenseOperation.FuelLiters, Is.EqualTo(fuelDocument.FuelCoupons), "Списанное топливо должно совпадать с топливом выданным талонами в документе выдачи")) .Release(); }
public void CreateFuelCashExpenseTest__Without_ExpenseCategory__Thrown_InvalidProgrammException_and_FuelCashExpense_must_be_null() { // arrange // имитация того что нужной статьи не было найдено CategoryRepository.FuelDocumentExpenseCategoryTestGap = (arg) => { return(null); }; var fuelDocument = new FuelDocument(); FuelType fuelTypeMock = Substitute.For <FuelType>(); IUnitOfWork uowMock = Substitute.For <IUnitOfWork>(); Subdivision subdivisionMock = Substitute.For <Subdivision>(); Organization organisationMock = Substitute.For <Organization>(); IFuelRepository fuelRepositoryMock = Substitute.For <IFuelRepository>(); OrganizationParametersProvider organisationParametersProviderMock = Substitute.For <OrganizationParametersProvider>(); CashDistributionCommonOrganisationProvider commonOrganisationProviderMock = Substitute.For <CashDistributionCommonOrganisationProvider>(organisationParametersProviderMock); commonOrganisationProviderMock.GetCommonOrganisation(uowMock).Returns(organisationMock); // act, assert Assert.Throws(typeof(InvalidProgramException), () => fuelDocument.CreateOperations(fuelRepositoryMock, commonOrganisationProviderMock)); // additional assert Assert.That(fuelDocument.FuelCashExpense, Is.Null, "При исключении в момент создания операций, операции оплаты топлива не должно быть создано"); }
public void DistributeCash(IUnitOfWork uow, FuelDocument fuelDoc) { var org = cashDistributionCommonOrganisationProvider.GetCommonOrganisation(uow); var operation = new OrganisationCashMovementOperation { Organisation = org, OperationTime = DateTime.Now, Amount = -fuelDoc.PayedForFuel.Value }; var fuelCashDistributionDoc = new FuelExpenseCashDistributionDocument { Author = fuelDoc.Author, CreationDate = DateTime.Now, Organisation = org, FuelDocument = fuelDoc, Employee = fuelDoc.Driver, LastEditor = fuelDoc.LastEditor, LastEditedTime = DateTime.Now, Expense = fuelDoc.FuelCashExpense, OrganisationCashMovementOperation = operation, Amount = operation.Amount }; Save(operation, fuelCashDistributionDoc, uow); }
public void CreateFuelCashExpenseTest() { // arrange var categoryRepositoryMock = Substitute.For <ICategoryRepository>(); expenseCategoryMock = Substitute.For <ExpenseCategory>(); categoryRepositoryMock.FuelDocumentExpenseCategory(null).Returns(expenseCategoryMock); FuelType fuelTypeMock = Substitute.For <FuelType>(); fuelTypeMock.Cost.Returns(30); Car carMock = Substitute.For <Car>(); carMock.IsCompanyCar.Returns(false); Organization organisationMock = Substitute.For <Organization>(); VodovozRouteList routeListMock = Substitute.For <VodovozRouteList>(); Subdivision subdivisionMock = Substitute.For <Subdivision>(); IUnitOfWork uowMock = Substitute.For <IUnitOfWork>(); IFuelRepository fuelRepositoryMock = Substitute.For <IFuelRepository>(); fuelRepositoryMock.GetFuelBalanceForSubdivision(uowMock, subdivisionMock, fuelTypeMock).Returns(50); routeListMock.ClosingSubdivision = subdivisionMock; OrganizationParametersProvider organisationParametersProviderMock = Substitute.For <OrganizationParametersProvider>(_parametersProvider); CashDistributionCommonOrganisationProvider commonOrganisationProviderMock = Substitute.For <CashDistributionCommonOrganisationProvider>(organisationParametersProviderMock); commonOrganisationProviderMock.GetCommonOrganisation(uowMock).Returns(organisationMock); var fuelDocument = new FuelDocument(); fuelDocument.Driver = Substitute.For <Employee>(); fuelDocument.FuelPaymentType = FuelPaymentType.Cash; fuelDocument.Car = carMock; fuelDocument.Date = DateTime.Now; fuelDocument.LastEditDate = DateTime.Now; fuelDocument.Fuel = fuelTypeMock; fuelDocument.RouteList = routeListMock; fuelDocument.UoW = uowMock; fuelDocument.FuelCoupons = 40; fuelDocument.PayedForFuel = 500; fuelDocument.Subdivision = subdivisionMock; // act fuelDocument.CreateOperations(fuelRepositoryMock, commonOrganisationProviderMock, categoryRepositoryMock); // assert AssertsAccumulator.Create .Accumulate(() => Assert.That(fuelDocument.FuelCashExpense.Casher, Is.SameAs(fuelDocument.Author))) .Accumulate(() => Assert.That(fuelDocument.FuelCashExpense.Employee, Is.SameAs(fuelDocument.Driver))) .Accumulate(() => Assert.That(fuelDocument.FuelCashExpense.RelatedToSubdivision, Is.SameAs(fuelDocument.RouteList.ClosingSubdivision))) .Release(); }
public void CreateFuelCashExpenseTest_Money(decimal payedForFuel, decimal result) { // arrange var categoryRepositoryMock = Substitute.For <ICategoryRepository>(); expenseCategoryMock = Substitute.For <ExpenseCategory>(); categoryRepositoryMock.FuelDocumentExpenseCategory(null).Returns(expenseCategoryMock); FuelType fuelTypeMock = Substitute.For <FuelType>(); fuelTypeMock.Cost.Returns(30); Car carMock = Substitute.For <Car>(); carMock.IsCompanyCar.Returns(false); Organization organisationMock = Substitute.For <Organization>(); IUnitOfWork uowMock = Substitute.For <IUnitOfWork>(); VodovozRouteList routeListMock = Substitute.For <VodovozRouteList>(); Subdivision subdivisionMock = Substitute.For <Subdivision>(); routeListMock.ClosingSubdivision = subdivisionMock; IFuelRepository fuelRepositoryMock = Substitute.For <IFuelRepository>(); fuelRepositoryMock.GetFuelBalanceForSubdivision(uowMock, subdivisionMock, fuelTypeMock).Returns(50); var organisationParametersProviderMock = Substitute.For <OrganizationParametersProvider>(_parametersProvider); organisationParametersProviderMock.CommonCashDistributionOrganisationId.Returns(2); CashDistributionCommonOrganisationProvider commonOrganisationProviderMock = Substitute.For <CashDistributionCommonOrganisationProvider>(organisationParametersProviderMock); commonOrganisationProviderMock.GetCommonOrganisation(uowMock).Returns(organisationMock); var fuelDocument = new FuelDocument(); fuelDocument.Driver = Substitute.For <Employee>(); fuelDocument.Car = carMock; fuelDocument.FuelPaymentType = FuelPaymentType.Cash; fuelDocument.Date = DateTime.Now; fuelDocument.LastEditDate = DateTime.Now; fuelDocument.Fuel = fuelTypeMock; fuelDocument.RouteList = routeListMock; fuelDocument.UoW = uowMock; fuelDocument.FuelCoupons = 40; fuelDocument.PayedForFuel = payedForFuel; fuelDocument.Subdivision = subdivisionMock; // act fuelDocument.CreateOperations(fuelRepositoryMock, commonOrganisationProviderMock, categoryRepositoryMock); // assert Assert.That(fuelDocument.FuelCashExpense.Money, Is.EqualTo(result)); }
public void CreateFuelCashExpenseTest__Incorrect_FuelCoupons_and_PayedForFuel__Thrown_ValidationException_and_FuelCashExpense_must_be_null() { // arrange // arrange var categoryRepositoryMock = Substitute.For <ICategoryRepository>(); expenseCategoryMock = Substitute.For <ExpenseCategory>(); categoryRepositoryMock.FuelDocumentExpenseCategory(null).Returns(expenseCategoryMock); FuelType fuelTypeMock = Substitute.For <FuelType>(); fuelTypeMock.Cost.Returns(30); Car carMock = Substitute.For <Car>(); carMock.IsCompanyCar.Returns(true); Organization organisationMock = Substitute.For <Organization>(); IUnitOfWork uowMock = Substitute.For <IUnitOfWork>(); VodovozRouteList routeListMock = Substitute.For <VodovozRouteList>(); Subdivision subdivisionMock = Substitute.For <Subdivision>(); routeListMock.ClosingSubdivision = subdivisionMock; IFuelRepository fuelRepositoryMock = Substitute.For <IFuelRepository>(); fuelRepositoryMock.GetFuelBalanceForSubdivision(uowMock, subdivisionMock, fuelTypeMock).Returns(50); OrganizationParametersProvider organisationParametersProviderMock = Substitute.For <OrganizationParametersProvider>(_parametersProvider); CashDistributionCommonOrganisationProvider commonOrganisationProviderMock = Substitute.For <CashDistributionCommonOrganisationProvider>(organisationParametersProviderMock); commonOrganisationProviderMock.GetCommonOrganisation(uowMock).Returns(organisationMock); var fuelDocument = new FuelDocument(); fuelDocument.Driver = Substitute.For <Employee>(); fuelDocument.Car = carMock; fuelDocument.Date = DateTime.Now; fuelDocument.LastEditDate = DateTime.Now; fuelDocument.Fuel = fuelTypeMock; fuelDocument.RouteList = routeListMock; fuelDocument.UoW = uowMock; fuelDocument.PayedForFuel = 0; // act, assert Assert.Throws(typeof(ValidationException), () => fuelDocument.CreateOperations(fuelRepositoryMock, commonOrganisationProviderMock, categoryRepositoryMock)); // additional assert Assert.That(fuelDocument.FuelCashExpense, Is.Null, "При исключении в момент создания операций, операции оплаты топлива не должно быть создано"); }
public void CreateFuelCashExpenseTest__With_Zero_PayedFor_Fuel__FuelCashExpense_must_be_null() { // arrange var categoryRepositoryMock = Substitute.For <ICategoryRepository>(); expenseCategoryMock = Substitute.For <ExpenseCategory>(); categoryRepositoryMock.FuelDocumentExpenseCategory(null).Returns(expenseCategoryMock); FuelType fuelTypeMock = Substitute.For <FuelType>(); fuelTypeMock.Cost.Returns(30); CarVersion carVersionMock = Substitute.For <CarVersion>(); carVersionMock.IsCompanyCar.Returns(true); Organization organisationMock = Substitute.For <Organization>(); IUnitOfWork uowMock = Substitute.For <IUnitOfWork>(); VodovozRouteList routeListMock = Substitute.For <VodovozRouteList>(); Subdivision subdivisionMock = Substitute.For <Subdivision>(); routeListMock.ClosingSubdivision = subdivisionMock; IFuelRepository fuelRepositoryMock = Substitute.For <IFuelRepository>(); fuelRepositoryMock.GetFuelBalanceForSubdivision(uowMock, subdivisionMock, fuelTypeMock).Returns(50); OrganizationParametersProvider organisationParametersProviderMock = Substitute.For <OrganizationParametersProvider>(_parametersProvider); CashDistributionCommonOrganisationProvider commonOrganisationProviderMock = Substitute.For <CashDistributionCommonOrganisationProvider>(organisationParametersProviderMock); commonOrganisationProviderMock.GetCommonOrganisation(uowMock).Returns(organisationMock); var fuelDocument = new FuelDocument(); fuelDocument.Driver = Substitute.For <Employee>(); fuelDocument.Car = carVersionMock.Car; fuelDocument.Date = DateTime.Now; fuelDocument.LastEditDate = DateTime.Now; fuelDocument.Fuel = fuelTypeMock; fuelDocument.RouteList = routeListMock; fuelDocument.UoW = uowMock; fuelDocument.FuelCoupons = 40; fuelDocument.PayedForFuel = 0; fuelDocument.Subdivision = subdivisionMock; // act fuelDocument.CreateOperations(fuelRepositoryMock, commonOrganisationProviderMock, categoryRepositoryMock); // assert Assert.That(fuelDocument.FuelCashExpense, Is.Null); }
public void PayedLitersTest_Fuel_IsNull() { // arrange FuelDocument fuelDocument = new FuelDocument(); fuelDocument.Fuel = null; fuelDocument.PayedForFuel = 500; // act, assert Assert.IsTrue(fuelDocument.PayedLiters == 0); }
protected void OnButtonDeleteFuelDocumentClicked(object sender, EventArgs e) { FuelDocument fd = ytreeviewFuelDocuments.GetSelectedObject <FuelDocument>(); if (fd == null) { return; } Entity.ObservableFuelDocuments.Remove(fd); UoWGeneric.Delete(fd); HasChanges = true; UoWGeneric.Save(); }
public void PayedLitersTest_PayedForFuel_IsNull() { // arrange FuelType fuelTypeMock = Substitute.For <FuelType>(); fuelTypeMock.Cost.Returns(30); FuelDocument fuelDocument = new FuelDocument(); fuelDocument.Fuel = fuelTypeMock; fuelDocument.PayedForFuel = null; // act, assert Assert.IsTrue(fuelDocument.PayedLiters == 0); }
/// <summary> /// Открывает диалог выдачи топлива, с коммитом изменений в родительском UoW /// </summary> public FuelDocumentDlg(IUnitOfWork uow, RouteList rl) { this.Build(); UoW = uow; FuelDocument = new FuelDocument(); autoCommit = false; routeList = rl; FuelDocument.Date = DateTime.Now; FuelDocument.Car = routeList.Car; FuelDocument.Driver = routeList.Driver; FuelDocument.Fuel = routeList.Car.FuelType; FuelDocument.LiterCost = routeList.Car.FuelType.Cost; FuelDocument.RouteList = routeList; ConfigureDlg(); }
public void PayedLitersTest(decimal payedForFuel, decimal fuelCost, decimal fuelLitersExpectedResult) { // arrange FuelType fuelTypeMock = Substitute.For <FuelType>(); fuelTypeMock.Cost.Returns(fuelCost); FuelDocument fuelDocument = new FuelDocument(); fuelDocument.Fuel = fuelTypeMock; fuelDocument.PayedForFuel = payedForFuel; // act, assert string message = $"Оплачено: {payedForFuel}, стоимость: {fuelCost}, ожидаемое количество топлива: {fuelLitersExpectedResult}, расчитано: {fuelDocument.PayedLiters}"; Assert.IsTrue(fuelDocument.PayedLiters == fuelLitersExpectedResult, message); }
private void OnFuelUpdated() { Employee cashier = FuelDocument.GetActualCashier(UoW); if (cashier == null) { MessageDialogWorks.RunErrorDialog( "Ваш пользователь не привязан к действующему сотруднику, Вы не можете выдавать денежные средства, так как некого указывать в качестве кассира."); return; } FuelDocument.Fuel.Cost = spinFuelPrice.ValueAsDecimal; FuelDocument.UpdateOperation(); FuelDocument.UpdateFuelCashExpense(UoW, cashier); UpdateResutlInfo(); UpdateFuelCashExpenseInfo(); }
public bool Save() { Employee cashier = FuelDocument.GetActualCashier(UoW); if (cashier == null) { return(false); } if (FuelDocument.Author == null) { FuelDocument.Author = cashier; } FuelDocument.LastEditor = cashier; FuelDocument.LastEditDate = DateTime.Now; if (FuelDocument.FuelCashExpense != null) { FuelDocument.FuelCashExpense.Casher = cashier; } var valid = new QSValidator <FuelDocument>(FuelDocument); if (valid.RunDlgIfNotValid((Gtk.Window) this.Toplevel)) { return(false); } logger.Info("Сохраняем топливный документ..."); routeList.ObservableFuelDocuments.Add(FuelDocument); if (autoCommit) { UoW.Save(); } else { UoW.Save(FuelDocument); } return(true); }
public void CreateFuelOperationTest_Car_IsCompanyHavings() { // arrange expenseCategoryMock = Substitute.For <ExpenseCategory>(); CategoryRepository.FuelDocumentExpenseCategoryTestGap = (arg) => expenseCategoryMock; FuelType fuelTypeMock = Substitute.For <FuelType>(); fuelTypeMock.Cost.Returns(30); Car carMock = Substitute.For <Car>(); carMock.IsCompanyCar.Returns(true); Organization organisationMock = Substitute.For <Organization>(); IUnitOfWork uowMock = Substitute.For <IUnitOfWork>(); VodovozRouteList routeListMock = Substitute.For <VodovozRouteList>(); Subdivision subdivisionMock = Substitute.For <Subdivision>(); routeListMock.ClosingSubdivision = subdivisionMock; IFuelRepository fuelRepositoryMock = Substitute.For <IFuelRepository>(); fuelRepositoryMock.GetFuelBalanceForSubdivision(uowMock, subdivisionMock, fuelTypeMock).Returns(50); OrganizationParametersProvider organisationParametersProviderMock = Substitute.For <OrganizationParametersProvider>(); CashDistributionCommonOrganisationProvider commonOrganisationProviderMock = Substitute.For <CashDistributionCommonOrganisationProvider>(organisationParametersProviderMock); commonOrganisationProviderMock.GetCommonOrganisation(uowMock).Returns(organisationMock); var fuelDocument = new FuelDocument(); fuelDocument.Driver = Substitute.For <Employee>(); fuelDocument.Car = carMock; fuelDocument.Date = DateTime.Now; fuelDocument.LastEditDate = DateTime.Now; fuelDocument.Fuel = fuelTypeMock; fuelDocument.RouteList = routeListMock; fuelDocument.UoW = uowMock; fuelDocument.FuelCoupons = 40; fuelDocument.PayedForFuel = null; fuelDocument.Subdivision = subdivisionMock; // act fuelDocument.CreateOperations(fuelRepositoryMock, commonOrganisationProviderMock); // assert AssertsAccumulator.Create .Accumulate(() => Assert.That(fuelDocument.FuelOperation.LitersGived, Is.EqualTo(fuelDocument.FuelCoupons), "Количество топлива в операции не совпадает с количеством в документе")) .Accumulate(() => Assert.That(fuelDocument.FuelOperation.PayedLiters, Is.EqualTo(fuelDocument.PayedLiters), "Количество топлива оплаченного деньгами не совпадает с количеством топлива оплаченного деньгами в документе")) .Accumulate(() => Assert.That(fuelDocument.FuelOperation.Car, Is.SameAs(fuelDocument.Car), "Автомобиль в операции не совпадает с автомобилем в документе")) .Accumulate(() => Assert.That(fuelDocument.FuelOperation.Driver, Is.Null, "Водитель не должен быть заполнен")) .Accumulate(() => Assert.That(fuelDocument.FuelOperation.Fuel, Is.SameAs(fuelDocument.Fuel), "Тип топлива в операции не совпадает с типом топлива в документе")) .Release(); }