public async Task <IActionResult> Create([FromBody] SaveOptionGroupJson json) { var catalog = new OptionGroupCatalog(_dbContext, _messageBroker); var optionGroup = json.MapTo(new OptionGroup { TenantId = User.Claims.TenantId() }); await catalog.Add(optionGroup); return(new OptionGroupJson(catalog.OptionGroup)); }
public async Task ShouldRespond422ForInexistentId() { var itemGroup = new ItemGroup().Of(_token.TenantId); _server.Database.ItemGroups.Add(itemGroup); await _server.Database.SaveChangesAsync(); var path = "/option-groups/5"; var jsonRequest = new SaveOptionGroupJson().Build(); var response = await _client.PutJsonAsync(path, jsonRequest); var jsonResponse = await _client.ReadJsonAsync <UnprocessableEntityError>(response); Assert.Equal(HttpStatusCode.UnprocessableEntity, response.StatusCode); Assert.Equal("OPTION_GROUP_NOT_FOUND", jsonResponse.Error); }
public async Task <IActionResult> Update([FromRoute] long id, [FromBody] SaveOptionGroupJson json) { var catalog = new OptionGroupCatalog(_dbContext, _messageBroker); var tenantId = User.Claims.TenantId(); await catalog.Find(tenantId, id); if (catalog.GroupNotExists) { return(new OptionGroupNotFoundError()); } json.MapTo(catalog.OptionGroup); await catalog.Update(); return(new OptionGroupJson(catalog.OptionGroup)); }
public async Task ShouldCreateSuccessfully() { var itemGroup = new ItemGroup().Of(_token.TenantId); _server.Database.ItemGroups.Add(itemGroup); await _server.Database.SaveChangesAsync(); var path = "/option-groups"; var jsonRequest = new SaveOptionGroupJson().Build(); var response = await _client.PostJsonAsync(path, jsonRequest); var jsonResponse = await _client.ReadJsonAsync <OptionGroupJson>(response); var optionGroup = await _server.Database.OptionGroups.SingleAsync(); Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(_token.TenantId, optionGroup.TenantId); Assert.Equal(jsonRequest.Title, optionGroup.Title); }
public async Task ShouldPublishEventAfterCreateSuccessfully() { var itemGroup = new ItemGroup().Of(_token.TenantId); _server.Database.ItemGroups.Add(itemGroup); await _server.Database.SaveChangesAsync(); var path = "/option-groups"; var jsonRequest = new SaveOptionGroupJson().Build(); var response = await _client.PostJsonAsync(path, jsonRequest); var optionGroup = await _server.Database.OptionGroups.SingleAsync(); var publishedEvent = _server.EventBus.PublishedEvents .Single(@event => @event.Name == "menu.option-group.created"); var payload = (OptionGroupPayload)publishedEvent.Payload; Assert.Equal(HttpStatusCode.OK, response.StatusCode); Assert.Equal(payload.Id, optionGroup.Id); Assert.Equal(payload.TenantId, optionGroup.TenantId); Assert.Equal(payload.Title, optionGroup.Title); }
public static SaveOptionGroupJson Build(this SaveOptionGroupJson json) { json.Title = ConstantFactory.Text(); return(json); }