public void UpdatingAnExpenseUpdatesTheCache() { //Creation of expense Guid expenseIdToSave = Guid.NewGuid(); Assert.IsNull(util.DatabaseHelper.GetExpenseById(TestDatabaseConnectionString, expenseIdToSave)); var stubUser = new User { UserName = "******" }; var stubManager = "the manager"; var expenseToSave = new Model.Expense { Id = expenseIdToSave, Date = new DateTime(1900, 01, 01), Title = "Title", Description = "Description", Total = 1.0, ReimbursementMethod = ReimbursementMethod.DirectDeposit, CostCenter = "CostCenter", Approved = false, User = stubUser, ApproverName = stubManager }; //Get the repository with the highest cache expiration var repository = new ExpenseRepository(TestDatabaseConnectionString, TimeSpan.MaxValue); //Save expense repository.SaveExpense(expenseToSave); //Get expense (it also caches the expense) var savedExpense = repository.GetExpenseById(expenseIdToSave); //basic Assertion Assert.IsNotNull(savedExpense); //Approve the expense savedExpense.Approved = true; Thread.CurrentPrincipal = new ClaimsPrincipal(new ClaimsIdentity(Thread.CurrentPrincipal.Identity, new Claim[] { new Claim(ClaimTypes.Role, "Manager") })); repository.UpdateApproved(savedExpense); //Delete expense in db so we make sure we will get expense from cache. DatabaseHelper.BypassRepositoryAndDeleteExpense(TestDatabaseConnectionString, savedExpense.Id); //Get expense (from cache) and verify new description var cachedExpense = repository.GetExpenseById(expenseIdToSave); //Assert Assert.IsNotNull(cachedExpense); Assert.IsTrue(cachedExpense.Approved); }
public void ApproveExpense() { var expected = new AExpense.Model.Expense { Id = Guid.NewGuid(), Date = new DateTime(1900, 01, 01), Title = "Title", Description = "Description", Total = 1.0, ReimbursementMethod = ReimbursementMethod.DirectDeposit, CostCenter = "CostCenter", Approved = false, User = new User { UserName = "******" }, ApproverName = "approver name" }; var repository = new ExpenseRepository(dataContext); repository.SaveExpense(expected); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("test"), new string[] { "Manager" }); repository.UpdateApproved(expected); var actual = repository.GetExpenseById(expected.Id); Assert.IsNotNull(actual); Assert.AreEqual(expected.Approved, actual.Approved); }
public Expense GetExpenseById(int expenseId) { ExpenseRepository dataAccess = new ExpenseRepository(); Expense datatable = dataAccess.GetExpenseById(expenseId); return(datatable); }
public void GetExpenseByIdIsGoneAfterCacheExpires() { Guid expenseIdToSave = Guid.NewGuid(); Assert.IsNull(util.DatabaseHelper.GetExpenseById(TestDatabaseConnectionString, expenseIdToSave)); var stubUser = new User { UserName = "******" }; var stubManager = "the manager"; var expenseToSave = new Model.Expense { Id = expenseIdToSave, Date = new DateTime(1900, 01, 01), Title = "Title", Description = "Description", Total = 1.0, ReimbursementMethod = ReimbursementMethod.DirectDeposit, CostCenter = "CostCenter", Approved = true, User = stubUser, ApproverName = stubManager }; var repository = new ExpenseRepository(TestDatabaseConnectionString, new TimeSpan(0, 0, 2)); repository.SaveExpense(expenseToSave); var expense = repository.GetExpenseById(expenseToSave.Id); DatabaseHelper.BypassRepositoryAndDeleteExpense(TestDatabaseConnectionString, expenseToSave.Id); Thread.Sleep(3000); expense = repository.GetExpenseById(expenseToSave.Id); Assert.IsNull(expense); }
public async Task <ExpenseDto> GetExpenseById(int Id) { if (Id == default) { throw new ArgumentException($"{Id} is not a vaild identifier."); } ExpenseEntityDesign expenseEntity = await _expenseRepository.GetExpenseById(Id); ExpenseDto expense = new ExpenseDto(); if (expenseEntity.Name == null && expenseEntity.Amount == 0) { throw new Exception("Invalid Id"); } expense.Name = expenseEntity.Name; expense.Amount = expenseEntity.Amount; expense.Description = expenseEntity.Description; expense.ExpenseDate = expenseEntity.ExpenseDate; return(expense); }
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string storageId; try { storageId = this.Request.QueryString["id"]; } catch (ArgumentNullException exception) { Log.Write(EventKind.Error, exception.Message); throw; } var expenseRepository = new ExpenseRepository(TimeSpan.FromMinutes(this.Session.Timeout)); Expense expense = expenseRepository.GetExpenseById(this.User.Identity.Name, storageId); if (expense == null) { string errorMessage = string.Format(CultureInfo.CurrentCulture, "There is no expense with the id {0}.", storageId); Log.Write(EventKind.Error, errorMessage); throw new ArgumentException(errorMessage); } if (expense.UserName != this.User.Identity.Name) { string errorMessage = string.Format("{0} cannot access the expense with id {1}.", this.User.Identity.Name, expense.Id); throw new UnauthorizedAccessException(errorMessage); } this.ExpenseDate.Text = expense.Date.ToString("yyyy-MM-dd"); this.ExpenseTitle.Text = Server.HtmlEncode(expense.Title); this.ExpenseItemsGridView.DataSource = expense.Details; this.ExpenseItemsGridView.DataBind(); this.ExpenseReimbursementMethod.Text = Server.HtmlEncode(Enum.GetName(typeof(ReimbursementMethod), expense.ReimbursementMethod)); this.ExpenseCostCenter.Text = Server.HtmlEncode(expense.CostCenter); this.Approver.Text = Server.HtmlEncode(expense.ApproverName); } }
public void SaveExpense() { Guid expenseIdToSave = Guid.Empty; var stubUser = new User { UserName = "******" }; var stubManager = "the manager"; var expenseToSave = new AExpense.Model.Expense { Id = expenseIdToSave, Date = new DateTime(1900, 01, 01), Title = "Title", Description = "Description", Total = 1.0, ReimbursementMethod = ReimbursementMethod.DirectDeposit, CostCenter = "CostCenter", Approved = true, User = stubUser, ApproverName = stubManager }; var repository = new ExpenseRepository(dataContext); repository.SaveExpense(expenseToSave); var expenseEntity = repository.GetExpenseById(expenseIdToSave); Assert.IsNotNull(expenseEntity); Assert.AreEqual(expenseToSave.Approved, expenseEntity.Approved); Assert.AreEqual(expenseToSave.CostCenter, expenseEntity.CostCenter); Assert.AreEqual(expenseToSave.Date, expenseEntity.Date); Assert.AreEqual(expenseToSave.Description, expenseEntity.Description); Assert.AreEqual(expenseToSave.Id, expenseEntity.Id); Assert.AreEqual(expenseToSave.ReimbursementMethod, expenseEntity.ReimbursementMethod); Assert.AreEqual(expenseToSave.Title, expenseEntity.Title); Assert.AreEqual(expenseToSave.User.UserName, expenseEntity.User.UserName); Assert.AreEqual(expenseToSave.ApproverName, expenseEntity.ApproverName); }
public void SaveExpense() { Guid expenseIdToSave = Guid.Empty; var stubUser = new User { UserName = "******" }; var stubManager = "the manager"; var expenseToSave = new AExpense.Model.Expense { Id = expenseIdToSave, Date = new DateTime(1900, 01, 01), Title = "Title", Description = "Description", Total = 1.0, ReimbursementMethod = ReimbursementMethod.DirectDeposit, CostCenter = "CostCenter", Approved = true, User = stubUser, ApproverName = stubManager }; var repository = new ExpenseRepository(dataContext); repository.SaveExpense(expenseToSave); var expenseEntity = repository.GetExpenseById(expenseIdToSave); Assert.IsNotNull(expenseEntity); Assert.AreEqual(expenseToSave.Approved, expenseEntity.Approved); Assert.AreEqual(expenseToSave.CostCenter, expenseEntity.CostCenter); Assert.AreEqual(expenseToSave.Date, expenseEntity.Date); Assert.AreEqual(expenseToSave.Description, expenseEntity.Description); Assert.AreEqual(expenseToSave.Id, expenseEntity.Id); Assert.AreEqual(expenseToSave.ReimbursementMethod, expenseEntity.ReimbursementMethod); Assert.AreEqual(expenseToSave.Title, expenseEntity.Title); Assert.AreEqual(expenseToSave.User.UserName, expenseEntity.User.UserName); Assert.AreEqual(expenseToSave.ApproverName, expenseEntity.ApproverName); }
public void ApproveExpense() { var expected = new AExpense.Model.Expense { Id = Guid.NewGuid(), Date = new DateTime(1900, 01, 01), Title = "Title", Description = "Description", Total = 1.0, ReimbursementMethod = ReimbursementMethod.DirectDeposit, CostCenter = "CostCenter", Approved = false, User = new User { UserName = "******" }, ApproverName = "approver name" }; var repository = new ExpenseRepository(dataContext); repository.SaveExpense(expected); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("test"), new string[] { "Manager" }); repository.UpdateApproved(expected); var actual = repository.GetExpenseById(expected.Id); Assert.IsNotNull(actual); Assert.AreEqual(expected.Approved, actual.Approved); }
public void UpdatingAnExpenseUpdatesTheCache() { //Creation of expense Guid expenseIdToSave = Guid.NewGuid(); Assert.IsNull(util.DatabaseHelper.GetExpenseById(TestDatabaseConnectionString, expenseIdToSave)); var stubUser = new User { UserName = "******" }; var stubManager = "the manager"; var expenseToSave = new Model.Expense { Id = expenseIdToSave, Date = new DateTime(1900, 01, 01), Title = "Title", Description = "Description", Total = 1.0, ReimbursementMethod = ReimbursementMethod.DirectDeposit, CostCenter = "CostCenter", Approved = false, User = stubUser, ApproverName = stubManager }; //Get the repository with the highest cache expiration var repository = new ExpenseRepository(TestDatabaseConnectionString, TimeSpan.MaxValue); //Save expense repository.SaveExpense(expenseToSave); //Get expense (it also caches the expense) var savedExpense = repository.GetExpenseById(expenseIdToSave); //basic Assertion Assert.IsNotNull(savedExpense); //Approve the expense savedExpense.Approved = true; Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity("test"), new string[] { "Manager" }); repository.UpdateApproved(savedExpense); //Delete expense in db so we make sure we will get expense from cache. DatabaseHelper.BypassRepositoryAndDeleteExpense(TestDatabaseConnectionString, savedExpense.Id); //Get expense (from cache) and verify new description var cachedExpense = repository.GetExpenseById(expenseIdToSave); //Assert Assert.IsNotNull(cachedExpense); Assert.IsTrue(cachedExpense.Approved); }
public void GetExpenseByIdIsGoneAfterCacheExpires() { Guid expenseIdToSave = Guid.NewGuid(); Assert.IsNull(util.DatabaseHelper.GetExpenseById(TestDatabaseConnectionString, expenseIdToSave)); var stubUser = new User { UserName = "******" }; var stubManager = "the manager"; var expenseToSave = new Model.Expense { Id = expenseIdToSave, Date = new DateTime(1900, 01, 01), Title = "Title", Description = "Description", Total = 1.0, ReimbursementMethod = ReimbursementMethod.DirectDeposit, CostCenter = "CostCenter", Approved = true, User = stubUser, ApproverName = stubManager }; var repository = new ExpenseRepository(TestDatabaseConnectionString, new TimeSpan(0, 0, 2)); repository.SaveExpense(expenseToSave); var expense = repository.GetExpenseById(expenseToSave.Id); DatabaseHelper.BypassRepositoryAndDeleteExpense(TestDatabaseConnectionString, expenseToSave.Id); Thread.Sleep(3000); expense = repository.GetExpenseById(expenseToSave.Id); Assert.IsNull(expense); }