예제 #1
0
        public async Task GetTariffAsync__An_unexpected_internal_error_occurred__Should_throw_Exception()
        {
            _tariffDbServiceMock.Setup(x => x.GetAsync(It.IsAny <string>())).ThrowsAsync(new Exception());
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.GetTariffAsync("1");

            await result.Should().ThrowExactlyAsync <Exception>();
        }
예제 #2
0
        public async Task DeleteTariffAsync__Argument_id_is_null_or_empty__Should_return_400BadRequest_response([Values(null, "")] string id)
        {
            _tariffDbServiceMock.Setup(x => x.DeleteAsync(id)).ThrowsAsync(new ArgumentException());
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.DeleteTariffAsync(id);

            (result as ObjectResult).StatusCode.Should().Be(400);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
예제 #3
0
        public async Task GetCurrentTariffAsync__Element_not_found__Should_return_404NotFound_response_with_error()
        {
            _tariffDbServiceMock.Setup(x => x.GetAllAsync()).ThrowsAsync(new InvalidOperationException()).Verifiable();
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.GetCurrentTariffAsync();

            (result as ObjectResult).StatusCode.Should().Be(404);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
예제 #4
0
        public async Task GetTariffAsync__An_internal_error_reffered_to_the_database_occurred__Should_throw_InternalDbServiceException()
        {
            // Example of these errors: database does not exist, table does not exist etc.

            _tariffDbServiceMock.Setup(x => x.GetAsync(It.IsAny <string>())).ThrowsAsync(new InternalDbServiceException());
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.GetTariffAsync("1");

            await result.Should().ThrowExactlyAsync <InternalDbServiceException>();
        }
예제 #5
0
        public async Task UpdateTariffAsync__Argument_id_and_id_property_in_element_to_be_updated_mismatches__Should_return_400BadRequest_response()
        {
            var    controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);
            var    tariffDto  = _tariffDtos[0];
            string id         = tariffDto.Id + "_mismatched_id";

            var result = await controller.UpdateTariffAsync(id, tariffDto);

            (result as ObjectResult).StatusCode.Should().Be(400);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
예제 #6
0
        public async Task GetAllTariffAsync__At_least_one_element_found__Should_return_200OK_response_with_not_empty_IEnumerable()
        {
            _tariffDbServiceMock.Setup(x => x.GetAllAsync()).ReturnsAsync(_tariffs);
            _mapperMock.Setup(x => x.Map <IEnumerable <VisitTariffDto> >(It.IsNotNull <IEnumerable <VisitTariff> >())).Returns(_tariffDtos.AsEnumerable());
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.GetAllTariffsAsync();

            (result as ObjectResult).StatusCode.Should().Be(200);
            (((result as ObjectResult).Value as ResponseWrapper).Data as IEnumerable <VisitTariffDto>).Should().NotBeEmpty();
        }
예제 #7
0
        public async Task DeleteTariffAsync__Delete_succeeded__Should_return_200OK_empty_response()
        {
            var emptyResponse = new ResponseWrapper();

            _tariffDbServiceMock.Setup(x => x.DeleteAsync(It.IsNotNull <string>()));
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.DeleteTariffAsync("123");

            (result as ObjectResult).StatusCode.Should().Be(200);
            ((result as ObjectResult).Value as ResponseWrapper).Should().BeEquivalentTo(emptyResponse);
        }
예제 #8
0
        public async Task UpdateTariffAsync__Argument_id_is_null_or_empty__Should_return_400BadRequest_response([Values(null, "")] string id)
        {
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);
            var tariffDto  = _tariffDtos[0];

            tariffDto.Id = id;

            var result = await controller.UpdateTariffAsync(id, tariffDto);

            (result as ObjectResult).StatusCode.Should().Be(400);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
예제 #9
0
        public async Task AddTariffAsync__An_unexpected_internal_error_occurred__Should_throw_Exception()
        {
            _tariffDbServiceMock.Setup(x => x.AddAsync(It.IsAny <VisitTariff>())).ThrowsAsync(new Exception());
            _tariffDbServiceMock.Setup(x => x.RestrictedAddAsync(It.IsAny <VisitTariff>())).ThrowsAsync(new Exception());
            var tariff = new VisitTariffDto {
                Id = "1", Name = "test"
            };
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            Func <Task> result = async() => await controller.AddTariffAsync(tariff);

            await result.Should().ThrowExactlyAsync <Exception>();
        }
예제 #10
0
        public async Task GetCurrentTariffAsync__Data_retrieve_succeeded__Should_return_200Ok_response_with_data()
        {
            _tariffDbServiceMock.Setup(x => x.GetAllAsync()).ReturnsAsync(_tariffs.AsEnumerable()).Verifiable();
            _mapperMock.Setup(x => x.Map <VisitTariffDto>(It.IsNotNull <VisitTariff>())).Returns(new VisitTariffDto {
                Id = "1", Name = "mapped from tariff to DTO"
            });
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.GetCurrentTariffAsync();

            (result as ObjectResult).StatusCode.Should().Be(200);
            ((result as ObjectResult).Value as ResponseWrapper).Data.Should().NotBeNull();
        }
예제 #11
0
        public async Task AddTariffAsync__Already_there_is_the_same_element_in_database__Should_return_400BadRequest_response()
        {
            var tariffDto = CreateSightseeingTariffDto(_tariffs[0]);

            _mapperMock.Setup(x => x.Map <VisitTariff>(tariffDto)).Returns(_tariffs[0]);
            _tariffDbServiceMock.Setup(x => x.AddAsync(It.IsNotNull <VisitTariff>())).ThrowsAsync(new InvalidOperationException());
            _tariffDbServiceMock.Setup(x => x.RestrictedAddAsync(It.IsNotNull <VisitTariff>())).ThrowsAsync(new InvalidOperationException());
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.AddTariffAsync(tariffDto);

            (result as ObjectResult).StatusCode.Should().Be(400);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
예제 #12
0
        public async Task GetTariffAsync__Data_retrieve_succeeded__Should_return_200Ok_response_with_data()
        {
            string id = "15891fb0-faec-43c6-9e83-04a4a17c3660";

            _tariffDbServiceMock.Setup(x => x.GetAsync(It.IsNotNull <string>())).ReturnsAsync(_validTariff);
            _mapperMock.Setup(x => x.Map <VisitTariffDto>(It.IsNotNull <VisitTariff>())).Returns(new VisitTariffDto {
                Id = id, Name = "new mapped sightseeing tariff"
            });
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.GetTariffAsync(id);

            (result as ObjectResult).StatusCode.Should().Be(200);
            ((result as ObjectResult).Value as ResponseWrapper).Data.Should().NotBeNull();
        }
예제 #13
0
        public async Task UpdateTariffAsync__Element_not_found__Should_return_404NotFound_response_with_error()
        {
            var validTariff = new VisitTariff {
                Id = "12312321321321", Name = "Valid name"
            };
            var validTariffDto = CreateSightseeingTariffDto(validTariff);

            _mapperMock.Setup(x => x.Map <VisitTariff>(It.IsNotNull <VisitTariffDto>())).Returns(validTariff);
            _mapperMock.Setup(x => x.Map <VisitTariffDto>(It.IsNotNull <VisitTariff>())).Returns(validTariffDto);
            _tariffDbServiceMock.Setup(x => x.UpdateAsync(It.IsNotNull <VisitTariff>())).ThrowsAsync(new InvalidOperationException());
            _tariffDbServiceMock.Setup(x => x.RestrictedUpdateAsync(It.IsNotNull <VisitTariff>())).ThrowsAsync(new InvalidOperationException());
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.UpdateTariffAsync(validTariffDto.Id, validTariffDto);

            (result as ObjectResult).StatusCode.Should().Be(404);
            ((result as ObjectResult).Value as ResponseWrapper).Error.Should().NotBeNull();
        }
예제 #14
0
        public async Task AddTariffAsync__Add_succeeded__Should_return_200OK_response_with_added_element()
        {
            var validTariff = new VisitTariff {
                Id = "12312321321321", Name = "Valid name"
            };
            var validTariffDto = CreateSightseeingTariffDto(validTariff);

            _mapperMock.Setup(x => x.Map <VisitTariff>(It.IsNotNull <VisitTariffDto>())).Returns(validTariff);
            _mapperMock.Setup(x => x.Map <VisitTariffDto>(It.IsNotNull <VisitTariff>())).Returns(validTariffDto);
            _tariffDbServiceMock.Setup(x => x.AddAsync(validTariff)).ReturnsAsync(validTariff);
            _tariffDbServiceMock.Setup(x => x.RestrictedAddAsync(validTariff)).ReturnsAsync(validTariff);
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.AddTariffAsync(validTariffDto);

            (result as ObjectResult).StatusCode.Should().Be(201);
            ((result as ObjectResult).Value as ResponseWrapper).Data.Should().NotBeNull();
        }
예제 #15
0
        public async Task GetCurrentTariffAsync__Some_tariffs_have_been_edited_since_the_creation_and_are_the_most_current__Should_return_200Ok_response_with_the_most_current_tariff()
        {
            // NOTE: Some tariffs may have been edited after creation, but there are other newer, unedited tariffs.
            // Regardless of that the latest updated tariff is the most current even if there are other, newer creted, but not updated (or updated latter) tariffs.
            // Example :
            //          tariff 1: created at: 12.12.2018, updated at: 12.6.2019  --> THIS IS THE MOST CURRENT TARIFF
            //          tariff 2: created at: 23.3.2019,  updated at: null       --> THIRD
            //          tariff 3: created at: 23.12.2015, updated at 11.6.2019   --> SECOND

            // _tariffs[1] is the most current in this test case.
            var currentTariffDto = CreateSightseeingTariffDto(_tariffs[1]);

            _tariffDbServiceMock.Setup(x => x.GetAllAsync()).ReturnsAsync(_tariffs.AsEnumerable()).Verifiable();
            _mapperMock.Setup(x => x.Map <VisitTariffDto>(It.IsNotNull <VisitTariff>())).Returns(currentTariffDto);
            var controller = new VisitTariffsController(_tariffDbServiceMock.Object, _logger, _mapperMock.Object);

            var result = await controller.GetCurrentTariffAsync();

            (result as ObjectResult).StatusCode.Should().Be(200);
            ((result as ObjectResult).Value as ResponseWrapper).Data.Should().BeEquivalentTo(currentTariffDto);
        }