Ejemplo n.º 1
0
        public async Task SeededWater_InsertOrUpdate_IngredientUpdated()
        {
            //Arrange
            var ingredient = new IngredientDetailModel
                             (
                Name: IngredientSeeds.Water.Name,
                Description: IngredientSeeds.Water.Description
                             )
            {
                Id = IngredientSeeds.Water.Id
            };

            ingredient.Name        += "updated";
            ingredient.Description += "updated";

            //Act
            await _ingredientFacadeSUT.SaveAsync(ingredient);

            //Assert
            await using var dbxAssert = await DbContextFactory.CreateDbContextAsync();

            var ingredientFromDb = await dbxAssert.Ingredients.SingleAsync(i => i.Id == ingredient.Id);

            DeepAssert.Equal(ingredient, Mapper.Map <IngredientDetailModel>(ingredientFromDb));
        }
Ejemplo n.º 2
0
        public async Task Create_With_Invalid_Name_Returns_Expected_Validation_Error(string name)
        {
            // Arrange
            var newIngredient = new IngredientDetailModel
            {
                Name        = name,
                Description = "Mléko plnotučné"
            };
            var newIngredientSerialized = JsonConvert.SerializeObject(newIngredient);
            var stringContent           = new StringContent(newIngredientSerialized, Encoding.UTF8, "application/json");

            // Act
            var response = await _client.PostAsync("api/ingredient?version=3.0&culture=en", stringContent);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.BadRequest);

            //var problemDetails = JsonConvert.DeserializeObject<ProblemDetails>(await response.Content.ReadAsStringAsync());
            //var serializableError = JsonConvert.DeserializeObject<SerializableError>(await response.Content.ReadAsStringAsync());
            var validationProblemDetails = JsonConvert.DeserializeObject <ValidationProblemDetails>(await response.Content.ReadAsStringAsync());

            validationProblemDetails.Errors.Should().HaveCount(1);
            validationProblemDetails.Errors["Name"][0].Should().Be("Ingredient name length must be between 3 and 100 characters");
            validationProblemDetails.Title.Should().Be("One or more validation errors occurred.");
        }
Ejemplo n.º 3
0
        public Guid Create(IngredientDetailModel ingredient)
        {
            var ingredientEntity = mapper.Map <IngredientEntity>(ingredient);

            ingredientEntity.Id = Guid.NewGuid();
            return(ingredientRepository.Insert(ingredientEntity));
        }
Ejemplo n.º 4
0
 public static IngredientEntity MapEntity(IngredientDetailModel model) =>
 new IngredientEntity
 {
     Id          = model.Id,
     Description = model.Description,
     Name        = model.Name
 };
Ejemplo n.º 5
0
 public static IngredientEntity MapIngredientDetailModelToEntity(IngredientDetailModel model)
 {
     return(new IngredientEntity
     {
         Id = model.Id,
         Description = model.Description,
         Name = model.Name
     });
 }
Ejemplo n.º 6
0
 public void Update(IngredientDetailModel model)
 {
     using (var dbContext = dbContextFactory.CreateDbContext())
     {
         var entity = IngredientMapper.MapIngredientDetailModelToEntity(model);
         dbContext.Ingredients.Update(entity);
         dbContext.SaveChanges();
     }
 }
Ejemplo n.º 7
0
 public IngredientDetailModel Create(IngredientDetailModel model)
 {
     using (var dbContext = dbContextFactory.CreateDbContext())
     {
         var entity = IngredientMapper.MapIngredientDetailModelToEntity(model);
         dbContext.Ingredients.Add(entity);
         dbContext.SaveChanges();
         return(IngredientMapper.MapIngredientEntityToDetailModel(entity));
     }
 }
Ejemplo n.º 8
0
        public static IngredientEntity MapEntity(IngredientDetailModel model, IEntityFactory entityFactory = null)
        {
            var entity = (entityFactory ?? new DummyEntityFactory()).Create <IngredientEntity>(model.Id);

            entity.Id          = model.Id;
            entity.Description = model.Description;
            entity.Name        = model.Name;

            return(entity);
        }
Ejemplo n.º 9
0
        public async Task Create_WithNonExistingItem_DoesNotThrow()
        {
            var model = new IngredientDetailModel
                        (
                Name: @"Ingredience 1",
                Description: @"Testovací ingredience"
                        );

            var _ = await _ingredientFacadeSUT.SaveAsync(model);
        }
Ejemplo n.º 10
0
        public async Task Save()
        {
            var resultId = await IngredientFacade.SaveAsync(Data);

            if (OnModification.HasDelegate)
            {
                await OnModification.InvokeAsync(resultId);
            }
            Data = new IngredientDetailModel();
        }
Ejemplo n.º 11
0
        public void Create_WithNonExistingItem_DoesNotThrow()
        {
            IngredientDetailModel model = new IngredientDetailModel
            {
                Description = "Testovací ingredience",
                Name        = "Ingredience 1"
            };

            IngredientDetailModel returnedModel = _ingredientRepositorySUT.InsertOrUpdate(model);
        }
Ejemplo n.º 12
0
 public async Task <Guid> SaveAsync(IngredientDetailModel data)
 {
     if (data.Id == Guid.Empty)
     {
         return(await ingredientClient.IngredientPostAsync(apiVersion, culture, data));
     }
     else
     {
         return(await ingredientClient.IngredientPutAsync(apiVersion, culture, data));
     }
 }
Ejemplo n.º 13
0
        public IngredientDetailModel InsertOrUpdate(IngredientDetailModel model)
        {
            using var dbContext = _dbContextFactory.Create();

            var entity = IngredientMapper.MapIngredientDetailModelToEntity(model);

            dbContext.Ingredients.Update(entity);
            dbContext.SaveChanges();

            return(IngredientMapper.MapIngredientEntityToDetailModel(entity));
        }
Ejemplo n.º 14
0
 public void Save()
 {
     if (Model.Id == Guid.Empty)
     {
         Model = repository.Create(Model);
     }
     else
     {
         repository.Update(Model);
     }
 }
Ejemplo n.º 15
0
        protected override async Task OnInitializedAsync()
        {
            if (Id == Guid.Empty)
            {
                Data = new IngredientDetailModel();
            }
            else
            {
                Data = await IngredientFacade.GetIngredientAsync(Id);
            }

            await base.OnInitializedAsync();
        }
Ejemplo n.º 16
0
        public void Create_WithNonExistingItem_DoesNotThrow()
        {
            var model = new IngredientDetailModel
            {
                Description = "Testovací ingredience",
                Name        = "Ingredience 1"
            };

            var returnedModel = fixture.Repository.Create(model);

            Assert.NotNull(returnedModel);

            fixture.Repository.Delete(returnedModel.Id);
        }
Ejemplo n.º 17
0
        protected override async Task OnInitializedAsync()
        {
            if (Id == Guid.Empty)
            {
                Data = new IngredientDetailModel();
            }
            else
            {
                var dataList = await httpClient.GetFromJsonAsync <List <IngredientDetailModel> >("sample-data/ingredients.json");

                Data = dataList.Single(item => item.Id == Id);
            }

            await base.OnInitializedAsync();
        }
Ejemplo n.º 18
0
        public override async Task OnAppearing()
        {
            await base.OnAppearing();

            if (viewModelParameter == null)
            {
                Ingredient = new IngredientDetailModel {
                    Id = Guid.Empty
                };
            }
            else
            {
                Ingredient = await ingredientsFacade.GetIngredientAsync(viewModelParameter.Value);
            }
        }
Ejemplo n.º 19
0
        public async Task NewIngredient_InsertOrUpdate_IngredientAdded()
        {
            //Arrange
            var ingredient = new IngredientDetailModel(
                Name: "Water",
                Description: "Mineral water"
                );

            //Act
            ingredient = await _ingredientFacadeSUT.SaveAsync(ingredient);

            //Assert
            await using var dbxAssert = await DbContextFactory.CreateDbContextAsync();

            var ingredientFromDb = await dbxAssert.Ingredients.SingleAsync(i => i.Id == ingredient.Id);

            DeepAssert.Equal(ingredient, Mapper.Map <IngredientDetailModel>(ingredientFromDb));
        }
Ejemplo n.º 20
0
        public void NewIngredient_InsertOrUpdate_IngredientAdded()
        {
            //Arrange
            var ingredient = new IngredientDetailModel()
            {
                Name        = "Water",
                Description = "Mineral water"
            };

            //Act
            ingredient = _fixture.Repository.InsertOrUpdate(ingredient);

            //Assert
            using var dbxAssert = _fixture.DbContextFactory.CreateDbContext();
            var ingredientFromDb = dbxAssert.Ingredients.Single(i => i.Id == ingredient.Id);

            Assert.Equal(ingredient, IngredientMapper.MapDetailModel(ingredientFromDb), IngredientDetailModel.AllMembersComparer);
        }
Ejemplo n.º 21
0
        public void NewIngredient_InsertOrUpdate_IngredientAdded()
        {
            //Arrange
            var ingredient = new IngredientDetailModel()
            {
                Name        = "Water",
                Description = "Mineral water"
            };

            //Act
            ingredient = _ingredientRepositorySUT.InsertOrUpdate(ingredient);

            //Assert
            using var dbxAssert = _dbContextFactory.Create();
            var ingredientFromDb = dbxAssert.Ingredients.Single(i => i.Id == ingredient.Id);

            Assert.Equal(ingredient, IngredientMapper.MapEntityToDetailModel(ingredientFromDb));
        }
Ejemplo n.º 22
0
        public void SeededWater_InsertOrUpdate_IngredientUpdated()
        {
            //Arrange
            var ingredient = new IngredientDetailModel()
            {
                Id          = IngredientSeeds.Water.Id,
                Name        = IngredientSeeds.Water.Name,
                Description = IngredientSeeds.Water.Description,
            };

            ingredient.Name        += "updated";
            ingredient.Description += "updated";

            //Act
            _ingredientRepositorySUT.InsertOrUpdate(ingredient);

            //Assert
            using var dbxAssert = _dbContextFactory.Create();
            var ingredientFromDb = dbxAssert.Ingredients.Single(i => i.Id == ingredient.Id);

            Assert.Equal(ingredient, IngredientMapper.MapEntityToDetailModel(ingredientFromDb));
        }
Ejemplo n.º 23
0
        public async Task Create_Should_Create_New_Ingredient()
        {
            // Arrange
            var newIngredient = new IngredientDetailModel
            {
                Name        = "Mléko",
                Description = "Mléko polotučné"
            };
            var newIngredientSerialized = JsonConvert.SerializeObject(newIngredient);
            var stringContent           = new StringContent(newIngredientSerialized, Encoding.UTF8, "application/json");

            // Act
            var response = await _client.PostAsync("api/ingredient", stringContent);

            //var response = await _client.PostAsJsonAsync("api/ingredient", newIngredient); // Microsoft.AspNet.WebApi.Client NuGet package needs to be installed.

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);
            var newIngredientGuid = JsonConvert.DeserializeObject <Guid>(await response.Content.ReadAsStringAsync());

            newIngredientGuid.Should().NotBeEmpty();
        }
Ejemplo n.º 24
0
        public void SeededWater_InsertOrUpdate_IngredientUpdated()
        {
            //Arrange
            var ingredient = new IngredientDetailModel()
            {
                Id          = Seeds.Water.Id,
                Name        = Seeds.Water.Name,
                Description = Seeds.Water.Description,
            };

            ingredient.Name        += "updated";
            ingredient.Description += "updated";

            //Act
            _fixture.Repository.InsertOrUpdate(ingredient);

            //Assert
            using var dbxAssert = _fixture.DbContextFactory.CreateDbContext();
            var ingredientFromDb = dbxAssert.Ingredients.Single(i => i.Id == ingredient.Id);

            Assert.Equal(ingredient, IngredientMapper.MapDetailModel(ingredientFromDb), IngredientDetailModel.AllMembersComparer);
        }
Ejemplo n.º 25
0
        public async Task Update_Should_Update_Existing_Ingredient()
        {
            // Arrange
            Guid ingredientToUpdateGuid = new Guid("ba605acc-25b5-4ae7-a23f-09e5513badec");
            var  ingredientUpdateModel  = new IngredientDetailModel
            {
                Id          = ingredientToUpdateGuid,
                Name        = "Šlehačka",
                Description = "Popis šlehačky 40%"
            };
            var ingredientUpdateModelSerialized = JsonConvert.SerializeObject(ingredientUpdateModel);
            var stringContent = new StringContent(ingredientUpdateModelSerialized, Encoding.UTF8, "application/json");

            // Act
            var response = await _client.PutAsync("api/ingredient", stringContent);

            // Assert
            response.StatusCode.Should().Be(HttpStatusCode.OK);

            var ingredientGuid = JsonConvert.DeserializeObject <Guid>(await response.Content.ReadAsStringAsync());

            ingredientGuid.Should().Be(ingredientToUpdateGuid);
        }
Ejemplo n.º 26
0
 public async Task <Guid> InsertAsync(IngredientDetailModel ingredient)
 {
     return(await _ingredientClient.IngredientPostAsync("3", "cs", ingredient));
 }
Ejemplo n.º 27
0
 public void Load(Guid id)
 {
     Model = repository.GetById(id);
 }
Ejemplo n.º 28
0
 public ActionResult <Guid> Update(IngredientDetailModel ingredient)
 {
     return(ingredientFacade.Update(ingredient));
 }
Ejemplo n.º 29
0
 private void IngredientNew(IngredientNewMessage ingredientNewMessage)
 => Model = new IngredientDetailModel();
Ejemplo n.º 30
0
        public Guid?Update(IngredientDetailModel ingredient)
        {
            var ingredientEntity = mapper.Map <IngredientEntity>(ingredient);

            return(ingredientRepository.Update(ingredientEntity));
        }