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); }
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)); }
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"); }
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 }); }