public async void Availability_Returns_CorrectResult(DateTime depDate, DateTime returnDate, string location, int expectedPilotId)
        {
            var options = new DbContextOptionsBuilder <CrewOnDemandContext>()
                          .UseInMemoryDatabase(databaseName: "db_seeded_with_bookings_1")
                          .Options;

            using (var context = new CrewOnDemandContext(options))
            {
                context.Database.EnsureCreated();
                context.Bookings.AddRange(_fakeBookings);
                context.SaveChanges();

                var repository = new CrewOnDemandRepository(context);
                var service    = new CrewOnDemandService(repository, _telemetryClient, new BookingCreatedPublisher(_telemetryClient));
                var sut        = new PilotsController(service);

                var actionResult = await sut.Availability(new AvailabilitySearch
                {
                    DepDateTime    = depDate,
                    ReturnDateTime = returnDate,
                    Location       = location
                });

                Assert.IsType <OkObjectResult>(actionResult.Result);

                var result      = actionResult.Result as OkObjectResult;
                var pilotResult = result.Value as Pilot;

                Assert.Equal(expectedPilotId, pilotResult.Id);
            }
        }
示例#2
0
        public void AddDeleteNewPilotTest_Returns_CreatedResult_And_Pilot_ShoudBe_AddedTo_Database_And_Then_ShouldBe_Deleted()
        {
            // Arrange
            MSSQLContext           context                = new MSSQLContext();
            CrewsRepository        crewsRepository        = new CrewsRepository();
            PilotsRepository       pilotsRepository       = new PilotsRepository();
            StewardessesRepository stewardessesRepository = new StewardessesRepository();
            CrewingUnitOfWork      uow        = new CrewingUnitOfWork(crewsRepository, pilotsRepository, stewardessesRepository, context);
            CrewingService         service    = new CrewingService(uow);
            PilotsController       controller = new PilotsController(mapper.GetDefaultMapper(), service);

            // add act
            var newPilotDTO = new PilotDTO()
            {
                Birth           = new DateTime(1985, 5, 12, 0, 0, 0),
                ExperienceYears = 15,
                Name            = "Grisha",
                Surname         = "Kramer"
            };

            var addResult = controller.AddPilot(newPilotDTO);

            // add assert
            Assert.IsInstanceOf <CreatedResult>(addResult);
            Assert.IsInstanceOf <PilotDTO>((addResult as CreatedResult).Value);

            // delete act
            var addedPilotDTO = (addResult as CreatedResult).Value as PilotDTO;
            var deleteResult  = controller.DeletePilot(addedPilotDTO.Id);

            // delete assert
            Assert.IsInstanceOf <OkResult>(deleteResult);
            Assert.IsInstanceOf <NotFoundObjectResult>(controller.GetPilot(addedPilotDTO.Id));
        }
示例#3
0
        public PilotsControllerTests()
        {
            var            mapper  = MyMapperConfiguration.GetConfiguration().CreateMapper();
            AirportService service = new AirportService(new FakeUnitOfWork());

            _controller = new PilotsController(mapper, service);
        }
        public void PUT_WhenPuttNewItem_ThenServiceReturnOkAndThisObject()
        {
            //Arrange
            var pilot = new PilotDto
            {
                Id         = Guid.NewGuid(),
                FirstName  = "FirstName",
                SecondName = "SecondName",
                Experience = 4,
                BirthDate  = new DateTime(1980, 1, 1)
            };

            var fakeService = A.Fake <IPilotService>();

            A.CallTo(() => fakeService.Update(pilot.Id, pilot)).Returns(pilot);

            var controller = new PilotsController(fakeService);

            //Act
            var response = controller.Post(pilot) as ObjectResult;

            //Assert
            Assert.AreEqual((int)HttpStatusCode.OK, response.StatusCode);
            Assert.IsInstanceOf(typeof(PilotDto), response.Value);
        }
        public void Patch_When_model_is_valid_Then_return_status_code_200()
        {
            var service = A.Fake <IPilotService>();

            A.CallTo(() => service.Update(1, 1));
            var controller = new PilotsController(service);

            var result = controller.Patch(1, 1) as ObjectResult;

            Assert.AreEqual(200, result.StatusCode);
        }
        public void Patch_When_opject_is_not_found_Then_return_status_code_404()
        {
            var service = A.Fake <IPilotService>();

            A.CallTo(() => service.Update(1, 1)).Throws(new NotFoundException());
            var controller = new PilotsController(service);

            var result = controller.Patch(1, 1) as ObjectResult;

            Assert.AreEqual(404, result.StatusCode);
        }
        public void Patch_When_model_is_not_valid_Then_return_status_code_400()
        {
            var service = A.Fake <IPilotService>();

            A.CallTo(() => service.Update(1, 1)).Throws(new FluentValidation.ValidationException(""));
            var controller = new PilotsController(service);

            var result = controller.Patch(1, 1) as ObjectResult;

            Assert.AreEqual(400, result.StatusCode);
        }
        public void Get_When_id_called_Then_return_status_code_200()
        {
            var service = A.Fake <IService <PilotDto> >();

            A.CallTo(() => service.GetAll()).Returns(new List <PilotDto>());
            var controller = new PilotsController(service);

            var result = controller.Get() as ObjectResult;

            Assert.AreEqual(200, result.StatusCode);
        }
        public void Post_When_dto_is_null_Then_return_status_code_400()
        {
            var service = A.Fake <IService <PilotDto> >();

            A.CallTo(() => service.Add(A <PilotDto> .That.IsNull())).Throws(new NullBodyException());
            var      controller = new PilotsController(service);
            PilotDto dto        = null;

            var result = controller.Post(dto) as StatusCodeResult;

            Assert.AreEqual(400, result.StatusCode);
        }
        public void Get_When_get_by_id_called_and_id_dont_exists_Then_return_status_code_404()
        {
            var service = A.Fake <IPilotService>();
            var id      = 23221;

            A.CallTo(() => service.Get(id)).Throws(new Exception());
            var controller = new PilotsController(service);

            var result = controller.Get(id) as ObjectResult;

            Assert.AreEqual(404, result.StatusCode);
        }
        public void Delete_When_id_is_not_exist_Then_return_status_code_404()
        {
            var service    = A.Fake <IService <PilotDto> >();
            var notExistId = 8485;

            A.CallTo(() => service.Delete(notExistId)).Throws(new NotExistException());
            var controller = new PilotsController(service);
            var id         = notExistId;

            var result = controller.Delete(id) as StatusCodeResult;

            Assert.AreEqual(404, result.StatusCode);
        }
        public void Delete_When_id_is_exist_Then_return_status_code_204()
        {
            var service = A.Fake <IService <PilotDto> >();
            var existId = 1;

            A.CallTo(() => service.Delete(existId));
            var controller = new PilotsController(service);
            var id         = existId;

            var result = controller.Delete(id) as StatusCodeResult;

            Assert.AreEqual(204, result.StatusCode);
        }
        public void DELETE_WhenDeleteItem_ThenServiceReturnNoContent()
        {
            //Arrange
            var id = Guid.NewGuid();

            var fakeService = A.Fake <IPilotService>();

            var controller = new PilotsController(fakeService);

            //Act
            var response = controller.Delete(id) as NoContentResult;

            //Assert
            Assert.AreEqual((int)HttpStatusCode.NoContent, response.StatusCode);
        }
        public void GET_WhenGetItem_ThenServiceReturnOkAndThisObject()
        {
            //Arrange
            var id = Guid.NewGuid();

            var fakeService = A.Fake <IPilotService>();

            A.CallTo(() => fakeService.Get(id)).Returns(new PilotDto());

            var controller = new PilotsController(fakeService);

            //Act
            var response = controller.Get(id) as ObjectResult;

            //Assert
            Assert.AreEqual((int)HttpStatusCode.OK, response.StatusCode);
            Assert.IsInstanceOf(typeof(PilotDto), response.Value);
        }
        public void Post_When_model_is_valid_Then_return_status_code_200()
        {
            var service = A.Fake <IPilotService>();
            var pilot   = new PilotDto()
            {
                Birthday   = DateTime.Now.AddYears(-30),
                Experience = 3,
                FirstName  = "Alex",
                LastName   = "Zams"
            };

            A.CallTo(() => service.Create(pilot)).Returns(1);
            var controller = new PilotsController(service);

            var result = controller.Post(pilot) as ObjectResult;

            Assert.AreEqual(200, result.StatusCode);
        }
        public void Post_When_model_is_not_valid_Then_return_status_code_404()
        {
            var service = A.Fake <IPilotService>();
            var pilot   = new PilotDto()
            {
                Birthday   = DateTime.Now,
                Experience = 3,
                FirstName  = "Alex",
                LastName   = "Zams"
            };

            A.CallTo(() => service.Create(pilot)).Throws(new FluentValidation.ValidationException(""));
            var controller = new PilotsController(service);

            var result = controller.Post(pilot) as ObjectResult;

            Assert.AreEqual(400, result.StatusCode);
        }
示例#17
0
        public void Get_WhenListIsNotNull_Returns_Status200()
        {
            var ServiceMock = new Mock <IService <PilotDTO> >();

            ServiceMock.Setup(s => s.GetAllAsync())
            .Returns(Task.FromResult(new List <PilotDTO>()
            {
                new PilotDTO {
                    Id = 1, FirstName = "Sasha", LastName = "Sidorov", Experience = 5
                }
            }.AsEnumerable()));

            PilotsController controller = new PilotsController(ServiceMock.Object);

            OkObjectResult message = (OkObjectResult)controller.Get().Result;

            Assert.Equal(200, message.StatusCode.Value);
        }
        public void Post_When_dto_is_not_valid_Then_return_status_code_400()
        {
            var service     = A.Fake <IService <PilotDto> >();
            var notValidDto = new PilotDto
            {
                FirstName  = "",
                LastName   = "Alexanrovich",
                Birthdate  = new DateTime(2020, 12, 19),
                Experience = -2
            };

            A.CallTo(() => service.Add(notValidDto)).Throws(new ValidationException(""));
            var controller = new PilotsController(service);
            var dto        = notValidDto;

            var result = controller.Post(dto) as StatusCodeResult;

            Assert.AreEqual(400, result.StatusCode);
        }
示例#19
0
 public PilotsControllerTests()
 {
     service    = new FakePilotsSrvice();
     controller = new PilotsController(service);
     testList   = new List <PilotDto>();
     testList.AddRange(
         new List <PilotDto>
     {
         new PilotDto {
             Id = 1, CrewId = 1, FirstName = Guid.NewGuid().ToString(), LastName = "Ivanov", Experience = 3, Birthday = new DateTime(1987, 1, 24)
         },
         new PilotDto {
             Id = 2, CrewId = 2, FirstName = Guid.NewGuid().ToString(), LastName = "Penhjd", Experience = 8, Birthday = new DateTime(1987, 1, 24)
         },
         new PilotDto {
             Id = 3, CrewId = 3, FirstName = Guid.NewGuid().ToString(), LastName = "Maximov", Experience = 6, Birthday = new DateTime(1987, 1, 24)
         }
     });
 }
        public void Post_When_dto_is_valid_Then_return_status_code_201()
        {
            var service  = A.Fake <IService <PilotDto> >();
            var validDto = new PilotDto
            {
                FirstName  = "Sanya",
                LastName   = "Alexanrovich",
                Birthdate  = new DateTime(1989, 12, 19),
                Experience = 10
            };

            A.CallTo(() => service.Add(validDto)).Returns(1);
            var controller = new PilotsController(service);
            var dto        = validDto;

            var result = controller.Post(dto) as ObjectResult;

            Assert.AreEqual(201, result.StatusCode);
        }
        public void Put_When_dto_is_valid_and_id_is_exist_Then_return_status_code_200()
        {
            var service  = A.Fake <IService <PilotDto> >();
            var validDto = new PilotDto
            {
                FirstName  = "Sanya",
                LastName   = "Alexanrovich",
                Birthdate  = new DateTime(1989, 12, 19),
                Experience = 10
            };
            var existId = 1;

            A.CallTo(() => service.Update(existId, validDto));
            var controller = new PilotsController(service);
            var dto        = validDto;
            var id         = existId;

            var result = controller.Put(id, dto) as StatusCodeResult;

            Assert.AreEqual(200, result.StatusCode);
        }
        public async void Availability_Returns_BadRequest_When_DepartureAfterReturn()
        {
            var options = new DbContextOptionsBuilder <CrewOnDemandContext>()
                          .UseInMemoryDatabase(databaseName: "db_empty")
                          .Options;

            using (var context = new CrewOnDemandContext(options))
            {
                var repository = new CrewOnDemandRepository(context);
                var service    = new CrewOnDemandService(repository, _telemetryClient, new BookingCreatedPublisher(_telemetryClient));
                var sut        = new PilotsController(service);

                var actionResult = await sut.Availability(new AvailabilitySearch
                {
                    DepDateTime    = new DateTime(2020, 1, 1),
                    ReturnDateTime = new DateTime(2000, 1, 1),
                    Location       = "munich"
                });

                Assert.IsType <BadRequestObjectResult>(actionResult.Result);
            }
        }
示例#23
0
        public void Put_ModelIsIncorrect_Returns_StatusCode400()
        {
            int Id    = 1;
            var pilot = new PilotDTO {
                Id = 1, FirstName = "", LastName = "Sidorov", Experience = 255
            };
            var ServiceMock = new Mock <IService <PilotDTO> >();

            //when model is incorrect this method will throw ArgumentNullException
            ServiceMock.Setup(s => s.UpdateAsync(Id, pilot)).Throws(new Exception());

            PilotsController controller = new PilotsController(ServiceMock.Object);

            var context = new ValidationContext(pilot, null, null);
            var result  = new List <ValidationResult>();

            var valid = Validator.TryValidateObject(pilot, context, result, false);

            var message = controller.Put(Id, pilot).Result;


            Assert.False(valid);
            Assert.Equal(HttpStatusCode.BadRequest, message.StatusCode);
        }
示例#24
0
        public void Initialize()
        {
            var pilotServiceMock = new Mock <IPilotService>();

            pilotServiceMock.Setup(x => x.GetById(It.Is <int>(i => i != 1 && i != 99)))
            .ReturnsAsync((int id) => new PilotDto
            {
                BirthDate  = new DateTime(2001, 12, 12),
                Experience = 5,
                FirstName  = "Pilot",
                SecondName = "Tester",
                Id         = id
            });

            pilotServiceMock.Setup(x => x.GetById(99)).ReturnsAsync(() => null);

            pilotServiceMock.SetupSequence(x => x.GetById(1))
            .Returns(() => Task.Run(() => new PilotDto
            {
                BirthDate  = new DateTime(2001, 12, 12),
                Experience = 5,
                FirstName  = "Pilot",
                SecondName = "Tester",
                Id         = 5
            }))
            .Returns(() => Task.Run(() => new PilotDto
            {
                BirthDate  = new DateTime(2018, 12, 12),
                Experience = 1,
                FirstName  = "PilotUpdated",
                SecondName = "TesterUpdated",
                Id         = 5
            }));

            pilotServiceMock.Setup(x => x.Insert(It.IsAny <EditablePilotFields>()))
            .ReturnsAsync(() => 1);

            pilotServiceMock.Setup(x => x.Update(1, It.IsAny <EditablePilotFields>())).ReturnsAsync(
                (int id, EditablePilotFields pilotEditableFields) => { return(true); });

            _pilotsController =
                new PilotsController(pilotServiceMock.Object)
            {
                ControllerContext = { HttpContext = new DefaultHttpContext() }
            };

            var mockUrlHelper = new Mock <IUrlHelper>();

            mockUrlHelper
            .Setup(
                x => x.Action(
                    It.IsAny <UrlActionContext>()
                    )
                )
            .Returns("callbackUrl")
            .Verifiable();
            mockUrlHelper.Setup(x => x.Link(It.IsAny <string>(), It.IsAny <object>())).Returns((string url, object obj) =>
            {
                return(url);
            });

            _pilotsController.Url = mockUrlHelper.Object;
        }
 public PilotsControllerTests()
 {
     _serviceMock = new Mock <ICrewOnDemandService>();
     _sut         = new PilotsController(_serviceMock.Object);
 }