public async Task PassValidDescriptionItem()
        {
            //arrange
            var server      = TestFactory.GetServer();
            var shopManager = server.GetRequiredService <IShopManager>();
            var validator   = server.GetRequiredService <IShopValidator <DescriptionGroupItem> >();
            var shopRepo    = server.GetShopRepository();

            var product = new Product()
            {
                Name = "testProduct"
            };
            await shopRepo.CreateProductAsync(product, CancellationToken.None);

            var descGrp = new DescriptionGroup()
            {
                Name = "testGroup"
            };
            await shopRepo.CreateDescriptionGroupAsync(descGrp, CancellationToken.None);

            var descItem = new DescriptionGroupItem()
            {
                Name = "testGroupItem", DescriptionGroupId = descGrp.Id
            };

            //act
            var result = await validator.ValidateAsync(shopManager, descItem);

            Assert.True(result.Succeeded);
        }
        public async Task DescriptionGroupItemAlreadyExists()
        {
            //arrange
            var server      = TestFactory.GetServer();
            var shopManager = server.GetRequiredService <IShopManager>();
            var validator   = server.GetRequiredService <IShopValidator <DescriptionGroupItem> >();
            var shopRepo    = server.GetShopRepository();

            var descGrp = new DescriptionGroup()
            {
                Name = "testGroup"
            };
            await shopRepo.CreateDescriptionGroupAsync(descGrp, CancellationToken.None);

            var descItem1 = new DescriptionGroupItem()
            {
                Name = "testGroupItem", DescriptionGroupId = descGrp.Id
            };
            var descItem2 = new DescriptionGroupItem()
            {
                Name = "testGroupItem", DescriptionGroupId = descGrp.Id
            };

            //act
            await shopRepo.CreateDescriptionGroupItemAsync(descItem1, CancellationToken.None);

            var result = await validator.ValidateAsync(shopManager, descItem2);

            Assert.True(!result.Succeeded &&
                        result.Errors.Any(x => x.Code == nameof(OperationErrorDescriber.DuplicateDescriptionGroupItemName)));
        }
        public async Task DescriptionGroupItemCannotHaveEmptyName()
        {
            //arrange
            var server      = TestFactory.GetServer();
            var shopManager = server.GetRequiredService <IShopManager>();
            var validator   = server.GetRequiredService <IShopValidator <DescriptionGroupItem> >();

            var descGrpWithInvalidName1 = new DescriptionGroupItem()
            {
                Name = ""
            };
            var descGrpWithInvalidName2 = new DescriptionGroupItem()
            {
                Name = null
            };

            //act
            var result1 = await validator.ValidateAsync(shopManager, descGrpWithInvalidName1);

            var result2 = await validator.ValidateAsync(shopManager, descGrpWithInvalidName2);

            Assert.True(!result1.Succeeded &&
                        result1.Errors.Any(x => x.Code == nameof(OperationErrorDescriber.EmptyDescriptionGroupItemName)));
            Assert.True(!result2.Succeeded &&
                        result1.Errors.Any(x => x.Code == nameof(OperationErrorDescriber.EmptyDescriptionGroupItemName)));
        }
Example #4
0
        public async Task <IActionResult> DeleteDescriptionItem(int id)
        {
            DescriptionGroupItem item = await _shopManager.GetDescriptionItemByIdAsync(id);

            if (item == null)
            {
                return(View("Error", new ErrorViewModel {
                    Message = $"Описание с id {id} не найдено."
                }));
            }

            var itemDto = _mapper.Map <DescriptionGroupItemDto>(item);

            return(View(itemDto));
        }
        public async Task CannotCreateDescItemWithoutGroup()
        {
            //arrange
            var server      = TestFactory.GetServer();
            var shopManager = server.GetRequiredService <IShopManager>();
            var validator   = server.GetRequiredService <IShopValidator <DescriptionGroupItem> >();
            var descItem    = new DescriptionGroupItem()
            {
                Name = "testGroupItem", DescriptionGroupId = 322
            };

            //act
            var result = await validator.ValidateAsync(shopManager, descItem);

            Assert.True(!result.Succeeded &&
                        result.Errors.Any(x => x.Code == nameof(OperationErrorDescriber.EntityNotFound)));
        }
        public async Task DescriptionWithoutExistingReferences()
        {
            //arrange
            var server      = TestFactory.GetServer();
            var shopManager = server.GetRequiredService <IShopManager>();
            var validator   = server.GetRequiredService <IShopValidator <Description> >();
            var shopRepo    = server.GetShopRepository();

            var product = new Product()
            {
                Name = "testProduct"
            };
            await shopRepo.CreateProductAsync(product, CancellationToken.None);

            var descGrp = new DescriptionGroup()
            {
                Name = "testGroup"
            };
            await shopRepo.CreateDescriptionGroupAsync(descGrp, CancellationToken.None);

            var descItem = new DescriptionGroupItem()
            {
                Name = "testGroupItem", DescriptionGroupId = descGrp.Id
            };
            await shopRepo.CreateDescriptionGroupItemAsync(descItem, CancellationToken.None);

            var desc1 = new Description()
            {
                Value = "testDescription", ProductId = product.Id, DescriptionGroupItemId = 322
            };
            var desc2 = new Description()
            {
                Value = "testDescription", ProductId = 322, DescriptionGroupItemId = descItem.Id
            };

            //act
            var result1 = await validator.ValidateAsync(shopManager, desc1);

            var result2 = await validator.ValidateAsync(shopManager, desc2);

            Assert.True(!result1.Succeeded &&
                        result1.Errors.Where(x => x.Code == nameof(OperationErrorDescriber.EntityNotFound)).Take(2).Count() == 1);
            Assert.True(!result1.Succeeded &&
                        result1.Errors.Where(x => x.Code == nameof(OperationErrorDescriber.EntityNotFound)).Take(2).Count() == 1);
        }
Example #7
0
        public async Task <OperationResult> CreateDescriptionGroupItemAsync(DescriptionGroupItem descriptionGroupItem,
                                                                            CancellationToken ct)
        {
            ct.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            if (descriptionGroupItem == null)
            {
                throw new ArgumentNullException(nameof(descriptionGroupItem));
            }

            Context.Entry(descriptionGroupItem).State = EntityState.Added;
            try
            {
                await SaveChangesAsync(ct);
            }
            catch (DbUpdateException)
            {
                return(OperationResult.Failure(ErrorDescriber.DbUpdateFailure()));
            }

            return(OperationResult.Success());
        }
Example #8
0
        public async Task <OperationResult> UpdateDescriptionItemAsync(DescriptionGroupItem descriptionGroupItem)
        {
            ThrowIfDisposed();
            if (descriptionGroupItem == null)
            {
                throw new ArgumentNullException(nameof(descriptionGroupItem));
            }

            var result = await Validate(new[] { descriptionGroupItem }, DescriptionGroupItemValidators);

            if (!result.Succeeded)
            {
                return(result);
            }

            result = await _repository.UpdateDescriptionGroupItemAsync(descriptionGroupItem, CancellationToken);

            if (!result.Succeeded)
            {
                return(result);
            }

            return(OperationResult.Success());
        }
Example #9
0
        public async Task <OperationResult> UpdateDescriptionGroupItemAsync(DescriptionGroupItem descriptionGroupItem,
                                                                            CancellationToken ct)
        {
            ct.ThrowIfCancellationRequested();
            ThrowIfDisposed();
            if (descriptionGroupItem == null)
            {
                throw new ArgumentNullException(nameof(descriptionGroupItem));
            }

            var existing = await DescGroupItemsSet.FindAsync(new object[] { descriptionGroupItem.Id }, ct);

            if (existing == null)
            {
                Context.Entry(descriptionGroupItem).State = EntityState.Modified;
            }
            else
            {
                existing.Name = descriptionGroupItem.Name;
            }

            try
            {
                await SaveChangesAsync(ct);
            }
            catch (DbUpdateConcurrencyException)
            {
                return(OperationResult.Failure(ErrorDescriber.ConcurrencyFailure()));
            }
            catch (DbUpdateException)
            {
                return(OperationResult.Failure(ErrorDescriber.DbUpdateFailure()));
            }

            return(OperationResult.Success());
        }