Пример #1
0
        [Test] // behaviour test
        public void Create_When_entity_is_created_Then_it_makes_calls_to_repository_and_unit_of_work()
        {
            // Arrange
            var airhostessDTOToCreate = new AirhostessDTO()
            {
                FirstName = "Airhostess1",
                LastName  = "Airhostess1",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 1
            };

            var airhostessRepositoryFake = A.Fake <IAirhostessRepository>();

            var unitOfWorkFake = A.Fake <IUnitOfWork>();

            A.CallTo(() => unitOfWorkFake.Set <Airhostess>()).Returns(airhostessRepositoryFake);

            var airhostessService = new AirhostessService(unitOfWorkFake, AlwaysValidValidator);

            // Act
            var result = airhostessService.Create(airhostessDTOToCreate);

            // Assert. Just behaviour
            A.CallTo(() => airhostessRepositoryFake.Create(A <Airhostess> ._)).MustHaveHappenedOnceExactly();
            A.CallTo(() => unitOfWorkFake.Set <Airhostess>()).MustHaveHappenedOnceExactly();
            A.CallTo(() => unitOfWorkFake.SaveChanges()).MustHaveHappenedOnceExactly();
        }
Пример #2
0
        public void Put_When_dto_is_invalid_Then_bad_request_exception_is_thrown()
        {
            // Arrange
            var airhostessId       = 1;
            var airhostessInputDTO = new AirhostessDTO
            {
                FirstName = "Airhostess1",
                LastName  = "Airhostess1",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 1
            };
            var airhostessDTO = new AirhostessDTO
            {
                Id        = 1,
                FirstName = "Airhostess1",
                LastName  = "Airhostess1",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 1
            };
            var airhostessServiceFake = A.Fake <IAirhostessService>();
            var airhostessController  = new AirhostessesController(airhostessServiceFake, AlwaysInvalidValidator);

            // Act
            // Assert
            var exception = Assert.Throws <BadRequestException>(() =>
                                                                airhostessController.Put(airhostessId, airhostessInputDTO)
                                                                );

            Assert.AreEqual(exception.Message, "Is Invalid");
            A.CallTo(() => airhostessServiceFake.Update(airhostessDTO)).MustNotHaveHappened();
        }
Пример #3
0
        public void Update_When_entity_is_updated_Then_existing_entity_in_db_updates()
        {
            // Arrange
            var entityToUpdate = new AirhostessDTO
            {
                Id        = 1,
                FirstName = "Airhostess1",
                LastName  = "Airhostess1",
                BirthDate = new DateTime(1970, 1, 12),
                CrewId    = 1
            };

            var service = new AirhostessService(UnitOfWork, AlwaysValidValidator);

            // Act
            var updatedEntity = service.Update(entityToUpdate);

            // Assert
            var fromDbEntity = AirportDbContext.Airhostess.FirstOrDefault(x => x.Id == entityToUpdate.Id);

            Assert.NotNull(fromDbEntity);
            Assert.AreEqual(entityToUpdate.Id, fromDbEntity.Id);
            Assert.AreEqual(entityToUpdate.FirstName, fromDbEntity.FirstName);
            Assert.AreEqual(entityToUpdate.LastName, fromDbEntity.LastName);
            Assert.AreEqual(entityToUpdate.BirthDate, fromDbEntity.BirthDate);
            Assert.AreEqual(entityToUpdate.CrewId, fromDbEntity.CrewId);
        }
Пример #4
0
        [Test] // behaviour test
        public void Create_When_entity_is_invalid_Then_it_makes_no_calls_to_repository_and_unit_of_work()
        {
            // Arrange
            var airhostessDTOToCreate = new AirhostessDTO()
            {
                FirstName = "",
                LastName  = "Airhostess2",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 2
            };

            var airhostessRepositoryFake = A.Fake <IAirhostessRepository>();

            var unitOfWorkFake = A.Fake <IUnitOfWork>();

            A.CallTo(() => unitOfWorkFake.Set <Airhostess>()).Returns(airhostessRepositoryFake);

            var airhostessService = new AirhostessService(unitOfWorkFake, AlwaysInValidValidator);

            // Act + Assert
            var exception = Assert.Throws <BadRequestException>(() => airhostessService.Create(airhostessDTOToCreate));

            // Assert. Just behaviour
            A.CallTo(() => airhostessRepositoryFake.Create(A <Airhostess> ._)).MustNotHaveHappened();
            A.CallTo(() => unitOfWorkFake.AirhostessRepository).MustNotHaveHappened();
            A.CallTo(() => unitOfWorkFake.Set <Airhostess>()).MustNotHaveHappened();
            A.CallTo(() => unitOfWorkFake.SaveChanges()).MustNotHaveHappened();
        }
Пример #5
0
        public void Create_When_entity_is_created_Then_new_entity_creates_in_db()
        {
            // Arrange
            var newEntity = new AirhostessDTO
            {
                FirstName = "Airhostess1",
                LastName  = "Airhostess1",
                BirthDate = new DateTime(1970, 1, 12),
                CrewId    = 1
            };

            var service = new AirhostessService(UnitOfWork, AlwaysValidValidator);

            // Act
            var createdEntity = service.Create(newEntity);

            // Assert
            var fromDbEntity = AirportDbContext.Airhostess.FirstOrDefault(x => x.Id == createdEntity.Id);

            Assert.NotNull(fromDbEntity);
            Assert.AreEqual(newEntity.FirstName, fromDbEntity.FirstName);
            Assert.AreEqual(newEntity.LastName, fromDbEntity.LastName);
            Assert.AreEqual(newEntity.BirthDate, fromDbEntity.BirthDate);
            Assert.AreEqual(newEntity.CrewId, fromDbEntity.CrewId);
        }
Пример #6
0
        public IActionResult Post([FromBody] AirhostessDTO value)
        {
            var validationResult = _airhostessValidator.Validate(value);

            if (!validationResult.IsValid)
            {
                throw new BadRequestException(validationResult.Errors);
            }

            var entity = _airhostessesService.Create(value);

            return(Json(entity));
        }
Пример #7
0
        public void Update_When_entity_is_updated_Then_updated_entity_is_returned()
        {
            // Arrange
            var airhostessMock = new Airhostess()
            {
                Id        = 3,
                FirstName = "Airhostess3",
                LastName  = "Airhostess3",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 3,
                Crew      = null
            };

            var airhostessDTOToUpdate = new AirhostessDTO()
            {
                Id        = 3,
                FirstName = "Airhostess2",
                LastName  = "Airhostess2",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 1
            };

            var expectedAirhostessDTO = new AirhostessDTO()
            {
                Id        = 3,
                FirstName = "Airhostess3",
                LastName  = "Airhostess3",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 3
            };
            var airhostessRepositoryFake = A.Fake <IAirhostessRepository>();

            A.CallTo(() => airhostessRepositoryFake.Update(A <Airhostess> ._)).Returns(airhostessMock);

            var unitOfWorkFake = A.Fake <IUnitOfWork>();

            A.CallTo(() => unitOfWorkFake.Set <Airhostess>()).Returns(airhostessRepositoryFake);

            var airhostessService = new AirhostessService(unitOfWorkFake, AlwaysValidValidator);

            // Act
            var result = airhostessService.Update(airhostessDTOToUpdate);

            // Assert
            Assert.AreEqual(expectedAirhostessDTO.Id, result.Id, "Id");
            Assert.AreEqual(expectedAirhostessDTO.FirstName, result.FirstName);
            Assert.AreEqual(expectedAirhostessDTO.LastName, result.LastName);
            Assert.AreEqual(expectedAirhostessDTO.BirthDate, result.BirthDate);
            Assert.AreEqual(expectedAirhostessDTO.CrewId, result.CrewId);
        }
Пример #8
0
        public async Task <IActionResult> Put(int id, [FromBody] AirhostessDTO value)
        {
            var validationResult = await _airhostessValidator.ValidateAsync(value);

            if (!validationResult.IsValid)
            {
                throw new BadRequestException(validationResult.Errors);
            }

            value.Id = id;
            var entity = await _airhostessesService.UpdateAsync(value);

            return(Json(entity));
        }
Пример #9
0
        public void Post_When_is_called_Then_service_create_is_called()
        {
            // Arrange
            var airhostessDTO = new AirhostessDTO
            {
                FirstName = "Airhostess1",
                LastName  = "Airhostess1",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 1
            };
            var airhostessServiceFake = A.Fake <IAirhostessService>();
            var airhostessController  = new AirhostessesController(airhostessServiceFake, AlwaysValidValidator);

            // Act
            airhostessController.Post(airhostessDTO);

            // Assert
            A.CallTo(() => airhostessServiceFake.Create(airhostessDTO)).MustHaveHappenedOnceExactly();
        }
Пример #10
0
        public void Update_When_entity_is_invalid_Then_bad_request_exception_is_thrown()
        {
            // Arrange
            var airhostessDTOToUpdate = new AirhostessDTO()
            {
                Id        = 3,
                FirstName = "Airhostess2",
                LastName  = "Airhostess2",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 2
            };

            var airhostessRepositoryFake = A.Fake <IAirhostessRepository>();
            var unitOfWorkFake           = A.Fake <IUnitOfWork>();
            var airhostessService        = new AirhostessService(unitOfWorkFake, AlwaysInValidValidator);

            // Act + Assert
            var exception = Assert.Throws <BadRequestException>(() => airhostessService.Update(airhostessDTOToUpdate), "");

            Assert.AreEqual(exception.Message, "Is Invalid");
        }
Пример #11
0
        public void Update_When_entity_is_updated_Then_other_entities_are_not_changed()
        {
            // Arrange
            var entityToUpdate = new AirhostessDTO
            {
                Id        = 1,
                FirstName = "Airhostess1",
                LastName  = "Airhostess1",
                BirthDate = new DateTime(1970, 1, 12),
                CrewId    = 1
            };

            var airhostessesBeforeUpdate = AirportDbContext.Airhostess
                                           .Where(x => x.Id != entityToUpdate.Id).ToList();

            var service = new AirhostessService(UnitOfWork, AlwaysValidValidator);

            // Act
            var updatedEntity = service.Update(entityToUpdate);

            var airhostessesAfterUpdate = AirportDbContext.Airhostess
                                          .Where(x => x.Id != entityToUpdate.Id).ToList();

            // Assert
            Assert.AreEqual(airhostessesBeforeUpdate.Count, airhostessesAfterUpdate.Count);
            foreach (var beforeUpdate in airhostessesBeforeUpdate)
            {
                var afterUpdate = airhostessesAfterUpdate.FirstOrDefault(x => x.Id == beforeUpdate.Id);
                Assert.NotNull(afterUpdate);

                Assert.AreEqual(beforeUpdate.Id, afterUpdate.Id);
                Assert.AreEqual(beforeUpdate.FirstName, afterUpdate.FirstName);
                Assert.AreEqual(beforeUpdate.LastName, afterUpdate.LastName);
                Assert.AreEqual(beforeUpdate.BirthDate, afterUpdate.BirthDate);
                Assert.AreEqual(beforeUpdate.CrewId, afterUpdate.CrewId);
            }
        }
Пример #12
0
        public void Create_When_entity_is_invalid_Then_bad_request_exception_is_thrown()
        {
            // Arrange
            var airhostessMock = new Airhostess()
            {
                Id        = 2,
                FirstName = "Airhostess2",
                LastName  = "Airhostess2",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 2,
                Crew      = null
            };

            var airhostessDTOToCreate = new AirhostessDTO()
            {
                FirstName = "",
                LastName  = "Airhostess2",
                BirthDate = new DateTime(1970, 10, 1),
                CrewId    = 2
            };

            var airhostessRepositoryFake = A.Fake <IAirhostessRepository>();

            A.CallTo(() => airhostessRepositoryFake.Create(A <Airhostess> ._)).Returns(airhostessMock);

            var unitOfWorkFake = A.Fake <IUnitOfWork>();

            A.CallTo(() => unitOfWorkFake.Set <Airhostess>()).Returns(airhostessRepositoryFake);

            var airhostessService = new AirhostessService(unitOfWorkFake, AlwaysInValidValidator);

            // Act + Assert
            var exception = Assert.Throws <BadRequestException>(() => airhostessService.Create(airhostessDTOToCreate), "");

            Assert.AreEqual(exception.Message, "Is Invalid");
        }