public void CacheMemory_Methods_SetCache_And_GetCache_For_Parameter()
        {
            //Arrange
            var fetchFile = new WeatherObservation();

            //Act (USE DEBUGER TO BE SURE THE SECOND GETPARAMETERS FETCHES FROM CACHE)
            var firstFetch = fetchFile.GetParameters();
            var secondFetche = fetchFile.GetParameters();

            //Assert
            Assert.AreSame(firstFetch, secondFetche);
        }
        public void GetParameterList_ParameterExpectedException_FakeHttpRequestException()
        {
            //Arrange
            var injection = new FakesRepositories.FakeData.FakeHttpRequestException();

            var weatherObj = new WeatherObservation(injection);

            //Assert
            weatherObj.GetParameters();
        }
        public void Injected_Fake_MethodIs_GetParameterList_ListOfValues_Count()
        {
            //Arrange
            var injectionWeather = new FakeWeatherObservationRepository();
            var weatherObj = new WeatherObservation(injectionWeather);

            var listOfValues = weatherObj.GetParameters();

            //Act
            var countValues = listOfValues.Count();

            //Assert
            Assert.AreEqual(20, countValues);
        }
        public void Injected_Fake_MethodIs_GetParameterList_ListOfValues_testAllKeyValues()
        {
            //Arrange
            var injectionWeather = new FakeWeatherObservationRepository();
            var weatherObj = new WeatherObservation(injectionWeather);

            var parameters = weatherObj.GetParameters().OrderBy(s=>s.Key);
            int count = 1;

            //Act &
            //Assert
            foreach (var parameter in parameters)
            {
                var temp = parameter.Key;
                Assert.AreEqual(temp, count++);
            }
        }
        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);
        }