Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }