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))); }
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); }
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()); }
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()); }
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()); }