public ActionResult Edit(ItemViewModel viewModel)
        {
            try
            {
                var item = _mappingEngine.Map<Item>(viewModel);
                _itemRepository.Save(item);

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
        public void Details_GivenItemId_ShouldReturnViewWithMapModel()
        {
            //---------------Set up test pack-------------------
            var item = new ItemBuilder().WithRandomProps().Build();
            var id = item.Id;

            var repository = Substitute.For<IItemRepository>();
   
            repository.Get(id).Returns(item);
            var mappingEngine = Substitute.For<IMappingEngine>();
            var itemViewModels = new ItemViewModel {Id= RandomValueGen.GetRandomInt()};
            mappingEngine.Map< ItemViewModel > (item).Returns(itemViewModels);
           var controller = CreateBuilder()
                .WithItemRepository(repository)
                .WithMappingEngine(mappingEngine)
                .Build();
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var result = controller.Details(id)as ViewResult;
            //---------------Test Result -----------------------
            Assert.IsNotNull(result);
            var model = result.Model as ItemViewModel;
            Assert.IsNotNull(model);
        }
 public ActionResult Create(ItemViewModel viewModel)
 {
     var borrower = _mappingEngine.Map<Item>(viewModel);
    _itemRepository.Save(borrower);
     return RedirectToAction("Index");
 }
 // GET: Item/Create
 public ActionResult Create()
 {
     var viewModel = new ItemViewModel();
     return View(viewModel);
 }
        public void Delete_GivenExceptionWhenRepositoryDeleteIsCalled_ShouldReturnView()
        {
            //---------------Set up test pack-------------------
            var itemViewModel = new ItemViewModel();

            var itemRepository = Substitute.For<IItemRepository>();
            itemRepository.When(repository => repository.Delete(Arg.Any<Item>()))
                .Throw<ApplicationException>();

            var borrowerController = CreateBuilder()
                .WithItemRepository(itemRepository)
                .Build();
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var result = borrowerController.Delete(itemViewModel) as ViewResult;
            //---------------Test Result -----------------------
            Assert.IsNotNull(result);
        }
        public void Delete_GivenBorrowerViewModel_ShouldRedirectToIndexAfterDelete()
        {
            //---------------Set up test pack-------------------
            var itemViewModel = new ItemViewModel();
            var itemController = CreateBuilder()
               .Build();
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            var result = itemController.Delete(itemViewModel) as RedirectToRouteResult;
            //---------------Test Result -----------------------
            Assert.IsNotNull(result);
            Assert.AreEqual("Index", result.RouteValues["action"]);
        }
 public void Edit_GivenValidItemId_ShouldReturnItemViewModel()
 {
     //---------------Set up test pack-------------------
     var items = new ItemBuilder().WithRandomProps().Build();
     var Id = items.Id;
    var repository = Substitute.For<IItemRepository>();
     var mappingEngine = Substitute.For<IMappingEngine>();
     var itemViewModel = new ItemViewModel {Id = RandomValueGen.GetRandomInt()};
     mappingEngine.Map<Item>(itemViewModel).Returns(items);
     var itemController = CreateBuilder().WithItemRepository(repository).WithMappingEngine(mappingEngine).Build();
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     var result = itemController.Edit(Id) as ViewResult;
     //---------------Test Result -----------------------
     Assert.IsNotNull(result);
    
 }
 public void Create_POST_ShouldCallSaveAndRedirectToIndex()
 {
     //---------------Set up test pack-------------------
     var items = new ItemBuilder().WithRandomProps().Build();
     var repository = Substitute.For<IItemRepository>();
     var mappingEngine = Substitute.For<IMappingEngine>();
     var itemViewModel = new ItemViewModel();
     mappingEngine.Map<Item>(itemViewModel).Returns(items);
     var itemController = CreateBuilder().WithItemRepository(repository).WithMappingEngine(mappingEngine).Build();
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     var result = itemController.Create(itemViewModel) as RedirectToRouteResult;
     //---------------Test Result -----------------------
     repository.Received().Save(items);
     Assert.IsNotNull(result);
     var actionName = result.RouteValues["action"];
     Assert.AreEqual("Index", actionName);
 }