public void ValidateDate(string dateTime, int errorCount)
        {
            //Arrange
            var forecast = WeatherForecastBuilder.Builder().WithDate(DateTime.Parse(dateTime)).Build();
            var sut      = new WeatherForecastValidator();

            //Act
            var validationResult = sut.Validate(forecast);

            //Assert
            validationResult.Should().HaveCount(errorCount);
        }
        public void SaveTest()
        {
            //Arrange
            var entity = WeatherForecastBuilder.Builder().Build();
            var sut    = new WeatherForecastPost(_weatherforecastRepository.Object, _validator.Object);

            //Act
            sut.Save(entity);

            //Assert
            _weatherforecastRepository.Verify(x => x.Save(It.IsAny <WeatherForecast>()), Times.Once);
            _validator.Verify(x => x.ThrowIfInvalid(It.IsAny <WeatherForecast>()), Times.Once);
        }
        public async Task <Models.WeatherForecast> GetResult(string userId, string remoteIpAddress, bool force)
        {
            var weatherForecastBuilder = new WeatherForecastBuilder();
            var result = await weatherForecastBuilder.GetWeatherForecastCache(remoteIpAddress, force);

            var weatherForecastRepository = new WeatherForecastRepository();
            var userEntry = new WeatherForecastData
            {
                UserId = userId,
                City   = result.City
            };

            await weatherForecastRepository.InsertUserHistory(userEntry);

            return(result);
        }