public async Task CreateDish_RecipeAlreadyAdded_ExceptionThrown() { IServiceCollection services = new ServiceCollection(); services.AddServingDomain() .AddServingApplication() .AddServingInfrastructure("Server=.;Database=RestaurantManagementSystem;Trusted_Connection=True;MultipleActiveResultSets=true", "S0M3 M4G1C UN1C0RNS G3N3R4T3D TH1S S3CR3T"); var serviceProviderFactory = new DefaultServiceProviderFactory(); IServiceProvider serviceProvider = serviceProviderFactory.CreateServiceProvider(services); IMediator Mediator = serviceProvider.GetService <IMediator>(); var createDishCommand = new CreateDishCommand(); createDishCommand.Description = "Vkusno"; createDishCommand.Name = "Mnogo Vkusna Mandja"; createDishCommand.RecipeId = 2; createDishCommand.Price = new Money(10); await Mediator.Send(createDishCommand); createDishCommand = new CreateDishCommand(); createDishCommand.Description = "Vkusno"; createDishCommand.Name = "Oshte Po Vkusna Mandja"; createDishCommand.RecipeId = 2; createDishCommand.Price = new Money(10); await Assert.ThrowsExceptionAsync <InvalidDishException>(() => Mediator.Send(createDishCommand)); }
public async Task CreateDish_NewDish_SuccessfullRead() { IServiceCollection services = new ServiceCollection(); services.AddServingDomain() .AddServingApplication() .AddServingInfrastructure("Server=.;Database=RestaurantManagementSystem;Trusted_Connection=True;MultipleActiveResultSets=true", "S0M3 M4G1C UN1C0RNS G3N3R4T3D TH1S S3CR3T"); var serviceProviderFactory = new DefaultServiceProviderFactory(); IServiceProvider serviceProvider = serviceProviderFactory.CreateServiceProvider(services); IMediator Mediator = serviceProvider.GetService <IMediator>(); var createDishCommand = new CreateDishCommand(); createDishCommand.Description = "Vkusno"; createDishCommand.Name = "Vkusna Mandja"; createDishCommand.RecipeId = 1; createDishCommand.Price = new Money(10); var createDishCommandOutput = await Mediator.Send(createDishCommand); var getDishesQuery = new DishesQuery(); var dbDish = (await Mediator.Send(getDishesQuery)).Dishes.FirstOrDefault(dish => dish.Id == createDishCommandOutput.DishId); Assert.AreEqual(dbDish.Id, createDishCommandOutput.DishId); Assert.AreEqual(dbDish.Description, createDishCommand.Description); Assert.AreEqual(dbDish.Name, createDishCommand.Name); Assert.AreEqual(dbDish.Price, createDishCommand.Price); Assert.AreEqual(dbDish.RecipeId, createDishCommand.RecipeId); }
public async Task <ActionResult> Post(CreateDishCommand dish, CancellationToken cancellationToken) { var currentDish = await this.db .Dishes .FirstOrDefaultAsync(d => d.ExternalId == dish.ExternalId && d.CategoryId == dish.CategoryId && d.IsActive, cancellationToken) .ConfigureAwait(false); if (currentDish != null) { return(this.Conflict("Такое блюдо уже существует!")); } var currentCategory = await this.db .Categories .FindAsync(dish.CategoryId) .ConfigureAwait(false); if (currentCategory == null) { return(this.BadRequest("Категория не найдена!")); } var mappedDish = this.mapper.Map <Dish>(dish); mappedDish.Category = currentCategory; var addedDish = await this.db.AddAsync(mappedDish, cancellationToken) .ConfigureAwait(false); var result = await this.db.SaveChangesAsync(cancellationToken).ConfigureAwait(false); return(result > 0 ? CreatedAtAction(nameof(this.Get), new { id = addedDish.Entity.Id }, new { id = addedDish.Entity.Id }) : throw new InvalidOperationException("Не удалось добавить блюдо!")); }
public async Task CreateOrder_NewOrder_SuccessfullRead() { IServiceCollection services = new ServiceCollection(); services.AddServingDomain() .AddServingApplication() .AddServingInfrastructure("Server=.;Database=RestaurantManagementSystem;Trusted_Connection=True;MultipleActiveResultSets=true", "S0M3 M4G1C UN1C0RNS G3N3R4T3D TH1S S3CR3T") .AddTransient <ICurrentUser, CurrentUserServiceMock>(); var serviceProviderFactory = new DefaultServiceProviderFactory(); IServiceProvider serviceProvider = serviceProviderFactory.CreateServiceProvider(services); IMediator Mediator = serviceProvider.GetService <IMediator>(); var createDishCommand = new CreateDishCommand(); createDishCommand.Description = "Vkusno"; createDishCommand.Name = "Mnogo Vkusna Mandja"; createDishCommand.RecipeId = 3; createDishCommand.Price = new Money(10); await Mediator.Send(createDishCommand); createDishCommand = new CreateDishCommand(); createDishCommand.Description = "Vkusno"; createDishCommand.Name = "Oshte Po Vkusna Mandja"; createDishCommand.RecipeId = 4; createDishCommand.Price = new Money(10); await Mediator.Send(createDishCommand); var createOrderCommand = new CreateOrderCommand(); createOrderCommand.TableId = 5; createOrderCommand.AssigneeId = "Goshko"; createOrderCommand.Items.Add(new OrderItemInputModel(1, "Bez Kurkuma")); createOrderCommand.Items.Add(new OrderItemInputModel(2)); var createOrderCommandOutput = await Mediator.Send(createOrderCommand); var getOrdersQuery = new OrdersQuery(); var dbOrder = (await Mediator.Send(getOrdersQuery)).Orders.FirstOrDefault(order => order.Id == createOrderCommandOutput.OrderId); Assert.AreEqual(dbOrder.Id, createOrderCommandOutput.OrderId); Assert.AreEqual(dbOrder.TableId, createOrderCommand.TableId); Assert.AreEqual(dbOrder.AssigneeId, createOrderCommand.AssigneeId); foreach (var item in dbOrder.Items) { var commandItem = createOrderCommand.Items.FirstOrDefault(commandItem => commandItem.DishId == item.Dish.Id); Assert.AreEqual(item.Dish.Id, commandItem.DishId); Assert.AreEqual(item.Note, commandItem.Note); } }
public async Task <IActionResult> CreateAsync([FromBody] CreateDishCommand command) { var response = await _mediator.Send(command); return(JsonResult(response)); }
public async Task <ActionResult <CreateDishOutputModel> > CreateDish(CreateDishCommand createDishCommand) { return(await Send(createDishCommand)); }