public async Task Add_WithGetRequest_ShouldReturnViewWithViewModel() { // Arrange var categories = new List <Category> { new Category { Id = 101, Name = "Category One" }, new Category { Id = 102, Name = "Category Two" }, new Category { Id = 103, Name = "Category Three" } }; var controllerBuilder = new TransactionsControllerBuilder(); controllerBuilder.MockCategoriesDataService.Setup(x => x.RetrieveCategoriesAsync()).ReturnsAsync(categories); using var controller = controllerBuilder.Build(); // Act var result = await controller.Add(); // Assert Assert.IsNotNull(result, FailureMessages.ResultIsNull); Assert.IsInstanceOfType(result, typeof(ViewResult), FailureMessages.ResultNotExpectedType); var viewResult = result as ViewResult; Assert.IsNotNull(viewResult.Model, FailureMessages.ViewModelIsNull); Assert.IsInstanceOfType(viewResult.Model, typeof(AddTransactionViewModel), FailureMessages.ViewModelNotExpectedType); var viewModel = viewResult.Model as AddTransactionViewModel; Assert.AreEqual(DateTime.Today, viewModel.Date, FailureMessages.ViewModelPropertyNotExpectedValue); Assert.AreEqual(categories.Count, viewModel.CategoriesList.Count(), FailureMessages.IncorrectItemCount); }
public async Task Add_WithInvalidViewModel_ShouldReturnViewWithSameViewModel() { // Arrange var controllerBuilder = new TransactionsControllerBuilder(); using var controller = controllerBuilder.Build(); controller.ModelState.AddModelError("SomeKey", "SomeErrorMessage"); var postedViewModel = new AddTransactionViewModel { Date = new DateTime(2008, 11, 17), CategoryId = 101, Memo = "Something", Amount = 123.45m, IsCredit = false }; // Act var result = await controller.Add(postedViewModel); // Assert Assert.IsNotNull(result, FailureMessages.ResultIsNull); Assert.IsInstanceOfType(result, typeof(ViewResult), FailureMessages.ResultNotExpectedType); var viewResult = result as ViewResult; Assert.IsNotNull(viewResult.Model, FailureMessages.ViewModelIsNull); Assert.IsInstanceOfType(viewResult.Model, typeof(AddTransactionViewModel), FailureMessages.ViewModelNotExpectedType); var resultViewModel = viewResult.Model as AddTransactionViewModel; Assert.AreEqual(postedViewModel.Date, resultViewModel.Date, FailureMessages.ViewModelPropertyNotExpectedValue); Assert.AreEqual(postedViewModel.CategoryId, resultViewModel.CategoryId, FailureMessages.ViewModelPropertyNotExpectedValue); Assert.AreEqual(postedViewModel.Memo, resultViewModel.Memo, FailureMessages.ViewModelPropertyNotExpectedValue); Assert.AreEqual(postedViewModel.Amount, resultViewModel.Amount, FailureMessages.ViewModelPropertyNotExpectedValue); Assert.AreEqual(postedViewModel.IsCredit, resultViewModel.IsCredit, FailureMessages.ViewModelPropertyNotExpectedValue); }
public async Task Add_WithNullViewModel_ShouldThrowException() { // Arrange var controllerBuilder = new TransactionsControllerBuilder(); using var controller = controllerBuilder.Build(); Exception caughtException = null; // Act try { _ = await controller.Add(null); } catch (Exception exception) { caughtException = exception; } // Assert Assert.IsNotNull(caughtException, FailureMessages.ExceptionNotThrown); Assert.IsInstanceOfType(caughtException, typeof(ArgumentNullException), FailureMessages.ExceptionNotExpectedType); }