public void Create_ShouldReturnView()
        {
            //---------------Set up test pack-------------------
            var repo = Substitute.For<IItemRepository>();
            var controller = new ItemController(repo);
            //---------------Execute Test ----------------------
            var viewResult = controller.Create() as ViewResult;
            //---------------Test Result -----------------------


            Assert.IsNotNull(viewResult);
        }
        public void Index_GivenRepositoryHasItem_ReturnsViewWithListOfItems()
        {
            var repo = Substitute.For<IItemRepository>();
            var dtoList = new List<ItemDto>();
            repo.GetItemList().Returns(dtoList);
            //---------------Set up test pack-------------------
            ItemController controller = new ItemController(repo);
            //---------------Execute Test ----------------------
            ViewResult result = controller.Index() as ViewResult;
            //---------------Test Result -----------------------

            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Model as IEnumerable);

            var map = new ItemMapper();
            var itemList = map.MapItemList(dtoList);

            CollectionAssert.AreEqual((IEnumerable)result.Model, itemList);

        }
        public void Details_GivenItemId_ShouldReturnViewWithItemDetails()
        {
            //---------------Set up test pack-------------------
            var repo = Substitute.For<IItemRepository>();
            var itemDto = new ItemDto {Id = 2, ItemName = "FakeName"};
            
            repo.GetItemById(itemDto.Id).Returns(itemDto);
           
            var controller = new ItemController(repo);
            //---------------Execute Test ----------------------
            const int expectedId = 2;
            var viewResult = controller.Details(expectedId) as ViewResult;
            //---------------Test Result -----------------------
            var resultItem = (ItemViewModel) viewResult?.ViewData.Model;

            Assert.IsNotNull(resultItem);

            var map = new ItemMapper();
            var expectedItem = map.MapItem(itemDto);

            Assert.AreSame(expectedItem.Name, resultItem.Name);

        }
 public void Create_Post_GivenNoItem_ShouldReturnThrowAndTheSameView()
 {
     //---------------Set up test pack-------------------
     var repo = new ItemRepository(Substitute.For<ILendingLibraryContext>());
     var controller = new ItemController(repo);
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     var viewResult = controller.Create(null);
     //---------------Test Result -----------------------
     Assert.IsNotNull(viewResult);
 }
        public void Delete_GivenItemId_ShouldDeleteTheItem()
        {
            //---------------Set up test pack-------------------
            int expectedId = 1;
            var itemDto = new ItemDto();
            itemDto.Id = expectedId;
            var repo = Substitute.For<IItemRepository>();
            var controller = new ItemController(repo);
            repo.GetItemById(expectedId).Returns(itemDto);
            
            //---------------Execute Test ----------------------

            var viewResult = controller.Delete(expectedId) as ViewResult;
            //---------------Test Result -----------------------
            var item = (ItemViewModel) viewResult.ViewData.Model;

            Assert.IsTrue(item.Id.Equals(1));
        }