public async Task EditFireplace_WithNonExistingFireplace_ShouldThrowException()
        {
            // Arrange
            var context = ApplicationDbContextInMemoryFactory.InitializeContext();

            var groupRepository        = new EfDeletableEntityRepository <Product_Group>(context);
            var productRepository      = new EfDeletableEntityRepository <Product>(context);
            var fireplacesRepository   = new EfDeletableEntityRepository <Fireplace_chamber>(context);
            var suggestItemsReposotory = new EfDeletableEntityRepository <SuggestProduct>(context);

            var groupService   = new GroupService(groupRepository);
            var prodcutService = new ProductService(productRepository, groupService);
            var sugestItemsRepositoryService = new SuggestProdcut(suggestItemsReposotory);
            var cloudinaryService            = new FakeCloudinary();
            var fireplaceService             = new FireplaceService(fireplacesRepository, groupService, prodcutService, cloudinaryService, sugestItemsRepositoryService);

            var user = new ApplicationUser
            {
                Id             = "abc",
                FirstName      = "Nikolay",
                LastName       = "Doychev",
                Email          = "*****@*****.**",
                EmailConfirmed = true,
            };

            var       fileName = "Img";
            IFormFile file     = new FormFile(
                new MemoryStream(Encoding.UTF8.GetBytes("This is a dummy file")),
                0,
                0,
                fileName,
                "dummy.png");

            var fireplace = new EditFireplaceViewModel
            {
                Id            = "Test Id",
                Power         = "10w",
                Chimney       = "200Ф",
                Description   = "Some description test 1",
                ImagePath     = file,
                Price         = 1800.00M,
                Size          = "60 / 40 / h50",
                TypeOfChamber = TypeOfChamber.Basic.ToString(),
                Name          = "Гк Мая сменено",
            };

            var seeder = new DbContextTestsSeeder();
            await seeder.SeedUsersAsync(context);

            await seeder.SeedGroupAsync(context);

            await seeder.SeedProdcutAsync(context);

            await seeder.SeedFireplacesAsync(context);

            // Act
            AutoMapperConfig.RegisterMappings(typeof(FireplaceInputModel).Assembly);
            await Assert.ThrowsAsync <NullReferenceException>(() => fireplaceService.EditAsync <EditFireplaceViewModel>(fireplace));
        }
Exemple #2
0
        public async Task <IActionResult> Edit(EditFireplaceViewModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View(model));
            }

            var viewModel = await this.fireplaceService.EditAsync <EditFireplaceViewModel>(model);

            return(this.RedirectToAction("Details", new { name = model.Name, area = string.Empty }));
        }
Exemple #3
0
        public async Task <string> EditAsync <T>(EditFireplaceViewModel editModel)
        {
            var fireplace = this.fireplaceRepository.All().Where(f => f.Id == editModel.Id).FirstOrDefault();

            if (fireplace == null)
            {
                throw new NullReferenceException(string.Format(ExceptionsServices.Null_Fireplace_Id_ErrorMessage, editModel.Id));
            }

            var photoUrl = string.Empty;

            if (editModel.ImagePath == null)
            {
                photoUrl = fireplace.ImagePath;
            }
            else
            {
                photoUrl = await this.cloudinaryService.UploadPhotoAsync(
                    editModel.ImagePath,
                    $"{editModel.Name}_{editModel.Id}",
                    GlobalConstants.CloudFolderForFireplacePhotos);
            }

            var product       = this.productService.GetById(fireplace.ProductId);
            var typeOfChamber = Enum.Parse <TypeOfChamber>(editModel.TypeOfChamber);

            product.Name            = editModel.Name;
            fireplace.Power         = editModel.Power;
            fireplace.Chimney       = editModel.Chimney;
            fireplace.Price         = editModel.Price;
            fireplace.Size          = editModel.Size;
            fireplace.TypeOfChamber = typeOfChamber;
            fireplace.Description   = editModel.Description;
            fireplace.ImagePath     = photoUrl; // To upload the new image and ad the new

            await this.fireplaceRepository.SaveChangesAsync();

            return(fireplace.Id);
        }
        public async Task EditFireplace_WithCorrectData_ShouldSuccessfullyEdit()
        {
            // Arrange
            var context = ApplicationDbContextInMemoryFactory.InitializeContext();

            var groupRepository        = new EfDeletableEntityRepository <Product_Group>(context);
            var productRepository      = new EfDeletableEntityRepository <Product>(context);
            var fireplacesRepository   = new EfDeletableEntityRepository <Fireplace_chamber>(context);
            var suggestItemsReposotory = new EfDeletableEntityRepository <SuggestProduct>(context);

            var groupService   = new GroupService(groupRepository);
            var prodcutService = new ProductService(productRepository, groupService);
            var sugestItemsRepositoryService = new SuggestProdcut(suggestItemsReposotory);
            var cloudinaryService            = new FakeCloudinary();
            var fireplaceService             = new FireplaceService(fireplacesRepository, groupService, prodcutService, cloudinaryService, sugestItemsRepositoryService);

            var user = new ApplicationUser
            {
                Id             = "abc",
                FirstName      = "Nikolay",
                LastName       = "Doychev",
                Email          = "*****@*****.**",
                EmailConfirmed = true,
            };

            var       fileName = "Img";
            IFormFile file     = new FormFile(
                new MemoryStream(Encoding.UTF8.GetBytes("This is a dummy file")),
                0,
                0,
                fileName,
                "dummy.png");

            var fireplace = new EditFireplaceViewModel
            {
                Id            = "abc1",
                Power         = "10w",
                Chimney       = "200Ф",
                Description   = "Some description test 1",
                ImagePath     = file,
                Price         = 1800.00M,
                Size          = "60 / 40 / h50",
                TypeOfChamber = TypeOfChamber.Basic.ToString(),
                Name          = "Гк Мая сменено",
            };

            var seeder = new DbContextTestsSeeder();
            await seeder.SeedUsersAsync(context);

            await seeder.SeedGroupAsync(context);

            await seeder.SeedProdcutAsync(context);

            await seeder.SeedFireplacesAsync(context);

            // Act
            AutoMapperConfig.RegisterMappings(typeof(EditFireplaceViewModel).Assembly);
            var result = await fireplaceService.EditAsync <EditFireplaceViewModel>(fireplace);

            var actual = context.Fireplace_Chambers.FirstOrDefault(x => x.Product.Name == "Гк Мая сменено");

            var expectedName          = "Гк Мая сменено";
            var expectedPower         = "10w";
            var expectedChimney       = "200Ф";
            var expectedPrice         = 1800.00M;
            var expectedSize          = "60 / 40 / h50";
            var expectedTypeOfChamber = TypeOfChamber.Basic.ToString();

            // Assert
            AssertExtension.EqualsWithMessage(expectedName, actual.Product.Name, string.Format(ErrorMessage, "AddFireplace returns correct Name"));
            AssertExtension.EqualsWithMessage(expectedPower, actual.Power, string.Format(ErrorMessage, "AddFireplace returns correct Power"));
            AssertExtension.EqualsWithMessage(expectedChimney, actual.Chimney, string.Format(ErrorMessage, "AddFireplace returns correct Chimney"));
            Assert.Equal(expectedPrice, actual.Price);
            AssertExtension.EqualsWithMessage(expectedSize, actual.Size, string.Format(ErrorMessage, "AddFireplace returns correct Size"));
            AssertExtension.EqualsWithMessage(expectedTypeOfChamber, actual.TypeOfChamber.ToString(), string.Format(ErrorMessage, "AddFireplace returns correct TypeOfChamber"));
        }