コード例 #1
0
            public void AddsUserIdToEntity()
            {
                // Act.
                BudgetsController controller = new BudgetsController(this.mockBudgetsRepository.Object);
                IActionResult     result     = controller.Put(this.id, this.budget);
                OkObjectResult    okResult   = result as OkObjectResult;

                // Assert.
                this.mockBudgetsRepository.Verify(m => m.Save(It.Is <Budget>(x => x.UserId == this.userId), It.IsAny <long>()), Times.Once, "The user ID should have been added to the entity.");
            }
コード例 #2
0
        public void AddBills()
        {
            var listOfBudgets = new CoreBudgets();
            Mock <IBudgetRepository> mockBudgetRepository = new Mock <IBudgetRepository>();

            mockBudgetRepository.Setup(x => x.AddBudgetAsync(listOfBudgets)).Verifiable();
            var billController = new BudgetsController(mockBudgetRepository.Object);

            billController.Should().NotBeNull();
        }
コード例 #3
0
        public void AddTest_should_add_a_budget_record()
        {
            var service = Substitute.For <IBudgetService>();
            var target  = new BudgetsController(service);

            var model = new BudgetModels();

            target.Add(model);

            service.Received().Save(model);
        }
コード例 #4
0
        public async Task EditValidInputTest()
        {
            var optionsBuilder = new DbContextOptionsBuilder <ApplicationDbContext>();

            optionsBuilder.UseInMemoryDatabase(databaseName: "db1");
            var _dbContext = new ApplicationDbContext(optionsBuilder.Options);

            var controller = new BudgetsController(_dbContext);
            var result     = await controller.Edit(1);

            Assert.NotNull(result);
        }
コード例 #5
0
        public async Task IndexReturnTypeTest()
        {
            var optionsBuilder = new DbContextOptionsBuilder <ApplicationDbContext>();

            optionsBuilder.UseInMemoryDatabase(databaseName: "db1");
            var _dbContext = new ApplicationDbContext(optionsBuilder.Options);

            var controller = new BudgetsController(_dbContext);
            var result     = await controller.Index();

            Assert.IsType <ViewResult>(result);
        }
コード例 #6
0
        public async Task DetailsNullInputTest()
        {
            var optionsBuilder = new DbContextOptionsBuilder <ApplicationDbContext>();

            optionsBuilder.UseInMemoryDatabase(databaseName: "db1");
            var _dbContext = new ApplicationDbContext(optionsBuilder.Options);

            var controller = new BudgetsController(_dbContext);
            var result     = await controller.Details(null);

            Assert.IsType <NotFoundResult>(result);
        }
コード例 #7
0
        public void Add_a_budget_should_succeedTest()
        {
            //Arrange
            var budgetService     = Substitute.For <IBudgetService>();
            var budgetsController = new BudgetsController(budgetService);

            //Act
            budgetsController.Add("2018-11", 700);

            //Assert
            budgetService.Received()
            .Add(Arg.Is <BudgetViewModel>(budget => budget.YearMonth == "2018-11" && budget.Amount == 700));
        }
コード例 #8
0
            public void ReturnsRepositoryResult()
            {
                // Act.
                BudgetsController controller = new BudgetsController(this.mockBudgetsRepository.Object);
                IActionResult     result     = controller.Get();
                OkObjectResult    okResult   = result as OkObjectResult;

                // Assert.
                this.mockBudgetsRepository.Verify(m => m.GetAll(this.userId), Times.Once, "The budgets should have been requested from the repository.");
                this.mockBudgetsRepository.VerifyNoOtherCalls();

                Assert.IsNotNull(okResult, "An OK response should have been returned.");
                Assert.AreEqual(200, okResult.StatusCode, "The status code from the response should have been 200.");
                Assert.AreEqual(this.stubBudgets, okResult.Value, "The result from the repository should have been returned.");
            }
コード例 #9
0
            public void HandlesNotFound()
            {
                // Arrange.
                this.mockBudgetsRepository
                .Setup(m => m.Get(It.IsAny <long>(), It.IsAny <long>()))
                .Returns <Budget>(null);

                // Act.
                BudgetsController controller     = new BudgetsController(this.mockBudgetsRepository.Object);
                IActionResult     result         = controller.Get(this.id);
                NotFoundResult    notFoundResult = result as NotFoundResult;

                // Assert.
                Assert.IsNotNull(notFoundResult, "An object result should have been returned.");
                Assert.AreEqual(404, notFoundResult.StatusCode, "The status code from the response should have been 404.");
            }
コード例 #10
0
        //Test POST for creating new budget
        public void BudgetsController_Create_ReturnsObject_WhenNewObject()
        {
            controller = createContext(controller);
            //Arrange new ObjectResult
            var budget = new Budget();

            budget.From = 500;

            //Act
            var result         = controller.Create(budget);
            var resultAsObject = result as ObjectResult;
            var resultObject   = resultAsObject.Value as Budget;

            //Assert
            Assert.IsType <ObjectResult>(result);
            Assert.Equal(budget.From, resultObject.From);
        }
コード例 #11
0
        private BudgetsController createContext(BudgetsController con)
        {
            con.ControllerContext = new ControllerContext();
            //Creates a new HttpContext
            con.ControllerContext.HttpContext = new DefaultHttpContext();

            con.ObjectValidator = new DefaultObjectValidator
                                  (
                new DefaultModelMetadataProvider
                (
                    new DefaultCompositeMetadataDetailsProvider(Enumerable.Empty <IMetadataDetailsProvider>())
                ),
                new List <Microsoft.AspNetCore.Mvc.ModelBinding.Validation.IModelValidatorProvider>()
                                  );

            //Returns the controller
            return(con);
        }
コード例 #12
0
            public void HandlesGeneralException()
            {
                // Arrange.
                this.mockBudgetsRepository
                .Setup(m => m.Save(It.IsAny <Budget>(), It.IsAny <long>()))
                .Throws(new Exception());

                // Act.
                BudgetsController controller   = new BudgetsController(this.mockBudgetsRepository.Object);
                IActionResult     result       = controller.Put(this.id, this.budget);
                ObjectResult      objectResult = result as ObjectResult;

                // Assert.
                Assert.IsNotNull(objectResult, "An object result should have been returned.");
                Assert.AreEqual(500, objectResult.StatusCode, "The status code from the response should have been 500.");
                string expectedMessage = "There was an error saving the budget.";

                Assert.AreEqual(expectedMessage, objectResult.Value, "The error message should have been the result.");
            }
コード例 #13
0
            public void ReturnsBadRequestErrorWhenBudgetIdsMismatch()
            {
                // Arrange.
                this.id = this.id + 2;

                // Act.
                BudgetsController      controller       = new BudgetsController(this.mockBudgetsRepository.Object);
                IActionResult          result           = controller.Put(this.id, this.budget);
                BadRequestObjectResult badRequestResult = result as BadRequestObjectResult;

                // Assert.
                this.mockBudgetsRepository.VerifyNoOtherCalls();

                Assert.IsNotNull(badRequestResult, "A bad request response should have been returned.");
                Assert.AreEqual(400, badRequestResult.StatusCode, "The status code from the response should have been 405.");
                string expectedMessage = "The budget ID values did not match.";

                Assert.AreEqual(expectedMessage, badRequestResult.Value, "The error message should have been the result.");
            }
コード例 #14
0
            public void ReturnsBadRequestErrorWhenBudgetNull()
            {
                // Arrange.
                this.budget = null;

                // Act.
                BudgetsController      controller       = new BudgetsController(this.mockBudgetsRepository.Object);
                IActionResult          result           = controller.Post(this.budget);
                BadRequestObjectResult badRequestResult = result as BadRequestObjectResult;

                // Assert.
                this.mockBudgetsRepository.VerifyNoOtherCalls();

                Assert.IsNotNull(badRequestResult, "A bad request response should have been returned.");
                Assert.AreEqual(400, badRequestResult.StatusCode, "The status code from the response should have been 405.");
                string expectedMessage = "A budget must be passed in for it to be saved.";

                Assert.AreEqual(expectedMessage, badRequestResult.Value, "The error message should have been the result.");
            }
コード例 #15
0
            public void ReturnsNotFoundWhenRepositoryReturnsNull()
            {
                // Arrange.
                this.stubBudget = null;
                this.mockBudgetsRepository
                .Setup(m => m.Get(It.IsAny <long>(), It.IsAny <long>()))
                .Returns(this.stubBudget);

                // Act.
                BudgetsController controller     = new BudgetsController(this.mockBudgetsRepository.Object);
                IActionResult     result         = controller.Get(this.id);
                NotFoundResult    notFoundResult = result as NotFoundResult;

                // Assert.
                this.mockBudgetsRepository.Verify(m => m.Get(this.id, this.userId), Times.Once, "The budget should have been requested from the repository.");
                this.mockBudgetsRepository.VerifyNoOtherCalls();

                Assert.IsNotNull(notFoundResult, "A Not Found response should have been returned.");
                Assert.AreEqual(404, notFoundResult.StatusCode, "The status code from the response should have been 404.");
            }
コード例 #16
0
            public void ReturnsAnEmptyListWhenRepositoryReturnsNull()
            {
                // Arrange.
                this.stubBudgets = null;
                this.mockBudgetsRepository
                .Setup(m => m.GetAll(It.IsAny <long>()))
                .Returns(this.stubBudgets);

                // Act.
                BudgetsController controller = new BudgetsController(this.mockBudgetsRepository.Object);
                IActionResult     result     = controller.Get();
                OkObjectResult    okResult   = result as OkObjectResult;

                // Assert.
                this.mockBudgetsRepository.Verify(m => m.GetAll(this.userId), Times.Once, "The budgets should have been requested from the repository.");
                this.mockBudgetsRepository.VerifyNoOtherCalls();

                Assert.IsNotNull(okResult, "An OK response should have been returned.");
                Assert.AreEqual(200, okResult.StatusCode, "The status code from the response should have been 200.");
                Assert.AreEqual(0, (okResult.Value as List <Budget>).Count, "An empty list should be the result.");
            }
コード例 #17
0
        public void TestAddAction()
        {
            //Arrange
            string yearMonth = "2018-05";

            int amount = 500;

            IBudgetsService budgetService = Substitute.For <IBudgetsService>();

            BudgetsController controller = new BudgetsController(budgetService);

            Budget budget = new Budget {
                YearMonth = yearMonth, Amount = amount
            };

            //Action
            controller.Add(budget);

            //Assert

            budgetService.Received(1)
            .AddBudget(Arg.Is <Budget>(b => b.YearMonth == yearMonth && b.Amount == amount));
        }
コード例 #18
0
 public BudgetsControllerUnitTests()
 {
     unitOfWork = new FakeUnitOfWork();
     controller = new BudgetsController(unitOfWork);
 }