public async Task Add_ValidModel_DateGreaterThanNow_ProductsNull_ReturnsRedirect()
        {
            //Arrange
            var month = DateTime.Today.Month + 1;
            var year  = DateTime.Today.Year;

            if (month > 12)
            {
                year += 1;
                month = 1;
            }
            PayingItemModel pItemModel = new PayingItemModel()
            {
                PayingItem = new PayingItem()
                {
                    AccountID = 1, CategoryID = 1, Date = new DateTime(year, month, 1), UserId = "1", ItemID = 1
                },
                Products = null,
            };
            var target = new PayingItemController(null, null, _payingItemService.Object, null, null);

            //Act
            var tmpResult = await target.Add(new WebUser()
            {
                Id = "1"
            }, pItemModel, 1);

            //Assert
            _payingItemService.Verify(m => m.CreateAsync(It.IsAny <PayingItem>()), Times.Exactly(1));
            Assert.IsInstanceOfType(tmpResult, typeof(RedirectToRouteResult));
        }
        public async Task Add_ValidModel_ProductsHaveSumm_ReturnsRedirect()
        {
            PayingItemModel pItemModel = new PayingItemModel()
            {
                PayingItem = new PayingItem()
                {
                    AccountID = 1, CategoryID = 1, Date = DateTime.Today, UserId = "1", ItemID = 1
                },
                Products = new List <Product>()
                {
                    new Product()
                    {
                        Price = 100
                    },
                    new Product()
                    {
                        Price = 200
                    }
                }
            };
            var target = new PayingItemController(_pItemProductHelper.Object, _payingItemHelper.Object, _payingItemService.Object, null, null);

            var result = await target.Add(new WebUser()
            {
                Id = "1"
            }, pItemModel, 2);

            _payingItemHelper.Verify(m => m.CreateCommentWhileAdd(pItemModel), Times.Exactly(1));
            _payingItemService.Verify(m => m.CreateAsync(It.IsAny <PayingItem>()), Times.Exactly(1));
            _pItemProductHelper.Verify(m => m.CreatePayingItemProduct(pItemModel), Times.Exactly(1));
            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
        }
Пример #3
0
        public async Task Edit_GetPayingItemEditViewModel_ReturnsPartialViewResult()
        {
            var viewModel = new PayingItemEditModel();

            _payingItemEditViewModelCreatorMock.Setup(x => x.CreateViewModel(It.IsAny <int>())).ReturnsAsync(viewModel);
            _accountServiceMock.Setup(x => x.GetList()).Returns(new List <Account>());
            _categoryServiceMock.Setup(x => x.GetList()).Returns(new List <Category>());
            _categoryServiceMock.Setup(x => x.GetItemAsync(It.IsAny <int>())).ReturnsAsync(new Category()
            {
                TypeOfFlowID = 1
            });
            var target = new PayingItemController(
                null,
                _categoryServiceMock.Object,
                _accountServiceMock.Object,
                null,
                _payingItemEditViewModelCreatorMock.Object,
                null);

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, 1, 5);

            Assert.IsInstanceOfType(result, typeof(PartialViewResult));
        }
Пример #4
0
        public async Task Edit_Post_InvalidModel_ReturnsPartialView()
        {
            _accountServiceMock.Setup(x => x.GetList()).Returns(new List <Account>());
            _categoryServiceMock.Setup(x => x.GetList()).Returns(new List <Category>());
            _categoryServiceMock.Setup(x => x.GetItemAsync(It.IsAny <int>())).ReturnsAsync(new Category()
            {
                TypeOfFlowID = 1
            });
            var target         = new PayingItemController(null, _categoryServiceMock.Object, _accountServiceMock.Object, null, null, null);
            var pItemEditModel = new PayingItemEditModel()
            {
                PayingItem = new PayingItem()
                {
                }
            };

            target.ModelState.AddModelError("error", "error");

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, pItemEditModel);

            Assert.IsInstanceOfType(result, typeof(PartialViewResult));
        }
        public async Task Can_Save_PayingItem_With_Same_Category()
        {
            PayingItemEditModel.OldCategoryId = 2;
            var pItemEditModel = new PayingItemEditModel()
            {
                PricesAndIdsInItem = new List <PriceAndIdForEdit>(),
                PayingItem         = new PayingItem()
                {
                    CategoryID = 2
                }
            };
            var target = new PayingItemController(_pItemProductHelper.Object, _payingItemHelper.Object,
                                                  _payingItemService.Object, _categoryService.Object, _accountService.Object);

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, pItemEditModel);

            var routeResult = (RedirectToRouteResult)result;

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
            Assert.AreEqual(routeResult.RouteValues["action"], "List");
            _payingItemService.Verify(m => m.UpdateAsync(pItemEditModel.PayingItem));
            _pItemProductHelper.Verify(m => m.UpdatePayingItemProduct(pItemEditModel));
        }
        public async Task Edit_Get_Can_Get_PayingItem_For_Edit_With_SubCategories()
        {
            _payingItemService.Setup(x => x.GetItemAsync(It.IsAny <int>())).ReturnsAsync(new PayingItem()
            {
                CategoryID = 1
            });
            _payingItemService.Setup(x => x.GetList()).Returns(new List <PayingItem>()
            {
                new PayingItem()
                {
                    CategoryID = 1
                }
            });
            var target = new PayingItemController(_pItemProductHelper.Object, _payingItemHelper.Object,
                                                  _payingItemService.Object, _categoryService.Object, _accountService.Object);

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, 1, 1);

            var model = ((PartialViewResult)result).ViewData.Model as PayingItemEditModel;

            _pItemProductHelper.Verify(m => m.FillPayingItemEditModel(model, It.IsAny <int>()));
            Assert.AreEqual(PayingItemEditModel.OldCategoryId, 1);
            Assert.IsInstanceOfType(result, typeof(PartialViewResult));
        }
        public void ExpensiveCategories()
        {
            //Arrange
            _payingItemService.Setup(m => m.GetList()).Returns(new List <PayingItem>()
            {
                new PayingItem()
                {
                    UserId = "1", Category = new Category()
                    {
                        TypeOfFlowID = 2, Name = "Cat1"
                    }, Date = DateTime.Now, Summ = 100
                },
                new PayingItem()
                {
                    UserId = "1", Category = new Category()
                    {
                        TypeOfFlowID = 2, Name = "Cat2"
                    }, Date = DateTime.Now, Summ = 200
                },
                new PayingItem()
                {
                    UserId = "2", Category = new Category()
                    {
                        TypeOfFlowID = 2
                    }, Date = DateTime.Now
                },
                new PayingItem()
                {
                    UserId = "2", Category = new Category()
                    {
                        TypeOfFlowID = 12
                    }, Date = DateTime.Now
                },
                new PayingItem()
                {
                    UserId = "1", Category = new Category()
                    {
                        TypeOfFlowID = 12
                    }, Date = DateTime.Now
                },
            });
            WebUser user = new WebUser()
            {
                Id = "1"
            };
            PayingItemController target = new PayingItemController(null, null, _payingItemService.Object, null, null);

            //Act
            var result = ((PartialViewResult)target.ExpensiveCategories(user)).ViewData.Model as List <OverAllItem>;

            //Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(result[0].Category, "Cat2");
            Assert.AreEqual(result[1].Category, "Cat1");
            Assert.AreEqual(result.Count, 2);
        }
Пример #8
0
        public async Task Edit_Get_RaisesServiceException()
        {
            _payingItemServiceMock.Setup(m => m.GetItemAsync(It.IsAny <int>())).Throws <ServiceException>();
            _categoryServiceMock.Setup(m => m.GetActiveGategoriesByUser(It.IsAny <string>()))
            .ReturnsAsync(new List <Category>());
            _accountServiceMock.Setup(m => m.GetListAsync()).ReturnsAsync(new List <Account>());
            var target = new PayingItemController(_payingItemServiceMock.Object, _categoryServiceMock.Object, _accountServiceMock.Object, null, null, null);

            await target.Edit(new WebUser(), 1, It.IsAny <int>());
        }
        public void Can_Paginate()
        {
            DateTime date = DateTime.Now - TimeSpan.FromDays(2);

            _payingItemService.Setup(m => m.GetList()).Returns(new PayingItem[]
            {
                new PayingItem()
                {
                    AccountID = 4, CategoryID = 4, Comment = "PayingItem 4", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat1"
                    }
                },
                new PayingItem()
                {
                    AccountID = 1, CategoryID = 1, Comment = "PayingItem 1", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat2"
                    }
                },
                new PayingItem()
                {
                    AccountID = 2, CategoryID = 2, Comment = "PayingItem 2", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat3"
                    }
                },
                new PayingItem()
                {
                    AccountID = 3, CategoryID = 2, Comment = "PayingItem 3", Date = DateTime.Now - TimeSpan.FromDays(1), UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat4"
                    }
                }
            });
            var target =
                new PayingItemController(null, null, _payingItemService.Object, null, null)
            {
                ItemsPerPage = 2
            };

            var pItemToView = ((PartialViewResult)target.List(new WebUser()
            {
                Id = "1"
            }, 2)).Model as PayingItemToView;
            var result      = pItemToView?.PayingItems.ToArray();

            Assert.AreEqual(result.Count(), 2);
            Assert.AreEqual(result[0].AccountID, 1);
            Assert.AreEqual(result[1].AccountID, 2);
        }
Пример #10
0
        public void Can_Paginate()
        {
            DateTime date     = DateTime.Today.AddDays(-2);
            var      itemList = new PayingItem[]
            {
                new PayingItem()
                {
                    AccountID = 4, CategoryID = 4, Comment = "PayingItem 4", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat1"
                    }
                },
                new PayingItem()
                {
                    AccountID = 1, CategoryID = 1, Comment = "PayingItem 1", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat2"
                    }
                },
                new PayingItem()
                {
                    AccountID = 2, CategoryID = 2, Comment = "PayingItem 2", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat3"
                    }
                },
                new PayingItem()
                {
                    AccountID = 3, CategoryID = 2, Comment = "PayingItem 3", Date = DateTime.Now - TimeSpan.FromDays(1), UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat4"
                    }
                }
            };

            _payingItemServiceMock.Setup(m => m.GetList(It.IsAny <Expression <Func <PayingItem, bool> > >())).Returns(itemList.Where(i => i.Date >= DateTime.Today.AddDays(-2) && i.UserId == "1"));
            var target = new PayingItemController(_payingItemServiceMock.Object, null, null, null, null, null)
            {
                ItemsPerPage = 2
            };

            var pItemToView = ((PartialViewResult)target.List(new WebUser()
            {
                Id = "1"
            }, 2)).Model as PayingItemsCollectionModel;
            var result      = pItemToView?.PayingItems.ToArray();

            Assert.AreEqual(2, result.Count());
            Assert.AreEqual(1, result[0].AccountID);
            Assert.AreEqual(2, result[1].AccountID);
        }
Пример #11
0
        public async Task Delete_RedirectsToActionList()
        {
            PayingItemController target = new PayingItemController(_payingItemServiceMock.Object, null, null, null, null, null);

            var result = await target.Delete(new WebUser(), It.IsAny <int>());

            var redirect = (RedirectToRouteResult)result;

            _payingItemServiceMock.Verify(m => m.DeleteAsync(It.IsAny <int>()), Times.Exactly(1));
            Assert.AreEqual(redirect.RouteValues["action"], "List");
        }
Пример #12
0
        public void List_ReturnsPartialView_With_PayingItemsByDate()
        {
            DateTime date     = DateTime.Now - TimeSpan.FromDays(2);
            var      itemList = new List <PayingItem>()
            {
                new PayingItem()
                {
                    AccountID = 1, CategoryID = 1, Comment = "PayingItem 1", Date = "22.11.2015".AsDateTime(),
                    Category  = new Category()
                    {
                        Name = "Cat1"
                    }
                },
                new PayingItem()
                {
                    AccountID = 2, CategoryID = 1, Comment = "PayingItem 2", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat2"
                    }
                },
                new PayingItem()
                {
                    AccountID = 3, CategoryID = 2, Comment = "PayingItem 3", Date = date,
                    UserId    = "1", Category = new Category()
                    {
                        Name = "Cat3"
                    }
                },
                new PayingItem()
                {
                    AccountID = 4, CategoryID = 2, Comment = "PayingItem 4", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat4"
                    }
                }
            };

            _payingItemServiceMock.Setup(m => m.GetList(It.IsAny <Expression <Func <PayingItem, bool> > >()))
            .Returns(itemList.Where(i => DateTime.Now.Date - i.Date <= TimeSpan.FromDays(2) && i.UserId == "1"));
            PayingItemController target = new PayingItemController(_payingItemServiceMock.Object, null, null, null, null, null);

            var result = ((PartialViewResult)target.List(new WebUser()
            {
                Id = "1"
            })).Model as PayingItemsCollectionModel;

            Assert.AreEqual(true, result.PayingItems.Count() == 3);
        }
        public async Task Edit_Get_ReturnsRedirectToListAjax()
        {
            var target = new PayingItemController(null, null, _payingItemService.Object, _categoryService.Object, _accountService.Object);

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, 1, 5);

            var redirectResult = (RedirectToRouteResult)result;

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
            Assert.AreEqual(redirectResult.RouteValues["action"], "ListAjax");
        }
        public void List_ReturnsPartialView_With_PayingItemsByDate()
        {
            DateTime date = DateTime.Now - TimeSpan.FromDays(2);

            _payingItemService.Setup(m => m.GetList()).Returns(new List <PayingItem>()
            {
                new PayingItem()
                {
                    AccountID = 1, CategoryID = 1, Comment = "PayingItem 1", Date = "22.11.2015".AsDateTime(),
                    Category  = new Category()
                    {
                        Name = "Cat1"
                    }
                },
                new PayingItem()
                {
                    AccountID = 2, CategoryID = 1, Comment = "PayingItem 2", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat2"
                    }
                },
                new PayingItem()
                {
                    AccountID = 3, CategoryID = 2, Comment = "PayingItem 3", Date = date,
                    UserId    = "1", Category = new Category()
                    {
                        Name = "Cat3"
                    }
                },
                new PayingItem()
                {
                    AccountID = 4, CategoryID = 2, Comment = "PayingItem 4", Date = date, UserId = "1",
                    Category  = new Category()
                    {
                        Name = "Cat4"
                    }
                }
            });
            PayingItemController target = new PayingItemController(null, null, _payingItemService.Object, null, null);

            var result = ((PartialViewResult)target.List(new WebUser()
            {
                Id = "1"
            })).Model as PayingItemToView;

            Assert.AreEqual(result.PayingItems.Count() == 3, true);
        }
Пример #15
0
        public async Task Edit_CannotGetPayingItemEditViewModel_ReturnsRedirectToListAjax()
        {
            PayingItemEditModel viewModel = null;

            _payingItemEditViewModelCreatorMock.Setup(x => x.CreateViewModel(It.IsAny <int>())).ReturnsAsync(viewModel);
            var target = new PayingItemController(_payingItemServiceMock.Object, _categoryServiceMock.Object, _accountServiceMock.Object, null, _payingItemEditViewModelCreatorMock.Object, null);

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, 1, 5);

            var routes = (result as RedirectToRouteResult).RouteValues;

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
            Assert.AreEqual(routes["action"], "ListAjax");
        }
        public async Task Edit_Cannot_Get_PayingItem_Returns_RedirectToRouteResult()
        {
            PayingItem pItem = null;

            _payingItemService.Setup(m => m.GetItemAsync(It.IsAny <int>())).ReturnsAsync(pItem);
            var target = new PayingItemController(null, null, _payingItemService.Object, _categoryService.Object, _accountService.Object);

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, 1, 5);

            var routes = (result as RedirectToRouteResult).RouteValues;

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
            Assert.AreEqual(routes["action"], "ListAjax");
        }
        public async Task Edit_RaisesWebUiExceptionWithInnerWebUiException()
        {
            _payingItemService.Setup(m => m.GetList()).Throws <ServiceException>();
            _categoryService.Setup(m => m.GetActiveGategoriesByUser(It.IsAny <string>()))
            .ReturnsAsync(new List <Category>());
            _accountService.Setup(m => m.GetListAsync()).ReturnsAsync(new List <Account>());
            var target = new PayingItemController(null, null, _payingItemService.Object, _categoryService.Object, _accountService.Object);

            try
            {
                await target.Edit(new WebUser(), It.IsAny <int>(), It.IsAny <int>());
            }
            catch (Exception e)
            {
                Assert.IsInstanceOfType(e.InnerException, typeof(WebUiException));
            }
        }
        public async Task Edit_Get_WithOutSubCategories_ReturnsPartialView()
        {
            _payingItemService.Setup(x => x.GetList()).Returns(new List <PayingItem>());
            _payingItemService.Setup(x => x.GetItemAsync(It.IsAny <int>())).ReturnsAsync(new PayingItem()
            {
                ItemID = 6
            });
            var target = new PayingItemController(null, null, _payingItemService.Object, _categoryService.Object, _accountService.Object);

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, 1, 6);

            var model = ((PartialViewResult)result).ViewData.Model as PayingItemEditModel;

            Assert.AreEqual(model.PayingItem.ItemID, 6);
            Assert.AreEqual(model.PayingItemProducts.Count, 0);
            Assert.IsInstanceOfType(result, typeof(PartialViewResult));
        }
Пример #19
0
        public async Task Add_ValidModel_ReturnsRedirect_ToAction_List()
        {
            var payingItemModel = new PayingItemModel()
            {
                PayingItem = new PayingItem()
                {
                    AccountID = 1, CategoryID = 1, Date = DateTime.Today, UserId = "1", ItemID = 1
                },
                Products = new List <Product>()
            };
            var target = new PayingItemController(null, null, null, _payingItemCreator.Object, null, null);

            var result = await target.Add(new WebUser()
            {
                Id = "1"
            }, payingItemModel, It.IsAny <int>());

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
            Assert.AreEqual("List", ((RedirectToRouteResult)result).RouteValues["action"]);
        }
Пример #20
0
        public async Task Add_ValidModel_Throws_WebUiExceptionWithInnerWebUiException()
        {
            _payingItemCreator.Setup(m => m.CreatePayingItemFromViewModel(It.IsAny <PayingItemModel>())).ThrowsAsync(new WebUiException());
            var target          = new PayingItemController(null, null, null, _payingItemCreator.Object, null, null);
            var user            = new WebUser();
            var payingItemModel = new PayingItemModel()
            {
                PayingItem = new PayingItem(),
                Products   = new List <Product>()
            };

            try
            {
                await target.Add(user, payingItemModel, It.IsAny <int>());
            }
            catch (WebUiException e)
            {
                Assert.IsInstanceOfType(e.InnerException, typeof(WebUiException));
            }
        }
Пример #21
0
        public async Task Add_ReturnPartialView()
        {
            _categoryServiceMock.Setup(m => m.GetActiveGategoriesByUser(It.IsAny <string>())).ReturnsAsync(new List <Category>());
            _accountServiceMock.Setup(m => m.GetListAsync()).ReturnsAsync(new List <Account>());
            var target = new PayingItemController(null, _categoryServiceMock.Object, _accountServiceMock.Object, null, null, null);

            var result = await target.Add(new WebUser()
            {
                Id = "1"
            }, 1);

            var model   = ((PartialViewResult)result).ViewData.Model as PayingItemModel;
            var viewBag = ((PartialViewResult)result).ViewBag;

            Assert.IsInstanceOfType(result, typeof(PartialViewResult));
            Assert.AreEqual(model.Products.Count, 0);
            Assert.IsNotNull(model.PayingItem);
            Assert.AreEqual(0, viewBag.Categories.Count);
            Assert.AreEqual(0, viewBag.Accounts.Count);
        }
Пример #22
0
        public async Task Edit_Get_RaisesWebUiExceptionWithInnerServiceException()
        {
            _payingItemEditViewModelCreatorMock.Setup(x => x.CreateViewModel(It.IsAny <int>())).Throws(new ServiceException());
            var target = new PayingItemController(
                null,
                null,
                null,
                null,
                _payingItemEditViewModelCreatorMock.Object,
                null);

            try
            {
                await target.Edit(new WebUser(), 1, It.IsAny <int>());
            }
            catch (WebUiException e)
            {
                Assert.IsInstanceOfType(e.InnerException, typeof(ServiceException));
            }
        }
        public async Task Edit_RaisesWebuiExceptionWithInnerWebUiHelperException()
        {
            _payingItemService.Setup(m => m.GetList()).Returns(new List <PayingItem>());
            _payingItemService.Setup(m => m.GetItemAsync(It.IsAny <int>())).ReturnsAsync(new PayingItem()
            {
                CategoryID = 1
            });
            _categoryService.Setup(m => m.GetActiveGategoriesByUser(It.IsAny <string>()))
            .ReturnsAsync(new List <Category>());
            _accountService.Setup(m => m.GetListAsync()).ReturnsAsync(new List <Account>());
            var target = new PayingItemController(_pItemProductHelper.Object, null, _payingItemService.Object, _categoryService.Object, _accountService.Object);

            try
            {
                await target.Edit(new WebUser(), 1, 1);
            }
            catch (WebUiHelperException e)
            {
                Assert.IsInstanceOfType(e.InnerException, typeof(WebUiHelperException));
            }
        }
Пример #24
0
        public async Task Edit_Post_ModelIsValid_CanUpdate_RedirectsToList()
        {
            var pItemEditModel = new PayingItemEditModel()
            {
                PayingItem = new PayingItem()
                {
                    CategoryID = 2
                }
            };

            _payingItemUpdaterMock.Setup(m => m.UpdatePayingItemFromViewModel(It.IsAny <PayingItemEditModel>())).ReturnsAsync(pItemEditModel.PayingItem);
            var target = new PayingItemController(null, null, null, null, null, _payingItemUpdaterMock.Object);

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, pItemEditModel);

            var routeResult = (RedirectToRouteResult)result;

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
            Assert.AreEqual(routeResult.RouteValues["action"], "List");
        }
        public async Task Edit_Post_PricesAndIdsInItemAreNull_ReturnsRedirectToList()
        {
            var pItemEditModel = new PayingItemEditModel()
            {
                PayingItem = new PayingItem()
                {
                    CategoryID = 1,
                    AccountID  = 1,
                    ItemID     = 1
                },
                PricesAndIdsInItem = null
            };
            var target = new PayingItemController(null, null, _payingItemService.Object, null, null);

            var result = await target.Edit(new WebUser()
            {
                Id = "1"
            }, pItemEditModel);

            var redirectResult = (RedirectToRouteResult)result;

            Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
            Assert.AreEqual(redirectResult.RouteValues["action"], "List");
        }