public void Get_GivenBorrowerDoesNotExistForId_ShouldReturnBorrowerItem() { //---------------Set up test pack------------------- var borrowerItem = new BorrowerItemBuilder() .WithRandomProps().Build(); var dbContext = new TestDbContextBuilder() .WithBorrowerItem(borrowerItem) .Build(); var repository = CreateBuilder().WithDbContext(dbContext).Build(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var actualBorrower = repository.Get(borrowerItem.Id+10); //---------------Test Result ----------------------- Assert.IsNull(actualBorrower); }
public void GetAll_GivenTwoBorrowerItems_ShouldReturnBorrower() { //---------------Set up test pack------------------- var borrowerItem1 = new BorrowerItemBuilder() .WithRandomProps().Build(); var borrowerItem2 = new BorrowerItemBuilder() .WithRandomProps().Build(); var dbContext = new TestDbContextBuilder() .WithBorrowerItem(borrowerItem1, borrowerItem2) .Build(); var repository = CreateBuilder().WithDbContext(dbContext).Build(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var actualBorrower = repository.GetAll(); //---------------Test Result ----------------------- Assert.AreEqual(2, actualBorrower.Count); }
public void Index_GivenAllUsersReturnedFromRepository_ShouldReturnViewWithMapModel() { //---------------Set up test pack------------------- var borrowersItem = new BorrowerItemBuilder() .WithRandomProps() .WithDateReturnedAsNull() .Build(); var borrowersItems = new List<BorrowersItem>() { borrowersItem }; var repository = Substitute.For<IBorrowerItemRepository>(); repository.GetAll().Returns(borrowersItems); var borrowerItemRowViewModels = new List<BorrowerItemRowViewModel> { new BorrowerItemRowViewModel() }; var mappingEngine =Substitute.For<IMappingEngine>(); mappingEngine.Map<IEnumerable<BorrowerItemRowViewModel>>(borrowersItems) .Returns(borrowerItemRowViewModels); var borrowerItemRowViewModel = borrowerItemRowViewModels.FirstOrDefault(); borrowerItemRowViewModel.Id = borrowersItem.Id; borrowerItemRowViewModel.BorrowerId = borrowersItem.BorrowerId; borrowerItemRowViewModel.ItemDescription = borrowersItem.Item.Description; borrowerItemRowViewModel.DateBorrowed = borrowersItem.DateBorrowed; borrowerItemRowViewModel.DateReturned = borrowersItem.DateReturned; var controller = CreateBuilder() .WithBorrowerItemRepository(repository) .WithMappingEngine(mappingEngine) .Build(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var result = controller.Index() as ViewResult; //---------------Test Result ----------------------- Assert.IsNotNull(result); var viewModels = result.Model as IEnumerable<BorrowerItemRowViewModel>; CollectionAssert.AreEqual(borrowerItemRowViewModels, viewModels); }
public void DeletePOST_GivenBorrowerItemViewModel_ShouldMapToBorrowerAndDelete() { var borrowerItems = new BorrowerItemBuilder().WithRandomProps().Build(); var repository = Substitute.For<IBorrowerItemRepository>(); var itemRepository = Substitute.For<IItemRepository>(); var borrowerRepository = Substitute.For<IBorrowerRepository>(); var mapper = Substitute.For<IMappingEngine>(); var borrowerItemViewModel = new BorrowerItemViewModel { Id = RandomValueGen.GetRandomInt(), ItemId = RandomValueGen.GetRandomInt(), BorrowerId = RandomValueGen.GetRandomInt() }; mapper.Map<BorrowersItem>(borrowerItemViewModel).Returns(borrowerItems); repository.Delete(borrowerItems); var borrowerItemController = CreateBuilder() .WithBorrowerItemRepository(repository) .WithBorrowerRepository(borrowerRepository) .WithItemRepository(itemRepository) .WithMappingEngine(mapper) .Build(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var result = borrowerItemController.Delete(borrowerItemViewModel); //---------------Test Result ----------------------- Assert.IsNotNull(result); repository.Received().Delete(borrowerItems); }
public void EditPOST_GivenValidBorrowerId_ShouldCallSaveandRedirect() { var borrowerItems = new BorrowerItemBuilder().WithRandomProps().Build(); var repository = Substitute.For<IBorrowerItemRepository>(); var itemRepository = Substitute.For<IItemRepository>(); var borrowerRepository = Substitute.For<IBorrowerRepository>(); var mapper = Substitute.For<IMappingEngine>(); var borrowerItemViewModel = new BorrowerItemViewModel { Id = RandomValueGen.GetRandomInt(), ItemId = RandomValueGen.GetRandomInt(), BorrowerId = RandomValueGen.GetRandomInt() }; mapper.Map<BorrowersItem>(borrowerItemViewModel).Returns(borrowerItems); repository.Save(borrowerItems); var borrowerItemController = CreateBuilder() .WithBorrowerItemRepository(repository) .WithBorrowerRepository(borrowerRepository) .WithItemRepository(itemRepository) .WithMappingEngine(mapper) .Build(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var result = borrowerItemController.Edit(borrowerItemViewModel) as RedirectToRouteResult; //---------------Test Result ----------------------- Assert.IsNotNull(result); repository.Received().Save(borrowerItems); var actionName = result.RouteValues["action"]; Assert.AreEqual("Index", actionName); }
public void EditGET_GivenValidBorrowerItemId_ShouldReturnBorrowerViewModel() { //---------------Set up test pack------------------- var borrowerItems= new BorrowerItemBuilder().WithRandomProps().Build(); var id = borrowerItems.Id; var repository = Substitute.For<IBorrowerItemRepository>(); var itemRepository = Substitute.For<IItemRepository>(); var borrowerRepository = Substitute.For<IBorrowerRepository>(); var mapper = Substitute.For<IMappingEngine>(); repository.Get(id).Returns(borrowerItems); var item = new Item { Id = RandomValueGen.GetRandomInt(), Description = RandomValueGen.GetRandomString() }; var items = new List<Item> { item }; var borrower = new BorrowerBuilder().WithRandomProps().Build(); var borrowers = new List<Borrower> { borrower }; itemRepository.GetAll().Returns(items); borrowerRepository.GetAll().Returns(borrowers); var borrowerItemViewModel = new BorrowerItemViewModel { Id = RandomValueGen.GetRandomInt() }; mapper.Map<BorrowerItemViewModel>(borrowerItems).Returns(borrowerItemViewModel); var borrowerItemController = CreateBuilder() .WithBorrowerItemRepository(repository) .WithBorrowerRepository(borrowerRepository) .WithItemRepository(itemRepository) .WithMappingEngine(mapper) .Build(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var result = borrowerItemController.Edit(id) as ViewResult; //---------------Test Result ----------------------- Assert.IsNotNull(result); var model = result.Model as BorrowerItemViewModel; Assert.IsNotNull(model); Assert.AreEqual(1, model.BorrowersSelectListItems.Count); Assert.AreEqual(1, model.ItemSelectListItems.Count); }
public void Create_POST_ShouldCallSaveAndRedirectToIndex() { //---------------Set up test pack------------------- var borrowerItemRepository = Substitute.For<IBorrowerItemRepository>(); var borrowerRepository = Substitute.For<IBorrowerRepository>(); var itemRepository = Substitute.For<IItemRepository>(); var mapper = Substitute.For<IMappingEngine>(); var borrowersItem = new BorrowerItemBuilder().WithRandomProps().Build(); var borrower = new BorrowerBuilder().WithRandomProps().Build(); var item = new ItemBuilder().WithRandomProps().Build(); var borrowerItemViewModel = new BorrowerItemViewModel(); mapper.Map<BorrowersItem>(borrowerItemViewModel).Returns(borrowersItem); itemRepository.Get(borrowerItemViewModel.ItemId).Returns(item); borrowersItem.ItemId = item.Id; borrowersItem.BorrowerId = borrower.Id; borrowerRepository.Get(borrowerItemViewModel.BorrowerId).Returns(borrower); borrowerItemViewModel.ItemId = item.Id; borrowerItemViewModel.BorrowerId = borrower.Id; borrowerItemViewModel.DateBorrowed=DateTime.Now; borrowerItemViewModel.DateReturned=DateTime.Now.ToString(); var borrowerItemController = CreateBuilder() .WithBorrowerItemRepository(borrowerItemRepository) .WithBorrowerRepository(borrowerRepository) .WithItemRepository(itemRepository) .WithMappingEngine(mapper) .Build(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- var result = borrowerItemController.Create(borrowerItemViewModel) as RedirectToRouteResult; //---------------Test Result ----------------------- borrowerItemRepository.Received().Save(borrowersItem); Assert.IsNotNull(result); var actionName = result.RouteValues["action"]; Assert.AreEqual("Index", actionName); }
public void Delete_GivenBorrowerItemExists_ShouldDeleteBorrowerAndCallSavedChanges() { //---------------Set up test pack------------------- var borrowerItem = new BorrowerItemBuilder() .WithRandomProps().Build(); var dbContext = new TestDbContextBuilder() .WithBorrowerItem(borrowerItem) .Build(); var repository = CreateBuilder().WithDbContext(dbContext).Build(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- repository.Delete(borrowerItem); //---------------Test Result ----------------------- Assert.AreEqual(0, dbContext.Borrowers.Count()); dbContext.Received().SaveChanges(); }
public void Save_GivenNewBorrower_ShouldSave() { //---------------Set up test pack------------------- var borrower = new BorrowerItemBuilder() .WithRandomProps() .WithNewId() .Build(); var dbContext = new TestDbContextBuilder().Build(); var repository = CreateBuilder().WithDbContext(dbContext).Build(); //---------------Assert Precondition---------------- //---------------Execute Test ---------------------- repository.Save(borrower); //---------------Test Result ----------------------- dbContext.Received().AttachEntity(borrower); dbContext.Received().SaveChanges(); }