Beispiel #1
0
        public async Task TestValidPostExpenseAsync()
        {
            var dbContext  = DbContextMocker.GetExpenseManagerDbContext(nameof(TestValidPostExpenseAsync));
            var controller = new ExpensesController(dbContext);

            var expense = new Expense
            {
                UserID       = 1,
                Amount       = 10,
                Comment      = "This is a test comment",
                CreationDate = DateTime.Now,
                Type         = Expense.ExpenseType.Hotel,
                Currency     = "USD"
            };

            //check expense model is valid
            var validationResults = new List <ValidationResult>();
            var actual            = Validator.TryValidateObject(expense, new ValidationContext(expense), validationResults, true);

            Assert.True(actual);

            var response = await controller.PostExpense(expense);

            Assert.IsType <CreatedAtActionResult>(response.Result);

            dbContext.Dispose();
        }
        public void GetExpenses()
        {
            var client = new HttpClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IjQ4MDZhYWVmLTJmNjctNGY3Yy0yYjdiLTA4ZDdiNTE3MGEzMyIsIm5iZiI6MTU4MjEwMTQ4NywiZXhwIjoxNTgyMTA0MTg3LCJpYXQiOjE1ODIxMDE0ODd9.m-zrNriR1RqSF6pchSBbQ_noiIaNeVSfmixUgyrFqik");
            var expense = new ExpensesViewModel {
                Title = "mock Expenses", Price = 20
            };
            var expenseDTO = new ExpensesDTO {
                Title = "mock Expenses", Price = 20
            };
            int userId     = 1;
            var mockMapper = new Mock <IMapper>();

            mockMapper.Setup(repo => repo.Map(expense, expenseDTO))
            .Returns(expenseDTO);
            mockMapper.Setup(repo => repo.Map(expenseDTO, expense))
            .Returns(expense);

            List <ExpensesDTO> expensesList = new List <ExpensesDTO>();
            var mockRepo = new Mock <IExpensesService>();

            mockRepo.Setup(repo => repo.GetExpensesAsync(userId))
            .ReturnsAsync(expensesList);

            var mockExceptionREpo = new Mock <IExceptionHandler>();
            var controller        = new ExpensesController(mockRepo.Object, mockExceptionREpo.Object, mockMapper.Object);

            // Act
            var okResult = controller.GetExpenses(userId).Result;

            // Assert

            Assert.IsType <OkObjectResult>(okResult);
        }
Beispiel #3
0
        public void TestDataContextGetter()
        {
            var controller = new ExpensesController();

            SetupControllerForTests(controller);
            Assert.AreSame(_context, controller.Context);
        }
Beispiel #4
0
        public async Task TestWrongCurrencyPostExpenseAsync()
        {
            var dbContext  = DbContextMocker.GetExpenseManagerDbContext(nameof(TestWrongCurrencyPostExpenseAsync));
            var controller = new ExpensesController(dbContext);

            //try to post the wrong currency
            var expense = new Expense
            {
                UserID       = 1,
                Amount       = 10,
                Comment      = "This is a test comment",
                CreationDate = DateTime.Now,
                Type         = Expense.ExpenseType.Hotel,
                Currency     = "rouble américain"
            };

            var response = await controller.PostExpense(expense);

            var badRequestResult = Assert.IsType <BadRequestObjectResult>(response.Result);

            Assert.IsType <SerializableError>(badRequestResult.Value);
            var resultValue = badRequestResult.Value as SerializableError;

            Assert.True(resultValue.ContainsKey(ExpenseManager.Constants.ErrorTitle.IncorrectCurrency));
            dbContext.Dispose();
        }
Beispiel #5
0
        public void TestUserManagerGetter()
        {
            var controller = new ExpensesController();

            SetupControllerForTests(controller);
            Assert.AreSame(UserManager, controller.UserManager);
        }
Beispiel #6
0
        public new void Init()
        {
            base.Init();

            _user = UserManager.FindByEmailAsync(TestConfig.TestUserEmail).Result;

            _data = new List <Expense>
            {
                new Expense {
                    Amount = 1, ApplicationUserID = _user.Id, Comment = "AAA", Date = DateTime.Now, Description = "DescAAA"
                },
                new Expense {
                    Amount = 2, ApplicationUserID = _user.Id, Comment = "BBB", Date = DateTime.Now, Description = "DescBBB"
                },
                new Expense {
                    Amount = 3, ApplicationUserID = _user.Id, Comment = "CCC", Date = DateTime.Now, Description = "DescCCC"
                },
                new Expense {
                    Amount = 4, ApplicationUserID = "Some other ID", Comment = "DDD", Date = DateTime.Now, Description = "DescDDD"
                },
            };

            _user.Expenses = _data.Where(d => d.ApplicationUserID == _user.Id).ToList();

            var mockSet = CreateMockDbSet(_data);

            _mockContext = new Mock <ApplicationDbContext>();

            _mockContext.Setup(c => c.Expenses).Returns(mockSet);

            _context = _mockContext.Object;

            _controller = new ExpensesController();
            SetupControllerForTests(_controller);
        }
        public void DeleteExpenseById()
        {
            int userId    = 1;
            int expenseId = 2;

            var expense = new ExpensesViewModel {
                Title = "mock Expenses", Price = 20
            };
            var expenseDTO = new ExpensesDTO {
                Title = "mock Expenses", Price = 20
            };
            var mockRepo = new Mock <IExpensesService>();

            mockRepo.Setup(repo => repo.DeleteExpenseByIdAsync(expenseId, userId))
            .ReturnsAsync(true);
            var mockMapper = new Mock <IMapper>();

            var mockExceptionREpo = new Mock <IExceptionHandler>();
            var controller        = new ExpensesController(mockRepo.Object, mockExceptionREpo.Object, mockMapper.Object);

            // Act
            var okResult = controller.DeleteExpenseById(expenseId, userId).Result;

            // Assert

            Assert.IsType <OkObjectResult>(okResult);
        }
Beispiel #8
0
        public async Task ExpensesController_UpdateStatus_Test()
        {
            bool called                        = false;
            var  expenseRepository             = new Data.Repositories.Fakes.StubIExpenseRepository();
            var  notificationChannelRepository = new Data.Repositories.Fakes.StubINotificationChannelRepository();
            var  notificationService           = new Services.Fakes.StubINotificationService();

            expenseRepository.GetAsyncInt32 = (id) =>
            {
                return(Task.FromResult(new Expense()));
            };

            expenseRepository.UpdateAsyncExpense = (expense) =>
            {
                Assert.AreEqual(expense.Status, ExpenseStatus.Pending);
                called = true;

                return(Task.FromResult(string.Empty));
            };

            var target = new ExpensesController(expenseRepository, new SecurityHelper(), notificationChannelRepository, notificationService);
            await target.UpdateStatus(1, ExpenseStatus.Pending);

            Assert.IsTrue(called);
        }
Beispiel #9
0
        public void GetExpenses_oneValidExpense_Ok()
        {
            var repoExpense1 = new Domain.Expense
            {
                Amount      = 100,
                Category    = "grocery",
                ExpneseDate = new DateTime(2016, 11, 15),
                ID          = 1,
                Merchant    = "pns"
            };
            var repoExpenses = new List <Domain.Expense>()
            {
                repoExpense1
            };
            var repo = new Moq.Mock <IExpenseRepository>();

            repo.Setup <List <Expense> >(t => t.GetAllExpenses())
            .Returns(repoExpenses);

            var fac = new Moq.Mock <ITransactionFactory>();

            fac.Setup <DisplayExpensesTransaction>(m => m.CreateDisplayExpensesTransaction())
            .Returns(new DisplayExpensesTransaction(repo.Object));

            var sut = new ExpensesController(fac.Object, _logger.Object);

            //act
            var actualResponse = sut.Get();
            var contentResult  = actualResponse as OkNegotiatedContentResult <IEnumerable <ViewModels.Expense> >;

            //assert
            Assert.IsNotNull(contentResult, "Ok-200 status was not returned");
            Assert.IsNotNull(contentResult.Content, "No content was returned");
        }
Beispiel #10
0
        //[TestMethod]
        public void GetById()
        {
            ExpensesController expensesController = new ExpensesController();
            string             actualResponse     = expensesController.Get(5);
            string             expectedResponse   = "expense";

            Assert.AreEqual(expectedResponse, actualResponse);
        }
Beispiel #11
0
        public async Task ExpensesController_Add_Exception_Test()
        {
            var expenseTravelRepository       = new Data.Repositories.Fakes.StubIExpenseRepository();
            var notificationChannelRepository = new Data.Repositories.Fakes.StubINotificationChannelRepository();
            var notificationService           = new Services.Fakes.StubINotificationService();

            var target = new ExpensesController(expenseTravelRepository, new SecurityHelper(), notificationChannelRepository, notificationService);
            await target.Add(null);
        }
        public async Task GetExpenses_WhenCalled_GivesListOfExpeses()
        {
            var repo       = new Mock <IExpenseRepository>();
            var mapper     = new Mock <IMapper>();
            var controller = new ExpensesController(mapper.Object, repo.Object);
            var list       = await controller.GetExpenses(1);

            repo.Verify(r => r.GetExpenses(1));
        }
        public async Task GetExpense_WhenCalled_ReturnExpense()
        {
            var repo       = new Mock <IExpenseRepository>();
            var mapper     = new Mock <IMapper>();
            var controller = new ExpensesController(mapper.Object, repo.Object);
            var expense    = await controller.GetExpense(42);

            repo.Verify(r => r.GetExpense(42));
        }
            public void GetsLongTermExpensesFromBusinessLogic()
            {
                var logic = new Mock <Logic>();
                var sut   = new ExpensesController(logic.Object);

                sut.Index();

                logic.Verify(it => it.GetLongTermExpenses());
            }
        public void ExpenseController_SholdReturnDefaultView_WhenIndexIsCalled()
        {
            // Arrange
            var expensesController = new ExpensesController(expenseServiceMock.Object, mappingServiceMock.Object, webHelperMock.Object);

            // Act
            // Assert
            expensesController.WithCallTo(c => c.Index("_", "_", 1)).ShouldRenderDefaultView();
        }
Beispiel #16
0
        //[TestMethod]
        public void Get()
        {
            ExpensesController   expensesController = new ExpensesController();
            IEnumerable <string> actualResponse     = expensesController.Get();
            List <string>        expectedResponse   = new List <string>();

            expectedResponse.Add("expense1");
            expectedResponse.Add("expense2");
            CollectionAssert.AreEqual(expectedResponse, actualResponse.ToList <string>());
        }
        public void WebHelper_SholdCallGetHouseholdIdFromCookieOnce_WhenIndexIsCalled()
        {
            // Arrange
            var expensesController = new ExpensesController(expenseServiceMock.Object, mappingServiceMock.Object, webHelperMock.Object);

            // Act
            expensesController.Index("_", "_", 1);

            // Assert
            webHelperMock.Verify(x => x.GetHouseholdIdFromCookie(), Times.Once);
        }
        public void ExpenseService_SholdCallGetExpensesCountOnce_WhenIndexIsCalled()
        {
            // Arrange
            var expensesController = new ExpensesController(expenseServiceMock.Object, mappingServiceMock.Object, webHelperMock.Object);

            // Act
            expensesController.Index("_", "_", 1);

            // Assert
            expenseServiceMock.Verify(x => x.GetExpensesCount(It.IsAny <Guid>(), It.IsAny <bool>(), It.IsAny <string>()), Times.Once);
        }
        public void ExpensesController_ShouldHaveOneAuthorizeAttribute()
        {
            // Arrange
            var expensesController = new ExpensesController(expenseServiceMock.Object, mappingServiceMock.Object, webHelperMock.Object);

            // Act
            var result = expensesController.GetType().GetCustomAttributes(typeof(AuthorizeAttribute), false).Length;

            // Assert
            Assert.That(result == 1);
        }
            public void GetsRecurringExpensesFromBusinessLogic()
            {
                var logic = new Mock <Logic>();

                GlobalSettings.SystemTime = () => new DateTime(2000, 1, 2, 3, 4, 5);
                var sut = new ExpensesController(logic.Object);

                sut.Index();

                logic.Verify(it => it.GetRecurringExpensesFor(2000, 1));
            }
        public void Pay_ShouldHaveValidateAntiForgeryTokenAttribute()
        {
            // Arrange
            var expensesController = new ExpensesController(expenseServiceMock.Object, mappingServiceMock.Object, webHelperMock.Object);

            // Act
            var result = expensesController.GetType().GetMethod("Pay", new Type[] { typeof(ExpenseViewModel) })
                         .GetCustomAttributes(typeof(ValidateAntiForgeryTokenAttribute), false).Length;

            // Assert
            Assert.That(result == 1);
        }
        public void TotalMonthlyExpences_ShouldReturnDefaultView_WhenCalled()
        {
            // Arrange
            var expensesController = new ExpensesController(expenseServiceMock.Object, mappingServiceMock.Object, webHelperMock.Object);

            this.expenseServiceMock.Setup(x => x.GetTotalExpenses(It.IsAny <Guid>(), It.IsAny <int>(), It.IsAny <int>())).Returns(new TotalMonthlyExpenses());

            // Act
            // Assert
            expensesController.WithCallTo(c => c.TotalMonthlyExpences(1234, 12))
            .ShouldRenderDefaultView();
        }
Beispiel #23
0
        public void SourceDetail_OnExecute_ReturnSourceDetailType()
        {
            //Arrange
            ExpensesController controller = new ExpensesController(_repo, _logger);

            //Act
            var inputDataSource = controller.SourceDetail();
            var requestResult   = inputDataSource as OkObjectResult;

            //Assert
            Assert.IsInstanceOfType(requestResult, typeof(OkObjectResult));
        }
        public void WebHelper_SholdCallGetHouseholdIdFromCookieOnce_WhenTotalMonthlyExpencesIsCalled()
        {
            // Arrange
            var expensesController = new ExpensesController(expenseServiceMock.Object, mappingServiceMock.Object, webHelperMock.Object);

            this.expenseServiceMock.Setup(x => x.GetTotalExpenses(It.IsAny <Guid>(), It.IsAny <int>(), It.IsAny <int>())).Returns(new TotalMonthlyExpenses());

            // Act
            expensesController.TotalMonthlyExpences(1234, 12);

            // Assert
            this.webHelperMock.Verify(x => x.GetHouseholdIdFromCookie(), Times.Once);
        }
        public async Task PutExpenseNotFoundIdTest()
        {
            var mockRepo = new Mock <IExpenseRepository>(MockBehavior.Strict);

            mockRepo.Setup(repo => repo.DetailAsync(It.IsAny <long>()))
            .ReturnsAsync((Expense)null);

            var controller = new ExpensesController(mockRepo.Object, _loggerManager, _mapper);

            var result = await controller.PutExpense(3, GetTestExpenseForUpdateDto());

            var actionResult = Assert.IsType <NotFoundResult>(result);
        }
        public void ExpenseController_SholdRedirectToRoutNamed_HouseholdExpenses_WhenPayIsCalled()
        {
            // Arrange
            var expensesController = new ExpensesController(expenseServiceMock.Object, mappingServiceMock.Object, webHelperMock.Object);
            var model = new ExpenseViewModel()
            {
                Cost = 1M
            };

            // Act
            // Assert
            expensesController.WithCallTo(c => c.Pay(model)).ShouldRedirectToRoute("Household_expenses");
        }
Beispiel #27
0
        public async Task TestGetExpensesAsync()
        {
            var dbContext  = DbContextMocker.GetExpenseManagerDbContext(nameof(TestGetExpensesAsync));
            var controller = new ExpensesController(dbContext);

            var response = await controller.GetExpense();

            var value = response.Value as List <Expense>;

            dbContext.Dispose();

            Assert.IsType <ActionResult <IEnumerable <Expense> > >(response);
            Assert.Equal(3, value.Count);
        }
        public async Task GetExpenseFromNotFoundIdTest()
        {
            var mockRepo = new Mock <IExpenseRepository>(MockBehavior.Strict);

            mockRepo.Setup(repo => repo.DetailAsync(It.IsAny <long>()))
            .ReturnsAsync((Expense)null);

            var controller = new ExpensesController(mockRepo.Object, _loggerManager, _mapper);

            var result = await controller.GetExpense(1);

            Assert.IsType <NotFoundResult>(result.Result);
            Assert.Null(result.Value);
        }
Beispiel #29
0
        public void SourceDetail_OnExecute_ReturnSourceDetail()
        {
            //Arrange
            ExpensesController controller = new ExpensesController(_repo, _logger);

            //Act
            var             inputDataSource = controller.SourceDetail();
            var             requestResult   = inputDataSource as OkObjectResult;
            InputDataSource result          = (InputDataSource)requestResult.Value;

            //Assert
            Assert.AreEqual(_repo.GetSourceDetails().InputDataSourceName, result.InputDataSourceName);
            Assert.AreEqual(_repo.GetSourceDetails().InputDataSourceType, result.InputDataSourceType);
        }
Beispiel #30
0
        public void Expenses_OnExecute_ReturnExpenses()
        {
            //Arrange
            ExpensesController controller = new ExpensesController(_repo, _logger);

            //Act
            var            inputDataSource = controller.Expenses();
            var            requestResult   = inputDataSource as OkObjectResult;
            List <Expense> txnList         = (List <Expense>)requestResult.Value;

            //Assert
            Assert.AreEqual(2, txnList.Count);
            CollectionAssert.AreEqual(_repo.GetExpenses().ToList(), txnList, new ExpenseComparer());
        }