Esempio n. 1
0
        public async Task <IActionResult> Get([FromQuery] GrandPrixesResourceParameters grandPrixesResourceParameters)
        {
            _logger.LogInformation("API ENTRY: Inside get all grand prixes API call.");
            var grandPrixes = await _grandPrixesService.GetGrandPrixes(grandPrixesResourceParameters);

            return(Ok(grandPrixes));
        }
Esempio n. 2
0
        public async Task <IEnumerable <GrandPrixDto> > GetGrandPrixes(GrandPrixesResourceParameters grandPrixesResourceParameters)
        {
            try
            {
                _logger.LogInformation(LoggingEvents.ListItems, "Get all Grands Prix with filter", null);

                if (grandPrixesResourceParameters == null)
                {
                    throw new ArgumentNullException(nameof(grandPrixesResourceParameters));
                }

                if (string.IsNullOrWhiteSpace(grandPrixesResourceParameters.Country) &&
                    string.IsNullOrWhiteSpace(grandPrixesResourceParameters.Year))
                {
                    return(await GetGrandPrixes());
                }

                IEnumerable <GrandPrix> grandPrixes = Enumerable.Empty <GrandPrix>();
                TextInfo textInfo = new CultureInfo("en-GB", false).TextInfo;

                if (!string.IsNullOrWhiteSpace(grandPrixesResourceParameters.Country))
                {
                    _logger.LogInformation(LoggingEvents.ListItems, "Get all Grands Prix with country filter", null);

                    var countryFilter = grandPrixesResourceParameters.Country.Trim();
                    grandPrixes = await _grandPrixesRepository.GetByCountry(textInfo.ToTitleCase(countryFilter));
                }

                if (!string.IsNullOrWhiteSpace(grandPrixesResourceParameters.Year))
                {
                    _logger.LogInformation(LoggingEvents.ListItems, "Get all Grands Prix with year filter", null);

                    var yearFilter = grandPrixesResourceParameters.Year.Trim();
                    grandPrixes = await _grandPrixesRepository.GetByYear(Int32.Parse(yearFilter));
                }

                if (grandPrixes.Count() == 0)
                {
                    _logger.LogInformation(LoggingEvents.GetItem, "No Grands Prixes found", null);
                    return(Enumerable.Empty <GrandPrixDto>());
                }

                return(await GetGrandPrixDrivers(grandPrixes));
            }
            catch (Exception ex)
            {
                _logger.LogError(LoggingEvents.ListItems, ex, ex.Message, null);
                throw;
            }
        }
        public async void GrandPrixesController_GetAll_Valid()
        {
            // Arrange
            var mockGrandPrix = MockGrandPrixData.GetAllModelListAsync();
            GrandPrixesResourceParameters parameters = new GrandPrixesResourceParameters {
            };
            var mockGrandPrixService = new MockGrandPrixService().MockGetAll(mockGrandPrix);
            var mockLogging          = new Mock <ILogger <GrandPrixesController> >();
            var controller           = new GrandPrixesController(mockGrandPrixService.Object, mockLogging.Object);

            // Act
            var result = await controller.Get(parameters);

            // Assert
            Assert.IsAssignableFrom <IActionResult>(result);
            mockGrandPrixService.VerifyGetAll(Times.Once());
        }
        public async void GrandPrixesController_GetAll_Empty()
        {
            // Arrange
            var mockGrandPrix = MockGrandPrixData.GetEmptyModelListAsync();
            GrandPrixesResourceParameters parameters = new GrandPrixesResourceParameters {
            };
            var mockGrandPrixService = new MockGrandPrixService().MockGetAll(mockGrandPrix);
            var mockLogging          = new Mock <ILogger <GrandPrixesController> >();
            var controller           = new GrandPrixesController(mockGrandPrixService.Object, mockLogging.Object);

            // Act
            var result = await controller.Get(parameters);

            // Assert
            var okResult  = result.Should().BeOfType <OkObjectResult>().Subject;
            var GrandPrix = okResult.Value.Should().BeAssignableTo <IEnumerable <GrandPrixDto> >().Subject;

            GrandPrix.Count().Should().Be(0);
            mockGrandPrixService.VerifyGetAll(Times.Once());
        }