public async Task <bool> UpdatePublisherAsync(PublisherEditServiceModel model) { if (!this.IsEntityStateValid(model)) { return(false); } var publisher = await this.Context.Publishers.SingleOrDefaultAsync(p => p.Id == model.Id); if (publisher == null) { return(false); } var nameToCheck = model.Name.Trim().ToLower(); // Check if publisher name has already been taken if (!string.Equals(publisher.Name, model.Name, StringComparison.CurrentCultureIgnoreCase) && await this.Context.Publishers.AnyAsync(p => p.Name.ToLower() == nameToCheck)) { return(false); } publisher.Name = model.Name.Trim(); publisher.Description = model.Description; publisher.ImageUrl = model.ImageUrl; this.Context.Publishers.Update(publisher); await this.Context.SaveChangesAsync(); return(true); }
public async Task UpdatePublisherAsync_WithTakenName_ReturnsFalse() { // Arrange var context = this.NewInMemoryDatabase(); const string testName = "NewName"; var publisherToAdd = new Publisher { Name = "TestName", Description = "TestDescription", ImageUrl = "http://www.test.com", }; var otherPublisher = new Publisher { Name = testName.ToUpper(), Description = "TestDescription", ImageUrl = "http://www.test.com", }; await context.Publishers.AddRangeAsync(publisherToAdd, otherPublisher); await context.SaveChangesAsync(); var publishersService = new PublishersService(context); var model = new PublisherEditServiceModel { Id = publisherToAdd.Id, Name = testName, Description = "NewDescription", ImageUrl = "https://newurl.com/pic.jpg" }; // Act var result = await publishersService.UpdatePublisherAsync(model); // Assert Assert.False(result); var updatedPublisher = await context.Publishers.SingleOrDefaultAsync(p => p.Id == publisherToAdd.Id); Assert.NotNull(updatedPublisher); Assert.Equal(publisherToAdd.Name, updatedPublisher.Name); }
public async Task UpdatePublisherAsync_WithSameName_WorksCorrectly() { // Arrange var context = this.NewInMemoryDatabase(); var publisherToAdd = new Publisher { Name = "TestName", Description = "TestDescription", ImageUrl = "http://www.test.com", }; await context.Publishers.AddAsync(publisherToAdd); await context.SaveChangesAsync(); var publishersService = new PublishersService(context); var model = new PublisherEditServiceModel { Id = publisherToAdd.Id, Name = "testname", Description = "NewDescription", ImageUrl = "https://newurl.com/pic.jpg" }; // Act var result = await publishersService.UpdatePublisherAsync(model); // Assert Assert.True(result); var updatedPublisher = await context.Publishers.SingleOrDefaultAsync(p => p.Id == publisherToAdd.Id); Assert.NotNull(updatedPublisher); Assert.Equal(model.Name, updatedPublisher.Name); Assert.Equal(model.Description, updatedPublisher.Description); Assert.Equal(model.ImageUrl, updatedPublisher.ImageUrl); }