Пример #1
0
        public async Task Update_given_existing_character_Updates_properties()
        {
            var context = new Mock <IFuturamaContext>();
            var entity  = new Character {
                Id = 42
            };

            context.Setup(c => c.Characters.FindAsync(42)).ReturnsAsync(entity);

            using (var repository = new EntityFrameworkCharacterRepository(context.Object))
            {
                var character = new CharacterUpdateDTO
                {
                    Id      = 42,
                    ActorId = 12,
                    Name    = "Name",
                    Species = "Species",
                    Planet  = "Planet",
                    Image   = "Image"
                };

                await repository.UpdateAsync(character);
            }

            Assert.Equal(12, entity.ActorId);
            Assert.Equal("Name", entity.Name);
            Assert.Equal("Species", entity.Species);
            Assert.Equal("Planet", entity.Planet);
            Assert.Equal("Image", entity.Image);
        }
Пример #2
0
        public async Task Delete_given_valid_character_returns_NoContent()
        {
            var repository = new Mock <ICharacterRepository>();

            repository.Setup(r => r.DeleteAsync(42)).ReturnsAsync(true);

            var controller = new CharactersController(repository.Object);

            var character = new CharacterUpdateDTO();
            var result    = await controller.Delete(42);

            Assert.IsType <NoContentResult>(result);
        }
Пример #3
0
        public async Task Put_given_valid_character_calls_UpdateAsync()
        {
            var repository = new Mock <ICharacterRepository>();

            var controller = new CharactersController(repository.Object);

            var character = new CharacterUpdateDTO {
                Id = 42
            };
            await controller.Put(42, character);

            repository.Verify(r => r.UpdateAsync(character));
        }
Пример #4
0
        public async Task Delete_given_non_existing_character_returns_NotFound()
        {
            var repository = new Mock <ICharacterRepository>();

            repository.Setup(r => r.DeleteAsync(42)).ReturnsAsync(false);

            var controller = new CharactersController(repository.Object);

            var character = new CharacterUpdateDTO();
            var result    = await controller.Delete(42);

            Assert.IsType <NotFoundResult>(result);
        }
Пример #5
0
        public async Task Put_given_invalid_character_does_not_call_UpdateAsync()
        {
            var repository = new Mock <ICharacterRepository>();

            var controller = new CharactersController(repository.Object);

            controller.ModelState.AddModelError(string.Empty, "Error");

            var character = new CharacterUpdateDTO();
            await controller.Put(42, character);

            repository.Verify(r => r.UpdateAsync(It.IsAny <CharacterUpdateDTO>()), Times.Never);
        }
Пример #6
0
        public async Task Put_given_id_not_equal_to_character_id_returns_BadRequest()
        {
            var repository = new Mock <ICharacterRepository>();

            var controller = new CharactersController(repository.Object);

            var customer = new CharacterUpdateDTO {
                Id = 42
            };
            var result = await controller.Put(0, customer);

            Assert.IsType <BadRequestObjectResult>(result);
        }
Пример #7
0
        public async Task Put_given_valid_character_returns_NoContent()
        {
            var repository = new Mock <ICharacterRepository>();

            repository.Setup(r => r.UpdateAsync(It.IsAny <CharacterUpdateDTO>())).ReturnsAsync(true);

            var controller = new CharactersController(repository.Object);

            var character = new CharacterUpdateDTO {
                Id = 42
            };
            var result = await controller.Put(42, character);

            Assert.IsType <NoContentResult>(result);
        }
Пример #8
0
        public async Task Put_given_invalid_character_returns_BadRequest()
        {
            var repository = new Mock <ICharacterRepository>();

            var controller = new CharactersController(repository.Object);

            controller.ModelState.AddModelError(string.Empty, "Error");

            var character = new CharacterUpdateDTO {
                Id = 42
            };
            var result = await controller.Put(42, character);

            Assert.IsType <BadRequestObjectResult>(result);
        }
Пример #9
0
        public async Task <bool> UpdateAsync(CharacterUpdateDTO character)
        {
            var entity = await _context.Characters.FindAsync(character.Id);

            if (entity == null)
            {
                return(false);
            }

            entity.ActorId = character.ActorId;
            entity.Name    = character.Name;
            entity.Species = character.Species;
            entity.Planet  = character.Planet;
            entity.Image   = character.Image;

            await _context.SaveChangesAsync();

            return(true);
        }
Пример #10
0
        public async Task <IActionResult> Put(int id, [FromBody] CharacterUpdateDTO character)
        {
            if (id != character.Id)
            {
                ModelState.AddModelError(string.Empty, "id must match character.id");
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var updated = await _repository.UpdateAsync(character);

            if (!updated)
            {
                return(NotFound());
            }

            return(NoContent());
        }
Пример #11
0
        public async Task Update_given_non_existing_character_does_not_SaveChangesAsync()
        {
            var context = new Mock <IFuturamaContext>();

            context.Setup(c => c.Characters.FindAsync(42)).ReturnsAsync(default(Character));

            using (var repository = new EntityFrameworkCharacterRepository(context.Object))
            {
                var character = new CharacterUpdateDTO
                {
                    Id      = 42,
                    Name    = "Name",
                    Species = "Species",
                };

                await repository.UpdateAsync(character);
            }

            context.Verify(c => c.SaveChangesAsync(default(CancellationToken)), Times.Never);
        }
Пример #12
0
        public async Task Update_given_non_existing_character_returns_false()
        {
            var context = new Mock <IFuturamaContext>();

            context.Setup(c => c.Characters.FindAsync(42)).ReturnsAsync(default(Character));

            using (var repository = new EntityFrameworkCharacterRepository(context.Object))
            {
                var character = new CharacterUpdateDTO
                {
                    Id      = 42,
                    Name    = "Name",
                    Species = "Species",
                };

                var result = await repository.UpdateAsync(character);

                Assert.False(result);
            }
        }
Пример #13
0
        public async Task <bool> UpdateAsync(CharacterUpdateDTO character)
        {
            var response = await _client.PutAsync($"api/characters/{character.Id}", character.ToHttpContent());

            return(response.IsSuccessStatusCode);
        }