public void ClickForecastLink_ReturnDetailedForecast()
        {
            //Arrange
            var fakeWeather = new List <ParkWeatherModel>()
            {
                new ParkWeatherModel {
                    ParkCode = "RMNP", Day = 2, Forecast = "Sunny", High = 75, Low = 50, TemperatureType = "Fahrenheit (F)"
                },
                new ParkWeatherModel {
                    ParkCode = "RMNP", Day = 6, Forecast = "Cloudy", High = 80, Low = 65, TemperatureType = "Celsius(C)"
                }
            };

            //Mock Session Object
            Mock <HttpSessionStateBase> mockSession = new Mock <HttpSessionStateBase>();

            //Mock Http Context Request for Controller
            Mock <HttpContextBase> mockContext = new Mock <HttpContextBase>();

            //When the Controller calls this.Session, it will get a mock session
            mockContext.Setup(s => s.Session).Returns(mockSession.Object);

            //Mock the dal
            Mock <IWeatherDAL> mockDAL = new Mock <IWeatherDAL>();

            //Set up the mock object
            mockDAL.Setup(w => w.GetAllWeather("RMNP")).Returns(fakeWeather);

            //Create the controller
            WeatherController controller = new WeatherController(mockDAL.Object);

            //Assign the context property on the controller to our mock context which uses our mock session
            controller.ControllerContext = new ControllerContext(mockContext.Object, new RouteData(), controller);

            //Act
            var result = controller.Forecast("RMNP");

            //Assert
            Assert.IsTrue(result is ViewResult);
            var view = result as ViewResult;

            Assert.AreEqual("Forecast", view.ViewName);
            Assert.IsNotNull(view.Model);

            var forecastEntry = view.Model as List <ParkWeatherModel>;

            Assert.AreEqual("RMNP", forecastEntry[0].ParkCode);
        }
        public void Weather_PingReturnsForecastView()
        {
            Mock <IWeatherSqlDAL> mockWeather = new Mock <IWeatherSqlDAL>();


            Mock <HttpContextBase> mockContext = new Mock <HttpContextBase>();

            mockContext.SetupGet(m => m.Session["ParkCode"]).Returns("GND");
            mockContext.SetupGet(m => m.Session["ShowFahrenheit"]).Returns(true);

            var fakePark = new ParkModel()
            {
                ParkCode = "GND",
                ParkName = "GinaNatalieDan"
            };

            var fakeWeather = new WeatherForecastModel();

            fakeWeather.Forecast.Add("fakecloudy");
            fakeWeather.High.Add(78);
            fakeWeather.Low.Add(20);
            fakeWeather.Forecast.Add("fakesnow");
            fakeWeather.High.Add(78);
            fakeWeather.Low.Add(20);
            fakeWeather.Forecast.Add("fakecloudy");
            fakeWeather.High.Add(78);
            fakeWeather.Low.Add(20);
            fakeWeather.Forecast.Add("fakesnow");
            fakeWeather.High.Add(78);
            fakeWeather.Low.Add(20);
            fakeWeather.Forecast.Add("fakesnow");
            fakeWeather.High.Add(78);
            fakeWeather.Low.Add(20);

            mockWeather.Setup(m => m.GetForecast("GND")).Returns(fakeWeather);

            WeatherController controller = new WeatherController(mockWeather.Object);

            controller.ControllerContext = new ControllerContext(mockContext.Object, new System.Web.Routing.RouteData(), controller);
            var result = controller.Forecast("GND");

            Assert.IsTrue(result is ViewResult);
            var viewResult = result as ViewResult;

            Assert.AreEqual("Forecast", viewResult.ViewName);
        }