public void Create_POST_GivenModelStateIsValid_ShouldSaveLendingEntryToDB() { //---------------Set up test pack------------------- var item = new ItemBuilder().WithRandomProps().Build(); var person = new PersonBuilder().WithRandomProps().Build(); var mappingEngine = Substitute.For<IMappingEngine>(); var itemsRepository = Substitute.For<IItemsRepository>(); var personRepository = Substitute.For<IPersonRepository>(); var lendingRepository = Substitute.For<ILendingRepository>(); var lending = new LendingBuilder().WithRandomProps().Build(); var viewModel = new LendingViewModelBuilder().WithRandomProps().Build(); mappingEngine.Map<LendingViewModel, Lending>(viewModel).Returns(lending); itemsRepository.GetById(viewModel.ItemId).Returns(item); personRepository.GetById(viewModel.PersonId).Returns(person); var controller = CreateLendingController(lendingRepository, mappingEngine, personRepository, itemsRepository); Lending savedLending = null; lendingRepository.When(x => x.Save(Arg.Any<Lending>())).Do(info => savedLending = (Lending)info[0]); //---------------Assert Precondition---------------- Assert.IsTrue(controller.ModelState.IsValid); //---------------Execute Test ---------------------- var result = controller.Create(viewModel) as ViewResult; //---------------Test Result ----------------------- Assert.AreEqual(lending.LedingId, savedLending.LedingId); Assert.AreEqual(lending.ItemId, savedLending.ItemId); Assert.AreEqual(lending.PersonId, savedLending.PersonId); }
public void Create_POST_GivenPersonIdIsNotNull_ShouldSetPersonName() { //---------------Set up test pack------------------- var item = new ItemBuilder().WithRandomProps().Build(); var person = new PersonBuilder().WithRandomProps().Build(); var mappingEngine = Substitute.For<IMappingEngine>(); var itemsRepository = Substitute.For<IItemsRepository>(); var personRepository = Substitute.For<IPersonRepository>(); var lending = new LendingBuilder().WithRandomProps().Build(); var viewModel = new LendingViewModelBuilder().WithRandomProps().Build(); mappingEngine.Map<LendingViewModel, Lending>(viewModel).Returns(lending); itemsRepository.GetById(viewModel.ItemId).Returns(item); personRepository.GetById(viewModel.PersonId).Returns(person); var controller = CreateLendingController(null, mappingEngine, personRepository, itemsRepository); //---------------Assert Precondition---------------- Assert.IsTrue(controller.ModelState.IsValid); //---------------Execute Test ---------------------- var result = controller.Create(viewModel) as ViewResult; //---------------Test Result ----------------------- Assert.AreEqual(lending.PersonName, person.FirstName); }