public void TestInitialize() { IParser parser = new XmlParser(); IService service = new ExpenseService(parser); this.expenseController = new ExpenseController(service); }
public void GetById() { // Arrange var httpConfiguration = new HttpConfiguration(); WebApiConfig.Register(httpConfiguration); var httpRouteData = new System.Web.Http.Routing.HttpRouteData(httpConfiguration.Routes["DefaultApi"], new System.Web.Http.Routing.HttpRouteValueDictionary { { "controller", "Expense" } }); ExpenseController controller = new ExpenseController() { Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:53852/api/Expense/") { Properties = { { System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey, httpConfiguration }, { System.Web.Http.Hosting.HttpPropertyKeys.HttpRouteDataKey, httpRouteData } } } }; LoadTestData(controller); // Act var result = controller.Get(0); // Assert Assert.AreEqual(System.Net.HttpStatusCode.OK, result.StatusCode); }
public void ThrowsInvalidOperationExceptionWhenTryingToAddRecordThatAlreadyExists() { var testRecord = this.CreateTestData().First(); var repositoryMock = new Mock <IExpenseRepository>(); repositoryMock.Setup(x => x.Create(testRecord)).Throws(new InvalidOperationException($"An expense record with ID {testRecord.Id} already exists in the database!")); var subject = new ExpenseController(repositoryMock.Object); IActionResult result = null; subject .Invoking(x => result = x.Post(testRecord)) .ShouldNotThrow(); repositoryMock .Invoking(mock => mock.Verify(x => x.Create(testRecord))) .ShouldNotThrow(); result .Should() .BeOfType <StatusCodeResult>(); var statusCodeResult = result as StatusCodeResult; statusCodeResult.StatusCode .Should() .Be((int)HttpStatusCode.Conflict); }
public void CanAddRecord() { var testRecord = this.CreateTestData().First(); var repositoryMock = new Mock <IExpenseRepository>(); var subject = new ExpenseController(repositoryMock.Object); IActionResult result = null; subject .Invoking(x => result = x.Post(testRecord)) .ShouldNotThrow(); repositoryMock .Invoking(mock => mock.Verify(x => x.Create(testRecord))) .ShouldNotThrow(); result .Should() .BeOfType <CreatedResult>(); var createdResult = result as CreatedResult; createdResult .Location .Should() .Be($"api/expenses/{testRecord.Id}"); }
public void CanDeliverAllExpenseRecords() { var testData = this.CreateTestData(); var repositoryMock = new Mock <IExpenseRepository>(); repositoryMock.Setup(x => x.All()).Returns(testData); var subject = new ExpenseController(repositoryMock.Object); IActionResult result = null; subject.Invoking(x => { result = x.Get(); }).ShouldNotThrow(); result .Should() .BeOfType <OkObjectResult>(); var okResult = result as OkObjectResult; okResult.Value .Should() .BeOfType <ExpenseRecord[]>(); var resultValue = okResult.Value as IEnumerable <ExpenseRecord>; resultValue .Should() .HaveCount(5); }
public void CanDeliverASingleExpeseRecord(string recordId) { var testRecord = this.CreateTestData().FirstOrDefault(x => x.Id.Equals(Guid.Parse(recordId))); var repositoryMock = new Mock <IExpenseRepository>(); repositoryMock.Setup(x => x.FindById(testRecord.Id)).Returns(testRecord); var subject = new ExpenseController(repositoryMock.Object); IActionResult result = null; subject .Invoking(x => { result = x.GetById(testRecord.Id); }) .ShouldNotThrow(); result .Should() .BeOfType <OkObjectResult>(); var okResult = result as OkObjectResult; okResult.Value .Should() .BeOfType <ExpenseRecord>(); var resultValue = okResult.Value as ExpenseRecord; resultValue .ShouldBeEquivalentTo(testRecord); }
public void GetStaffExpenses_Can_Retrieve_A_Staffs_Expenses() { var controller = new ExpenseController(_mockExpenseService.Object); var apiCallValue = controller.GetStaffExpenses(sampleEmployee.Id); Assert.IsInstanceOfType(apiCallValue, typeof(OkNegotiatedContentResult <List <Expense> >)); }
public void GetYearlyExpenses_API_Call_Works_Correctly() { var controller = new ExpenseController(_mockExpenseService.Object); var apiCallResult = controller.GetYearlyExpenses(); Assert.IsInstanceOfType(apiCallResult, typeof(OkNegotiatedContentResult <Dictionary <string, int> >)); }
public void Index_NormalRequest_Returns_Index_With_Expense_List() { // Arrange Mock <HttpRequestBase> request = new Mock <HttpRequestBase>(); Mock <HttpResponseBase> response = new Mock <HttpResponseBase>(); Mock <HttpContextBase> context = new Mock <HttpContextBase>(); context.Setup(c => c.Request).Returns(request.Object); context.Setup(c => c.Response).Returns(response.Object); IEnumerable <Expense> fakeExpenses = GetMockExpenses(); expenseRepository.Setup(x => x.GetMany(It.IsAny <Expression <Func <Expense, bool> > >())).Returns(fakeExpenses); ExpenseController controller = new ExpenseController(commandBus.Object, categoryRepository.Object, expenseRepository.Object); controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller); // Act var result = controller.Index(null, null) as ViewResult; // Assert Assert.AreEqual("Index", result.ViewName); Assert.IsNotNull(result, "View Result is null"); Assert.IsInstanceOf(typeof(IEnumerable <Expense>), result.ViewData.Model, "Wrong View Model"); var expenses = result.ViewData.Model as IEnumerable <Expense>; Assert.AreEqual(3, expenses.Count(), "Got wrong number of Categories"); }
public void ExpenseService_ShouldCreateExpenseOnce_WhenCraetePostIsCalled() { // Arrange var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object); var model = new ExpenseViewModel() { Name = "_", AssignedUser = "******", Category = new Guid().ToString(), ExpectedCost = 1M, Comment = "_" }; // Act expenseController.Create(model); // Assert this.expenseServiceMock.Verify(x => x.CreateExpense( It.IsAny <string>(), It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <decimal>(), It.IsAny <DateTime>(), It.IsAny <string>(), It.IsAny <string>()), Times.Once); }
public void CallController() { // Arrange ExpenseController controller = new ExpenseController(); string sampleText = @"Hi Yvaine, Please create an expense claim for the below.Relevant details are marked up as requested… <expense><cost_centre>DEV002</cost_centre> <total>1024.01</total><payment_method>personal card</payment_method> </expense> From: Ivan Castle Sent: Friday, 16 February 2018 10:32 AM To: Antoine Lloyd <Antoine.Lloyd @example.com> Subject: test Hi Antoine, Please create a reservation at the <vendor>Viaduct Steakhouse</vendor> our <description> development team’s project end celebration dinner</description> on <date>Thursday 27 April 2017</date>. We expect to arrive around 7.15pm.Approximately 12 people but I’ll confirm exact numbers closer to the day. Regards, Ivan"; // Act var expense = controller.ReadText(sampleText); //Assert Assert.AreEqual("DEV002", expense.cost_centre); Assert.AreEqual((Decimal)1024.01, expense.total); Assert.AreEqual("personal card", expense.payment_method); Assert.AreEqual("Viaduct Steakhouse", expense.vendor); Assert.AreEqual(" development team’s project end celebration dinner", expense.description); Assert.AreEqual(new DateTime(2017, 4, 27), expense.date.Date); }
public void Post() { // Arrange var httpConfiguration = new HttpConfiguration(); WebApiConfig.Register(httpConfiguration); var httpRouteData = new System.Web.Http.Routing.HttpRouteData(httpConfiguration.Routes["DefaultApi"], new System.Web.Http.Routing.HttpRouteValueDictionary { { "controller", "Expense" } }); ExpenseController controller = new ExpenseController() { Request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:53852/api/Expense/") { Properties = { { System.Web.Http.Hosting.HttpPropertyKeys.HttpConfigurationKey, httpConfiguration }, { System.Web.Http.Hosting.HttpPropertyKeys.HttpRouteDataKey, httpRouteData } } } }; // Act var response = controller.Post("<expense><cost_centre>DEV002</cost_centre><total>890.55</total><payment_method>personalcard</payment_method><date>23/07/2018</date><description>test expense record</description></expense>"); // Assert Assert.AreEqual(System.Net.HttpStatusCode.Created, response.StatusCode); }
public void Get_Can_Retrieve_All_Saved_Expenses() { var controller = new ExpenseController(_mockExpenseService.Object); Expense savedExpense = _sampleExpenses[0]; var apiCallResult = controller.Get(); Assert.IsInstanceOfType(apiCallResult, typeof(OkNegotiatedContentResult <List <Expense> >)); }
public void GivenAValidEmailWhenProcessedThenReturnOkResult200() { _expenseClaimService.Setup(x => x.Process(ValidEmail)).Returns(It.IsAny <ExpenseClaimResult>()); _controller = new ExpenseController(_expenseClaimService.Object, _logger.Object); var result = (OkObjectResult)_controller.Post(ValidEmail); Assert.Equal(200, result.StatusCode); }
public void GivenAInvalidEmailWhenProcessedThenReturnBadRequest400(int expected, string invalidEmail) { _expenseClaimService.Setup(x => x.Process(invalidEmail)).Throws <Exception>(); _controller = new ExpenseController(_expenseClaimService.Object, _logger.Object); var result = (BadRequestObjectResult)_controller.Post(invalidEmail); Assert.Equal(expected, result.StatusCode); }
public void ExpenseController_ShouldReturnDefaultView_WhenCraeteGetIsCalled() { // Arrange var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object); // Act // Assert expenseController.WithCallTo(x => x.Create()).ShouldRenderDefaultView(); }
public void CurrentMonthTotalExpenses_Works_Correctly() { var controller = new ExpenseController(_mockExpenseService.Object); var apiCallValue = controller.CurrentMonthTotalExpenses(sampleEmployee.Id); _mockExpenseService.Verify(x => x.StaffTotalExpensesForThisMonth(It.Is <string>(input => input == sampleEmployee.Id))); Assert.IsInstanceOfType(apiCallValue, typeof(OkNegotiatedContentResult <int>)); }
public void Get_With_Parameter_Can_Retrieve_Saved_Expense() { Expense newExpense = _sampleExpenses[0]; var controller = new ExpenseController(_mockExpenseService.Object); var apiCallResult = controller.Get(newExpense.Id); Assert.IsNotNull(apiCallResult); Assert.IsNotInstanceOfType(apiCallResult, typeof(OkResult)); }
protected override void Dispose(bool disposing) { base.Dispose(disposing); travelController.Dispose(); expenseController.Dispose(); travelController = null; expenseController = null; }
public void DELETE_Method_Works_Correctly() { var controller = new ExpenseController(_mockExpenseService.Object); Expense savedExpense = _sampleExpenses[0]; controller.Delete(savedExpense.Id); _mockExpenseService.Verify(x => x.DeleteExpense(It.Is <int>(input => input == savedExpense.Id ))); }
public void DeletePost_ShouldRedirectToAction_WhenIsCalled() { // Arrange var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object); // Act // Assert expenseController.WithCallTo(x => x.Delete(new ExpenseViewModel())) .ShouldRedirectTo <ExpenseController>(x => x.Index(new Guid())); }
public void ExpenseController_ShouldHaveOneAuthorizeAttribute() { // Arrange var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object); // Act var result = expenseController.GetType().GetCustomAttributes(typeof(AuthorizeAttribute), false).Length; // Assert Assert.That(result == 1); }
/// <summary> /// Initializes a new instance of the <see cref="ExpenseForm"/> class. /// </summary> /// <param name="expenseController">The expense controller to use for data retrieval.</param> public ExpenseForm(ExpenseController expenseController) { this.InitializeComponent(); this.controller = expenseController; this.controller.ControllerDataRefreshed += this.OnControllerRefresh; this.AverageSelectionComboBox.SelectedIndex = 0; this.DisplayFilterNameTextBox.Text = "N/A"; this.UpdateDataGrid(); }
public void HouseholdService_ShouldCallGetHouseholdUsersOnce_WhenCreateGetIsCalled() { // Arrange var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object); // Act expenseController.Create(); // Assert householdServiceMock.Verify(x => x.GetHouseholdUsers(It.IsAny <Guid>()), Times.Once); }
public void WebHelper_ShouldCallGetHouseholdIdFromCookieOnce_WhenCreateGetIsCalled() { // Arrange var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object); // Act expenseController.Create(); // Assert webHelperMock.Verify(x => x.GetHouseholdIdFromCookie(), Times.Once); }
public void Post_Can_Save_New_Expense() { var controller = new ExpenseController(_mockExpenseService.Object); var newExpense = new Expense("AnyExpense", 80000, sampleEmployee.Id); controller.Post(newExpense); _mockExpenseService.Verify(x => x.SaveExpense(It.Is <Expense>(exp => exp.Description == "AnyExpense" && exp.Cost == 80000 ))); }
public void Setup() { _expenseServiceMock = new Mock <IExpenseService>(); _categoryServiceMock = new Mock <ICategoryService>(); _mapper = new Mock <IMapper>(); _expenseController = new ExpenseController( _expenseServiceMock.Object, _categoryServiceMock.Object, _mapper.Object); }
public void ExpenseService_ShouldCallDeleteOnce_WhenDeletePostIsCalled() { // Arrange var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object); // Act expenseController.Delete(new ExpenseViewModel()); // Assert this.expenseServiceMock.Verify(x => x.DeleteExpense(It.IsAny <Guid>(), It.IsAny <bool>()), Times.Once); }
public void ExpenseController_ShouldReturnDefaultView_WhenIndexIsCalled() { // Arrange var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object); var expense = new Expense("_", new Guid(), "_", new Guid(), 1M, DateTime.Now, DateTime.Now); this.expenseServiceMock.Setup(x => x.GetExpense(It.IsAny <Guid>())).Returns(expense); // Act // Assert expenseController.WithCallTo(x => x.Index(new Guid())).ShouldRenderDefaultView(); }
public void EditPost_ShouldHaveValidateAntiForgeryTokenAttribute() { // Arrange var expenseController = new ExpenseController(expenseServiceMock.Object, mappingServiceMock.Object, householdServiceMock.Object, webHelperMock.Object); // Act var result = expenseController.GetType().GetMethod("Edit", new Type[] { typeof(ExpenseViewModel) }) .GetCustomAttributes(typeof(ValidateAntiForgeryTokenAttribute), false).Length; // Assert Assert.That(result == 1); }