public async Task Create() { var booking = new BookingAM(); await Suite.Controller.Create(booking); Suite.ApplicationServiceMock .Verify(m => m.CreateOrder(booking)); }
public async Task <Order> CreateOrder(BookingAM booking) { using (var transaction = await TransactionService.BeginTransaction()) { try { var domainCustomer = await CustomerService.GetDomainCustomer(booking.Customer); var domainCargo = await CargoService.CreateDomainCargo(booking.Cargo); var domainBill = await BillService.CreateDomainBill(booking.BillInfo, booking.Basket); var route = await RouteService.GetRoute(booking.RootAddress, booking.Waypoints); var domainRoute = await RouteService.CreateDomainRoute(route); var result = await DomainOrderService.Create( booking.OrderTime, domainCustomer.Id, domainCargo.Id, domainRoute.Id, domainBill.Id); await OrderStateService.New(result.Id); transaction.Commit(); return(result); } catch { transaction.Rollback(); throw; } } }
public async Task CreateOrder() { var commonId = 1; var booking = new BookingAM { OrderTime = DateTime.MinValue, RootAddress = new AddressAM { Latitude = 11.2222, Longitude = 22.3333 }, BillInfo = new BillInfoAM { PriceId = commonId++, CommissionPercentage = 10, DegreeOfDifficulty = 1 }, Customer = new CustomerAM { PhoneNumber = "79101112233", FirstName = "Генадий" }, Basket = new BasketAM { KmValue = 200, DitchValue = 0, LoadingValue = 1, LockedWheelsValue = 2, LockedSteeringValue = 1, OverturnedValue = 0 }, Cargo = new CargoAM { BrandCatalogItemId = commonId++, KindCatalogItemId = commonId++, WeightCatalogItemId = commonId++, RegistrationNumber = "в100вв76", Comment = "Не работает пневма" }, Waypoints = new WaypointsAM { Points = new List <AddressAM> { new AddressAM { Country = "Россия", Area = "Ярославская область", Province = "Ярославский район", Locality = "Ярославль", Street = "пр-кт Революции", House = "120" }, new AddressAM { Country = "Россия", Area = "Ярославская область", Province = "Пошехонский район", Locality = "Пошехонье", Street = "Солнечная", House = "12" } }, Comment = "На закрытой парковке. Попросить охраника открыть шлагбаум" } }; var route = new RouteAM(); var domainRoute = new Route { Id = commonId++ }; var domainCustomer = new Customer { Id = commonId++ }; var domainCargo = new Cargo { Id = commonId++ }; var domainBill = new Bill { Id = commonId++ }; var domainOrder = new Order { Id = commonId++ }; Suite.CustomerServiceMock .Setup(m => m.GetDomainCustomer(booking.Customer)) .ReturnsAsync(domainCustomer); Suite.CargoServiceMock .Setup(m => m.CreateDomainCargo(booking.Cargo)) .ReturnsAsync(domainCargo); Suite.RouteServiceMock .Setup(m => m.GetRoute(booking.RootAddress, booking.Waypoints)) .ReturnsAsync(route); Suite.RouteServiceMock .Setup(m => m.CreateDomainRoute(route)) .ReturnsAsync(domainRoute); Suite.BillServiceMock .Setup(m => m.CreateDomainBill(booking.BillInfo, booking.Basket)) .ReturnsAsync(domainBill); Suite.DomainOrderServiceMock .Setup(m => m.Create(booking.OrderTime, domainCustomer.Id, domainCargo.Id, domainRoute.Id, domainBill.Id)) .ReturnsAsync(domainOrder); var result = await Suite.OrderService.CreateOrder(booking); Suite.OrderStateServiceMock .Verify(m => m.New(domainOrder.Id)); Assert.Equal(domainOrder, result); }
public async Task <IActionResult> Create([FromBody] BookingAM booking) { await Service.CreateOrder(booking); return(Ok()); }