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));
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }