Ejemplo n.º 1
0
        public async Task GivenValidRequestServiceCanCreateNewWeatherForecast()
        {
            const int    year         = 2020;
            const int    month        = 6;
            const int    day          = 1;
            const string summary      = "Balmy";
            const string locationName = "Ann Arbor, MI";
            const double temperatureC = 20;
            const string scale        = "c";

            var date = new DateTime(year, month, day);

            var expectedLocation = new LocationViewModel
            {
                Id        = 1,
                Latitude  = 40,
                Longitude = 80,
                Name      = locationName
            };

            var createWeatherForecastRequest = new CreateWeatherForecastRequest
            {
                Summary     = summary,
                Date        = date,
                Temperature = temperatureC,
                Location    = expectedLocation,
                Scale       = scale
            };

            var expectedResult = new WeatherForecastViewModel
            {
                Id          = 1,
                Summary     = summary,
                Date        = date,
                Temperature = (decimal)temperatureC,
                Scale       = scale,
                Location    = expectedLocation
            };

            var body = ToStringContent(createWeatherForecastRequest);

            var response = await _client.PostAsync("/weatherforecasts", body);

            response.StatusCode.Should().Be((int)HttpStatusCode.OK);
            var responseBody = await response.Content.ReadAsStringAsync();

            var createWeatherForecastResponse = JsonConvert.DeserializeObject <WeatherForecastResponse>(responseBody);

            createWeatherForecastResponse.Should().NotBeNull();
            createWeatherForecastResponse.Forecast.Should().NotBeNull();

            createWeatherForecastResponse.Forecast.Should().BeEquivalentTo(expectedResult);
        }
Ejemplo n.º 2
0
        public async Task <WeatherForecastData> CreateWeatherForecast(LocationData locationData, string date, string summary, decimal temperature)
        {
            var location = _mapper.Map <LocationData, Location>(locationData);
            var request  = new CreateWeatherForecastRequest
            {
                Location    = location,
                Date        = date,
                Summary     = summary,
                Temperature = (double)temperature
            };

            var response = await _client.CreateWeatherForecastAsync(request);

            return(_mapper.Map <WeatherForecast, WeatherForecastData>(response.WeatherForecast));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> CreateWeatherForecast(CreateWeatherForecastRequest request)
        {
            var location    = _mapper.Map <LocationViewModel, Location>(request.Location);
            var date        = request.Date;
            var summary     = request.Summary;
            var temperature = (decimal)request.Temperature;
            var scale       = request.Scale;

            var result = await _weatherForecastService.CreateWeatherForecast(location, date, temperature, scale, summary);

            var viewModel = _mapper.Map <WeatherForecast, WeatherForecastViewModel>(result);

            var response = new WeatherForecastResponse
            {
                Forecast = viewModel
            };

            return(Ok(response));
        }
        public async Task CanCreateWeatherForecast()
        {
            var request = new CreateWeatherForecastRequest
            {
                Summary  = "test",
                Location = new Location
                {
                    Id        = 1,
                    Latitude  = 40,
                    Longitude = 80,
                    Name      = "Test"
                },
                Date        = "6/1/2020",
                Temperature = 20
            };

            var response = await _client.Instance.CreateWeatherForecastAsync(request);

            response.Should().BeOfType <CreateWeatherForecastResponse>();
            response.WeatherForecast.Summary.Should().Be("test");
        }
Ejemplo n.º 5
0
        public override async Task <CreateWeatherForecastResponse> CreateWeatherForecast(CreateWeatherForecastRequest request, ServerCallContext context)
        {
            var locationId = request.Location.Id;
            var date       = request.Date;

            if (locationId <= 0)
            {
                const string error = "Location id must be a positive integer";
                throw new RpcException(new Status(StatusCode.InvalidArgument, error));
            }

            if (string.IsNullOrEmpty(date))
            {
                const string error = "date cannot be null or empty.";
                throw new RpcException(new Status(StatusCode.InvalidArgument, error));
            }

            var locationStoredData = _mapper.Map <Location, LocationStoredData>(request.Location);

            var forecast = await _repository.CreateWeatherForecast(locationStoredData, date, request.Summary, request.Temperature);

            var result = _mapper.Map <WeatherForecastStoredData, WeatherForecast>(forecast);

            return(new CreateWeatherForecastResponse
            {
                WeatherForecast = result
            });
        }