public void UserHasPermissions_UserIsOwner_UserHasPermissions() { // Arrange var unitOfWork = new UnitOfWorkMock(); var user = new User(); var package = new ContentPackage {Owner = user}; // Act var financeService = new FinanceService(unitOfWork); var userHasPermissions = financeService.UserHasPermissions(user, package); // Assert userHasPermissions.Should().BeTrue(); }
public void UserHasPermissions_UserNotOrderedPackage_UserHasNoPermissions() { // Arrange var unitOfWork = new UnitOfWorkMock(); var user = new User(); var userProfile = new UserProfile {User = user}; var package = new ContentPackage {Owner = new User()}; unitOfWork.GetRepository<User>().Insert(user); unitOfWork.GetRepository<UserProfile>().Insert(userProfile); unitOfWork.GetRepository<ContentPackage>().Insert(package); unitOfWork.Save(); // Act var financeService = new FinanceService(unitOfWork); var userHasPermissions = financeService.UserHasPermissions(user, package); // Assert userHasPermissions.Should().BeFalse(); }
public ViewResult MakeOrder(OrderViewModel viewModel) { var packageId = viewModel.ContentPackageId; var package = UnitOfWork.GetRepository<ContentPackage>().GetByID(packageId); var order = new Order { ContentPackage = package, UserProfile = CurrentUserProfile }; var financeService = new FinanceService(UnitOfWork); financeService.MakeOrder(order); return InformationView("Покупка успешно произведена.", "", new ActionLinkInfo("Content", "Details", "Вернуться к просмотру", new {id = package.ID})); }
public ViewResult Order(int id) { var package = UnitOfWork.GetRepository<ContentPackage>().GetByID(id); if (package == null) return ErrorView("Материал не найден", "Указанный материал отсутствует в базе данных."); var viewModel = new OrderViewModel { OrderPrice = package.Price, UserBalance = CurrentUserProfile.Balance, ContentPackageId = package.ID }; var financeService = new FinanceService(UnitOfWork); var order = new Order { ContentPackage = package, UserProfile = CurrentUserProfile, }; if (!financeService.IsOrderAvailable(order)) ModelState.AddModelError("balance", "Недостаточно средств для покупки текущего материала."); return View(viewModel); }