public void Modified_Expense_Should_Have_Different_Values()
        {
            var expenseInput = new ExpenseInputModel()
            {
                Id       = 1,
                Payee    = TestData.TestData.RandomAlphaNumericString(8),
                Amount   = TestData.TestData.RandomDecimal(),
                Category = TestData.TestData.RandomCategory(),
                Account  = TestData.TestData.RandomAccount(),
                Date     = DateTime.Today,
                Repeat   = TestData.TestData.RandomBoolean(),
                Impulse  = TestData.TestData.RandomBoolean(),
                Memo     = TestData.TestData.RandomAlphaNumericString(10)
                           + " " + TestData.TestData.RandomAlphaNumericString(10)
                           + " " + TestData.TestData.RandomAlphaNumericString(10)
                           + " " + TestData.TestData.RandomAlphaNumericString(10)
                           + " " + TestData.TestData.RandomAlphaNumericString(10),
                ColorCode = TestData.TestData.RandomColorCode(),
            };

            _sut.Modify(1, expenseInput);
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Payee == expenseInput.Payee)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Amount == expenseInput.Amount)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Account == expenseInput.Account)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Category == expenseInput.Category)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Date == expenseInput.Date)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Repeat == expenseInput.Repeat)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Impulse == expenseInput.Impulse)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Memo == expenseInput.Memo)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.ColorCode == expenseInput.ColorCode)));
        }
        public void Modified_Expense_Should_Have_Different_Amount()
        {
            var expenseInput = new ExpenseInputModel()
            {
                Id        = 1,
                Payee     = TestData.TestData.RandomAlphaNumericString(8),
                Amount    = TestData.TestData.RandomDecimal(),
                Category  = "Fun Money",
                Account   = TestData.TestData.RandomAccount(),
                Date      = DateTime.Today,
                Repeat    = false,
                Impulse   = true,
                Memo      = "Closing Time",
                ColorCode = "Pink"
            };

            _sut.Modify(1, expenseInput);
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Payee == expenseInput.Payee)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Amount == expenseInput.Amount)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Account == expenseInput.Account)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Category == expenseInput.Category)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Date == expenseInput.Date)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Repeat == expenseInput.Repeat)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Impulse == expenseInput.Impulse)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.Memo == expenseInput.Memo)));
            _session.Verify(x => x.SaveOrUpdate(It.Is <ExpenseEntity>(y => y.ColorCode == expenseInput.ColorCode)));
        }
        public IActionResult Create([FromBody] ExpenseInputModel expenseInputModels)
        {
            try
            {
                var expenseEntity = new ExpenseEntity();
                expenseEntity.Account   = expenseInputModels.Account;
                expenseEntity.Amount    = expenseInputModels.Amount;
                expenseEntity.Category  = expenseInputModels.Category;
                expenseEntity.ColorCode = expenseInputModels.ColorCode;
                expenseEntity.Date      = expenseInputModels.Date;
                expenseEntity.Impulse   = expenseInputModels.Impulse;
                expenseEntity.Memo      = expenseInputModels.Memo;
                expenseEntity.Payee     = expenseInputModels.Payee;
                expenseEntity.Repeat    = expenseInputModels.Repeat;

                using (ISession session = _inHibernateSession.OpenSession())
                {
                    using (ITransaction transaction = session.BeginTransaction())
                    {
                        session.Save(expenseEntity);
                        transaction.Commit();
                    }
                }
                return(new JsonResult(expenseEntity));
            }
            catch (Exception e)
            {
                return(new JsonResult(e));
            }
        }
Пример #4
0
        public async Task <IActionResult> AddExpense()
        {
            var userId          = this.GetUserId <string>();
            var language        = this.GetCurrentLanguage();
            var componentTypeId = (int)ComponentTypes.PaymentComponent;

            var model = new ExpenseInputModel
            {
                ExpenseGroupListItems     = await this.expenseGroupService.AllLocalized <ExpenseGroupSelectListItem>(language),
                ComponentsSelectListItems = await this.componentsService.AllByUserIdAndTypeIdActiveLocalized <ComponentsSelectListItem>(userId, componentTypeId, language)
            };

            return(this.View(model));
        }
Пример #5
0
        public async Task <IActionResult> Edit(ExpenseInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values));
            }

            try
            {
                var userId         = base.GetUserIdFromAuthorizeHeader();
                var expenseDbModel = mapper.Map <Expense>(model);
                var editedExpense  = await expensesService.Edit <ExpenseDTO>(expenseDbModel, userId);

                return(Ok(editedExpense));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public void Should_Added_Expense_Should_Not_Return_Null()
        {
            var expenseInput = new ExpenseInputModel()
            {
                Id        = 10,
                Payee     = "Amazon",
                Amount    = 18.00M,
                Category  = "Stuff I Forget to Budget For",
                Account   = "Middleburg",
                Date      = DateTime.Today,
                Repeat    = false,
                Impulse   = true,
                Memo      = "Dry Erase Paper Sheets",
                ColorCode = "Blue"
            };

            var post = _sut.Create(expenseInput);

            Assert.IsNotNull(post);
        }
        public void Added_Expense_Should_Commit()
        {
            var expenseInput = new ExpenseInputModel()
            {
                Id        = 10,
                Payee     = "Amazon",
                Amount    = 18.00M,
                Category  = "Stuff I Forget to Budget For",
                Account   = "Middleburg",
                Date      = DateTime.Today,
                Repeat    = false,
                Impulse   = true,
                Memo      = "Dry Erase Paper Sheets",
                ColorCode = "Blue"
            };

            _sut.Create(expenseInput);

            _transaction.Verify(x => x.Commit(), Times.Once);
        }
Пример #8
0
        public async Task <IActionResult> Create(ExpenseInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.Values));
            }

            try
            {
                var expenseDbModel = mapper.Map <Expense>(model);
                var stream         = new MemoryStream();
                //await model.Image.CopyToAsync(stream);
                await expensesService.Create(expenseDbModel, null);

                return(Ok());
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public void Should_Added_Expense_Should_Return_Json()
        {
            var expenseInput = new ExpenseInputModel()
            {
                Id        = 10,
                Payee     = "Amazon",
                Amount    = 18.00M,
                Category  = "Stuff I Forget to Budget For",
                Account   = "Middleburg",
                Date      = DateTime.Today,
                Repeat    = false,
                Impulse   = true,
                Memo      = "Dry Erase Paper Sheets",
                ColorCode = "Blue"
            };

            var post = _sut.Create(expenseInput);

            var expectedType = new JsonResult(expenseInput);
            var result       = post as JsonResult;

            Assert.IsInstanceOf(expectedType.GetType(), result);
        }
        public void Added_Expense_Should_Save()
        {
            var expenseInput = new ExpenseInputModel()
            {
                Id        = 10,
                Payee     = "Amazon",
                Amount    = 18.00M,
                Category  = "Stuff I Forget to Budget For",
                Account   = "Middleburg",
                Date      = DateTime.Today,
                Repeat    = false,
                Impulse   = true,
                Memo      = "Dry Erase Paper Sheets",
                ColorCode = "Blue"
            };

            var expenseEntity = new ExpenseEntity()
            {
                Id        = 10,
                Payee     = "Amazon",
                Amount    = 18.00M,
                Category  = "Stuff I Forget to Budget For",
                Account   = "Middleburg",
                Date      = DateTime.Today,
                Repeat    = false,
                Impulse   = true,
                Memo      = "Dry Erase Paper Sheets",
                ColorCode = "Blue"
            };

            _session.Setup(x => x.Save(It.IsAny <ExpenseEntity>()))
            .Returns(() => expenseEntity);

            _sut.Create(expenseInput);

            _session.Verify(x => x.Save(It.IsAny <ExpenseEntity>()), Times.Once);
        }
        public ExpenseEntity Modify(int id, [FromBody] ExpenseInputModel expenseInputModel)
        {
            using (ISession session = _inHibernateSession.OpenSession())
            {
                var expenseEntity = session.Query <ExpenseEntity>().Where(b => b.Id == id).FirstOrDefault();
                expenseEntity.Account   = expenseInputModel.Account;
                expenseEntity.Category  = expenseInputModel.Category;
                expenseEntity.ColorCode = expenseInputModel.ColorCode;
                expenseEntity.Memo      = expenseInputModel.Memo;
                expenseEntity.Payee     = expenseInputModel.Payee;
                expenseEntity.Amount    = expenseInputModel.Amount;
                expenseEntity.Date      = expenseInputModel.Date;
                expenseEntity.Impulse   = expenseInputModel.Impulse;
                expenseEntity.Repeat    = expenseInputModel.Repeat;
                expenseEntity.Repeat    = expenseEntity.Repeat;

                using (ITransaction transaction = session.BeginTransaction())
                {
                    session.SaveOrUpdate(expenseEntity);
                    transaction.Commit();
                    return(expenseEntity);
                }
            }
        }
Пример #12
0
        public async Task <IActionResult> AddExpense(ExpenseInputModel model)
        {
            var userId = this.GetUserId <string>();

            if (!this.ModelState.IsValid)
            {
                var language        = this.GetCurrentLanguage();
                var componentTypeId = (int)ComponentTypes.PaymentComponent;

                model.ExpenseGroupListItems = await this.expenseGroupService.AllLocalized <ExpenseGroupSelectListItem>(language);

                model.ComponentsSelectListItems = await this.componentsService.AllByUserIdAndTypeIdActiveLocalized <ComponentsSelectListItem>(userId, componentTypeId, language);

                return(this.View(model));
            }

            if (!this.componentsService.CheckIfComponentHasEnoughAmount(userId, model.ComponentId, model.ExpenseAmount))
            {
                this.AddAlertMessageToTempData(AlertType.Error, Resources.Error, Resources.NotEnoughAmount);

                var language        = this.GetCurrentLanguage();
                var componentTypeId = (int)ComponentTypes.PaymentComponent;

                model.ExpenseGroupListItems = await this.expenseGroupService.AllLocalized <ExpenseGroupSelectListItem>(language);

                model.ComponentsSelectListItems = await this.componentsService.AllByUserIdAndTypeIdActiveLocalized <ComponentsSelectListItem>(userId, componentTypeId, language);

                return(this.View(model));
            }

            try
            {
                var entityToAdd = new Expense
                {
                    UserId         = userId,
                    ExpenseGroupId = model.ExpenseGroupId,
                    Description    = model.Description,
                    ExpenseAmount  = model.ExpenseAmount,
                    ExpenseDate    = model.ExpenseDate,
                    ComponentId    = model.ComponentId
                };

                await this.expensesService.AddAsync(entityToAdd);

                bool isComponentUpdated = await this.componentsService.RemoveAmount(userId, model.ComponentId, model.ExpenseAmount);

                if (isComponentUpdated)
                {
                    this.AddAlertMessageToTempData(AlertType.Success, Resources.Success, Resources.ExpenseAddSuccess);
                }
                else
                {
                    this.AddAlertMessageToTempData(AlertType.Error, Resources.Error, Resources.ExpenseAddError);
                }
            }
            catch (Exception)
            {
                this.AddAlertMessageToTempData(AlertType.Error, Resources.Error, Resources.ExpenseAddError);
            }

            return(this.RedirectToAction("Index"));
        }
Пример #13
0
        public ActionResult Edit(int id, [FromBody] ExpenseInputModel expenseInputModel)
        {
            var expense = _expenseModificationService.Modify(id, expenseInputModel);

            return(new JsonResult(expense));
        }
        public void Setup()
        {
            _random   = new Random();
            _randomId = _random.Next(1, 3);

            expenseInput = new ExpenseInputModel()
            {
                Id        = 1,
                Payee     = "Toys R Us",
                Amount    = 100.00M,
                Category  = "Fun Money",
                Account   = "Suntrust",
                Date      = DateTime.Today,
                Repeat    = false,
                Impulse   = true,
                Memo      = "He-man Toys",
                ColorCode = "Pink"
            };

            expenseEntity = new ExpenseEntity()
            {
                Id        = 1,
                Payee     = "Toys R Us",
                Amount    = 100.00M,
                Category  = "Fun Money",
                Account   = "Suntrust",
                Date      = DateTime.Today,
                Repeat    = false,
                Impulse   = true,
                Memo      = "He-man Toys",
                ColorCode = "Pink"
            };

            modifiedExpense = new ExpenseEntity()
            {
                Id        = 1,
                Payee     = "Toys R Us",
                Amount    = 100.00M,
                Category  = "Fun Money",
                Account   = "Suntrust",
                Date      = DateTime.Today,
                Repeat    = false,
                Impulse   = true,
                Memo      = "He-man Toys",
                ColorCode = "Pink"
            };

            var expenseEntityList = new List <ExpenseEntity>()
            {
                new ExpenseEntity()
                {
                    Id        = 1,
                    Payee     = "Toys R Us",
                    Amount    = 100.00M,
                    Category  = "Fun Money",
                    Account   = "Suntrust",
                    Date      = DateTime.Today,
                    Repeat    = false,
                    Impulse   = true,
                    Memo      = "He-man Toys",
                    ColorCode = "Pink"
                },

                new ExpenseEntity
                {
                    Id        = 2,
                    Payee     = "Amazon",
                    Amount    = 22.00M,
                    Category  = "Popcorn",
                    Account   = "Wells Fargo",
                    Date      = DateTime.Today,
                    Repeat    = true,
                    Impulse   = false,
                    Memo      = "Pop Secret Homestyle",
                    ColorCode = "Grey"
                },

                new ExpenseEntity
                {
                    Id        = 3,
                    Payee     = "Alamo Drafthouse",
                    Amount    = 7.00M,
                    Category  = "Fun Money",
                    Account   = "Middleburg Bank",
                    Date      = DateTime.Today,
                    Repeat    = false,
                    Impulse   = false,
                    Memo      = "Captain Marvel Tickets",
                    ColorCode = "Red"
                }
            };

            _transaction = new Mock <ITransaction>();
            _session     = new Mock <ISession>();
            _session.Setup(t => t.BeginTransaction())
            .Returns(_transaction.Object);

            //_session.Setup(x => x.Query<ExpenseEntity>())
            //    .Returns(() => new List<ExpenseEntity> { expenseEntity }.AsQueryable());

            _session.Setup(x => x.Query <ExpenseEntity>())
            .Returns(() => new List <ExpenseEntity> {
                modifiedExpense
            }.AsQueryable());

            _nhibernateSession = new Mock <INHibernateSession>();
            _nhibernateSession.Setup(x => x.OpenSession())
            .Returns(() => _session.Object);

            _expense = new Mock <ExpenseEntity>();
            //_session.Setup(It.Is<ExpenseEntity>(e => e.Account)).Returns("Wells Fargo");
            _expense.Setup(ee => ee.Account).Returns("Wells Fargo");
            _expense.SetupGet(m => m.Payee).Returns("Someone Nice");
            _expense.Setup(ee => ee.Date).Returns(System.DateTime.Today);
            _expense.Setup(ee => ee.Account).Returns("Middleburg Bank");
            _expense.Setup(ee => ee.Repeat).Returns(true);
            _expense.Setup(ee => ee.Impulse).Returns(true);
            _expense.Setup(ee => ee.Memo).Returns("expense was modified");
            _expense.Setup(ee => ee.ColorCode).Returns("Cornflower-Blue");

            _sut = new ExpenseModificationService(_nhibernateSession.Object);
        }
        public IActionResult Post([FromBody] ExpenseInputModel ExpenseInputModel)
        {
            var expense = _iExpenseCreationService.Create(ExpenseInputModel);

            return(expense);
        }