Exemplo n.º 1
0
        public void Delete_GET_passes_correct_book_and_searchSortPageParams_to_view()
        {
            // Arrange
            string searchString           = "H3J";
            string sortCol                = "name";
            string nextOrder              = SearchSortPageViewModel.SORT_ORDER_ASC;
            string currentOrder           = SearchSortPageViewModel.SORT_ORDER_ASC;
            int    page                   = 1;
            int    pageSize               = 5;
            int    id                     = 1;
            SearchSortPageViewModel sspVM = new SearchSortPageViewModel(searchString, sortCol, currentOrder, nextOrder, page, pageSize);
            RecordViewModel         rVM   = new RecordViewModel(sspVM, id);


            // Act
            ViewResult      result   = controller.Delete(rVM) as ViewResult;
            DeleteViewModel deleteVM = (DeleteViewModel)result.ViewData.Model;

            // Assert
            Assert.IsNotNull(result);

            Assert.AreEqual(id, deleteVM.Book.ID);
            Assert.AreEqual("BBB", deleteVM.Book.Name);

            Assert.IsNotNull(deleteVM.SearchSortPageParams);
            Assert.AreEqual(searchString, deleteVM.SearchSortPageParams.SearchString);
            Assert.AreEqual(sortCol, deleteVM.SearchSortPageParams.SortCol);
            Assert.AreEqual(nextOrder, deleteVM.SearchSortPageParams.NextOrder);
            Assert.AreEqual(page, deleteVM.SearchSortPageParams.Page);
            Assert.AreEqual(pageSize, deleteVM.SearchSortPageParams.PageSize);
        }
Exemplo n.º 2
0
        public void DeleteConfirm_calls_EF_to_delete_record_with_correct_id()
        {
            // Arrange
            string searchString           = "H3J";
            string sortCol                = "name";
            string nextOrder              = SearchSortPageViewModel.SORT_ORDER_ASC;
            string currentOrder           = SearchSortPageViewModel.SORT_ORDER_ASC;
            int    page                   = 1;
            int    pageSize               = 5;
            int    id                     = 1; // a record id which exists
            SearchSortPageViewModel sspVM = new SearchSortPageViewModel(searchString, sortCol, currentOrder, nextOrder, page, pageSize);
            RecordViewModel         rVM   = new RecordViewModel(sspVM, id);

            // Act
            RedirectToRouteResult result = controller.DeleteConfirmed(rVM) as RedirectToRouteResult;

            // Assert
            mockSetBooks.Verify(m => m.Remove(It.IsAny <Book>()), Times.Once());
            mockContext.Verify(m => m.SaveChanges(), Times.Once());

            Assert.IsInstanceOf <RedirectToRouteResult>(result);

            Assert.AreEqual(result.RouteValues["Controller"], "Books");
            Assert.AreEqual(result.RouteValues["Action"], "Index");

            Assert.AreEqual(result.RouteValues["searchString"], searchString);
            Assert.AreEqual(result.RouteValues["sortCol"], sortCol);
            Assert.AreEqual(result.RouteValues["nextOrder"], nextOrder);
            Assert.AreEqual(result.RouteValues["page"], page);
            Assert.AreEqual(result.RouteValues["pageSize"], pageSize);

            // How can we test the parameters that it passes to the redirect to check for proper SearchSortPage values?
        }
Exemplo n.º 3
0
        public void Create_with_no_args_returns_selectlist_of_books()
        {
            // Arrange
            string searchString           = "H3J";
            string sortCol                = "name";
            string nextOrder              = SearchSortPageViewModel.SORT_ORDER_ASC;
            string currentOrder           = SearchSortPageViewModel.SORT_ORDER_ASC;
            int    page                   = 1;
            int    pageSize               = 5;
            SearchSortPageViewModel sspVM = new SearchSortPageViewModel(searchString, sortCol, currentOrder, nextOrder, page, pageSize);

            // Act
            //var result = controller.Create();
            ViewResult result = controller.Create(sspVM) as ViewResult;

            // Assert
            Assert.IsNotNull(result);
            Assert.IsInstanceOf <SelectList>(result.ViewBag.PublisherID);
            //Assert.AreEqual(result.ViewBag.PublisherID.Count(), 4);
            //Assert.AreEqual(result.ViewBag.PublisherID.Items.Count(), 4);
            //Assert.IsInstanceOf<Publisher>(result.ViewBag.PublisherID.Items);
            // How can I tell if the items in the selectList are publishers?
            foreach (var item in result.ViewBag.PublisherID.Items)
            {
                Console.WriteLine(item);
            }
            //Console.WriteLine(typeof(result.ViewBag.PublisherID.Items));
        }
Exemplo n.º 4
0
        // GET: Books/Books/Create
        public ActionResult Create(SearchSortPageViewModel searchSortPageParams)
        {
            IEnumerable <SelectListItem> publishers;
            CreateViewModel cvm;

            publishers = new SelectList(db.Publishers.OrderBy(s => s.Name), "ID", "Name");
            cvm        = new CreateViewModel(searchSortPageParams, null, publishers);
            return(View(cvm));
        }
Exemplo n.º 5
0
 public IndexViewModel()
 {
     SearchSortPageParams = new SearchSortPageViewModel();
     Books = null;
     PublisherRouteParams    = null;
     NameRouteParams         = null;
     CreatedDateRouteParams  = null;
     ModifiedDateRouteParams = null;
     CreateLinkRouteParams   = null;
 }
Exemplo n.º 6
0
 public IndexViewModel(
     SearchSortPageViewModel searchSortPageParams,
     PagedList.IPagedList <Book> books,
     SearchSortPageViewModel publisherRouteParams,
     SearchSortPageViewModel nameRouteParams,
     SearchSortPageViewModel createdDateRouteParams,
     SearchSortPageViewModel modifiedDateRouteParams,
     SearchSortPageViewModel createLinkRouteParams
     )
 {
     SearchSortPageParams = searchSortPageParams;
     Books = books;
     PublisherRouteParams    = publisherRouteParams;
     NameRouteParams         = nameRouteParams;
     CreatedDateRouteParams  = createdDateRouteParams;
     ModifiedDateRouteParams = modifiedDateRouteParams;
     CreateLinkRouteParams   = createLinkRouteParams;
 }
Exemplo n.º 7
0
        public void DeleteConfirmed_returns_HttpNotFoundResult_on_record_which_doesnt_exist()
        {
            // Arrange
            string searchString           = "H3J";
            string sortCol                = "name";
            string nextOrder              = SearchSortPageViewModel.SORT_ORDER_ASC;
            string currentOrder           = SearchSortPageViewModel.SORT_ORDER_ASC;
            int    page                   = 1;
            int    pageSize               = 5;
            int    id                     = -1; // a record id which doesn't exist
            SearchSortPageViewModel sspVM = new SearchSortPageViewModel(searchString, sortCol, currentOrder, nextOrder, page, pageSize);
            RecordViewModel         rVM   = new RecordViewModel(sspVM, id);

            // Act
            var result = controller.DeleteConfirmed(rVM);

            // Assert
            Assert.IsInstanceOf <HttpNotFoundResult>(result);
        }
Exemplo n.º 8
0
        public void Delete_returns_DeleteInputModel_on_record_which_exists()
        {
            // Arrange
            string searchString           = "H3J";
            string sortCol                = "name";
            string nextOrder              = SearchSortPageViewModel.SORT_ORDER_ASC;
            string currentOrder           = SearchSortPageViewModel.SORT_ORDER_ASC;
            int    page                   = 1;
            int    pageSize               = 5;
            int    id                     = 1; // a record id which exists
            SearchSortPageViewModel sspVM = new SearchSortPageViewModel(searchString, sortCol, currentOrder, nextOrder, page, pageSize);
            RecordViewModel         rVM   = new RecordViewModel(sspVM, id);

            // Act
            ViewResult      result   = controller.Delete(rVM) as ViewResult;
            DeleteViewModel deleteVM = (DeleteViewModel)result.ViewData.Model;

            // Assert
            Assert.IsInstanceOf <DeleteViewModel>(deleteVM);
        }
Exemplo n.º 9
0
        public void List_with_search_params_for_string_which_does_not_exist()
        {
            // Arrange
            string searchString           = "H3J";
            string sortCol                = "name";
            string nextOrder              = SearchSortPageViewModel.SORT_ORDER_ASC;
            string currentOrder           = SearchSortPageViewModel.SORT_ORDER_ASC;
            int    page                   = 1;
            int    pageSize               = 5;
            SearchSortPageViewModel sspVM = new SearchSortPageViewModel(searchString, sortCol, currentOrder, nextOrder, page, pageSize);


            // Act
            ViewResult     result  = controller.Index(sspVM) as ViewResult;
            IndexViewModel indexVM = (IndexViewModel)result.ViewData.Model;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(0, indexVM.Books.Count);
        }
Exemplo n.º 10
0
        public void List_with_no_params_display_first_page_sorted_by_name_desc()
        {
            // Arrange
            string searchString           = "";
            string sortCol                = "name";
            string nextOrder              = SearchSortPageViewModel.SORT_ORDER_DESC;
            string currentOrder           = SearchSortPageViewModel.SORT_ORDER_ASC;
            int    page                   = 1;
            int    pageSize               = 5;
            SearchSortPageViewModel sspVM = new SearchSortPageViewModel(searchString, sortCol, currentOrder, nextOrder, page, pageSize);


            // Act
            ViewResult     result  = controller.Index(sspVM) as ViewResult;
            IndexViewModel indexVM = (IndexViewModel)result.ViewData.Model;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(5, indexVM.Books.Count);
            Assert.AreEqual("ZZZ", indexVM.Books[0].Name);
        }
Exemplo n.º 11
0
        public void List_with_no_params_display_first_page_where_hacker_sets_too_large_page_params()
        {
            // Arrange
            string searchString           = "";
            string sortCol                = "name";
            string nextOrder              = SearchSortPageViewModel.SORT_ORDER_ASC;
            string currentOrder           = SearchSortPageViewModel.SORT_ORDER_ASC;
            int    page                   = 999999999;
            int    pageSize               = 999999999;
            SearchSortPageViewModel sspVM = new SearchSortPageViewModel(searchString, sortCol, currentOrder, nextOrder, page, pageSize);


            // Act
            ViewResult     result  = controller.Index(sspVM) as ViewResult;
            IndexViewModel indexVM = (IndexViewModel)result.ViewData.Model;

            // Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(3, indexVM.Books.Count);
            Assert.AreEqual("AAA", indexVM.Books[0].Name);
            Assert.AreEqual("CCC", indexVM.Books[3 - 1].Name);
        }
Exemplo n.º 12
0
 public CreateInputModel(SearchSortPageViewModel searchSortPageParams, Book book)
 {
     SearchSortPageParams = searchSortPageParams;
     Book = book;
 }
Exemplo n.º 13
0
 public CreateInputModel()
 {
     SearchSortPageParams = new SearchSortPageViewModel();
     Book = null;
 }
Exemplo n.º 14
0
 public CreateViewModel(SearchSortPageViewModel searchSortPageParams, Book book, IEnumerable <SelectListItem> publishers)
 {
     SearchSortPageParams = searchSortPageParams;
     Book       = book;
     Publishers = publishers;
 }
Exemplo n.º 15
0
 public CreateViewModel()
 {
     SearchSortPageParams = new SearchSortPageViewModel();
     Book       = null;
     Publishers = null;
 }
Exemplo n.º 16
0
 public DeleteViewModel(SearchSortPageViewModel searchSortPageParams, Book book)
 {
     SearchSortPageParams = searchSortPageParams;
     Book = book;
 }
Exemplo n.º 17
0
 public DeleteViewModel()
 {
     SearchSortPageParams = new SearchSortPageViewModel();
     Book = null;
 }
Exemplo n.º 18
0
        // GET: Books/Books
        public ActionResult Index(SearchSortPageViewModel vm)
        {
            if (vm.ToggleOrder)
            {
                vm.CurrentOrder = vm.NextOrder;
                vm.NextOrder    = (vm.NextOrder == SearchSortPageViewModel.SORT_ORDER_ASC) ? SearchSortPageViewModel.SORT_ORDER_DESC : SearchSortPageViewModel.SORT_ORDER_ASC;
            }

            SearchSortPageViewModel publisherRouteParams, nameRouteParams, createdDateRouteParams, modifiedDateRouteParams;
            SearchSortPageViewModel createLinkRouteParams;

            publisherRouteParams = new SearchSortPageViewModel();
            publisherRouteParams.SearchString = vm.SearchString;
            publisherRouteParams.SortCol      = "publisher";
            nameRouteParams = new SearchSortPageViewModel();
            nameRouteParams.SearchString         = vm.SearchString;
            nameRouteParams.SortCol              = "name";
            createdDateRouteParams               = new SearchSortPageViewModel();
            createdDateRouteParams.SearchString  = vm.SearchString;
            createdDateRouteParams.SortCol       = "createdDate";
            modifiedDateRouteParams              = new SearchSortPageViewModel();
            modifiedDateRouteParams.SearchString = vm.SearchString;
            modifiedDateRouteParams.SortCol      = "modifiedDate";

            IQueryable <Book> books = from b in db.Books select b; //db.Books.Include(b => b.Publisher); // the "Include" messes up mocking DbSet with mock.

            if (!String.IsNullOrEmpty(vm.SearchString))
            {
                books = books.Where(s => s.Name.ToUpper().Contains(vm.SearchString.ToUpper()));
            }

            switch (vm.SortCol)
            {
            case "name":
                if (vm.CurrentOrder == SearchSortPageViewModel.SORT_ORDER_DESC)
                {
                    books = books.OrderByDescending(b => b.Name);
                }
                else
                {
                    books = books.OrderBy(b => b.Name);
                }

                nameRouteParams             = (SearchSortPageViewModel)vm.ShallowCopy();
                nameRouteParams.ToggleOrder = true;
                break;

            case "createdDate":
                if (vm.CurrentOrder == SearchSortPageViewModel.SORT_ORDER_DESC)
                {
                    books = books.OrderByDescending(b => b.CreatedDate);
                }
                else
                {
                    books = books.OrderBy(b => b.CreatedDate);
                }
                createdDateRouteParams             = (SearchSortPageViewModel)vm.ShallowCopy();
                createdDateRouteParams.ToggleOrder = true;
                break;

            case "modifiedDate":
                if (vm.CurrentOrder == SearchSortPageViewModel.SORT_ORDER_DESC)
                {
                    books = books.OrderByDescending(b => b.ModifiedDate);
                }
                else
                {
                    books = books.OrderBy(b => b.ModifiedDate);
                }
                modifiedDateRouteParams             = (SearchSortPageViewModel)vm.ShallowCopy();
                modifiedDateRouteParams.ToggleOrder = true;
                break;

            case "publisher":
                if (vm.CurrentOrder == SearchSortPageViewModel.SORT_ORDER_DESC)
                {
                    books = books.OrderByDescending(b => b.Publisher.Name);
                }
                else
                {
                    books = books.OrderBy(b => b.Publisher.Name);
                }
                publisherRouteParams             = (SearchSortPageViewModel)vm.ShallowCopy();
                publisherRouteParams.ToggleOrder = true;
                break;

            default:
                books = books.OrderBy(b => b.Name);
                break;
            }

            createLinkRouteParams             = (SearchSortPageViewModel)vm.ShallowCopy();
            createLinkRouteParams.ToggleOrder = false;

            IndexViewModel Ivm = new IndexViewModel(
                vm,
                books.ToPagedList(vm.Page, vm.PageSize),
                publisherRouteParams,
                nameRouteParams,
                createdDateRouteParams,
                modifiedDateRouteParams,
                createLinkRouteParams
                );

            return(View(Ivm));
        }