public void Dogs_Sorted_Correctly_Retrieves_SearchViewModel_From_Session_And_Adds_SortBy_And_Resets_PageNumber_To_One()
            {
                const string sortBy = "Date(CreatedOn)";

                var pageableResults = new PageableResults<Dog>() {Data = _dogs};

                var searchRepository = MockRepository.GenerateMock<ISearchAPIFacade>();
                searchRepository.Stub(x => x.GetDogsByBreed(
                  _pageNumber, 25, _selectedBreed, sortBy)).Return(pageableResults);

                var session = SessionStateHelper.FakeHttpContext("http://localhost/test?sortBy=" + sortBy);
                session["SearchViewModel"] = _searchViewModel;

                var httpRequestWrapper = MockRepository.GenerateMock<ICustomHttpRequestWrapper>();
                httpRequestWrapper.Stub(x => x.GetQueryStringValueByKey(QuerystringKeys.SortBy)).Return(sortBy);

                var searchController = new SearchController(searchRepository, session, httpRequestWrapper, _configMgr);

                // act
                searchController.DogsSorted();

                // assert
                var searchViewModelFromSession = (SearchViewModel) session["searchViewModel"];
                Assert.That(searchViewModelFromSession.SelectedBreed, Is.EqualTo(_selectedBreed));
                Assert.That(searchViewModelFromSession.PageNumber, Is.EqualTo(1));
                Assert.That(searchViewModelFromSession.IsNationalSearch, Is.EqualTo(_isNationalSearch));
                Assert.That(searchViewModelFromSession.SortBy, Is.EqualTo(sortBy));
            }
            public void Dogs_Sorted_Redirects_ToHome_Controller_If_Session_Is_Expired()
            {
                const string sortBy = "Date(CreatedOn)";

                var pageableResults = new PageableResults<Dog>() {Data = _dogs};

                var searchRepository = MockRepository.GenerateMock<ISearchAPIFacade>();
                searchRepository.Stub(
                  x => x.GetDogsByBreed(_pageNumber, 25, _selectedBreed, sortBy)).Return(pageableResults);

                var session = SessionStateHelper.FakeHttpContext("http://localhost/test?sortBy=" + sortBy);
                session["searchViewModel"] = null;

                var httpRequestWrapper = MockRepository.GenerateMock<ICustomHttpRequestWrapper>();
                httpRequestWrapper.Stub(
                  x => x.GetQueryStringValueByKey(QuerystringKeys.SortBy)).Return(sortBy);

                var searchController = new SearchController(
                  searchRepository, session, httpRequestWrapper, _configMgr);

                // act
                var result = (RedirectToRouteResult) searchController.DogsSorted();

                // assert
                Assert.That(result.RouteValues["Controller"].Equals("Home"));
                Assert.That(result.RouteValues["Action"].Equals("Index"));
            }