public void Method_GetWeatherStations_IntergrationTest_ExpectedException()
        {
            //Arrange
            var injectionWeather = new FakeHttpRequestException();
            var injectionCache = new FakeCachedData();
            var weatherObj = new WeatherObservation(injectionWeather);

            //Assert (unexpected parameter value)
            weatherObj.GetWeatherStations(500);
        }
        public void Method_GetWeatherStations_TDD()
        {
            //Arrange
            var injectionWeather = new FakeWeatherObservationRepository();
            var injectionCache = new FakeCachedData();
            var weatherObj = new WeatherObservation(injectionWeather);

            IEnumerable<WeatherStationModel> stations = null;

            Assert.IsNull(stations);

            //Act
            stations = weatherObj.GetWeatherStations(5);

            //Assert
            Assert.IsNotNull(stations);
        }
        public void Method_GetweatherStations_Count()
        {
            //Arrange
            var injectionWeather = new FakeWeatherObservationRepository();
            var injectionCache = new FakeCachedData();
            var weatherObj = new WeatherObservation(injectionWeather);

            var listOfStations = weatherObj.GetWeatherStations(4);

            //Act
            var numberOfStations = listOfStations.Count();

            //Assert
            Assert.AreEqual(numberOfStations, 11);
            //Fails
            //Assert.AreEqual(numberOfStations, 100);
        }
        public void WeatherObservation_Injected_Fake_MethodIs_GetParameterList_Assert_Live_and_Cache()
        {
            //Arrange
            var injectionWeather = new FakeCacheReturnsParameterModel();
            var injectionCache = new FakeCachedData();
            var weatherObj = new WeatherObservation(injectionWeather);

            ////Act
            var parametersNotCached = weatherObj.GetParameters().Select(model => model.Title).FirstOrDefault();

            var parametersFromCache = weatherObj.GetParameters().Select(model => model.Title).FirstOrDefault();

            //Assert
            Assert.AreNotEqual(parametersNotCached, parametersFromCache);
        }