public void PropertiesShouldGetAndSetValuesProperly() { var report = new ExpenseReport(); Guid guid = Guid.NewGuid(); var creator = new Employee(); var assignee = new Employee(); DateTime auditDate = new DateTime(2000, 1, 1, 8, 0, 0); AuditEntry testAudit = new AuditEntry(creator, auditDate, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved); report.Id = guid; report.Title = "Title"; report.Description = "Description"; report.Status = ExpenseReportStatus.Approved; report.Number = "Number"; report.Submitter = creator; report.Approver = assignee; report.AddAuditEntry(testAudit); Assert.That(report.Id, Is.EqualTo(guid)); Assert.That(report.Title, Is.EqualTo("Title")); Assert.That(report.Description, Is.EqualTo("Description")); Assert.That(report.Status, Is.EqualTo(ExpenseReportStatus.Approved)); Assert.That(report.Number, Is.EqualTo("Number")); Assert.That(report.Submitter, Is.EqualTo(creator)); Assert.That(report.Approver, Is.EqualTo(assignee)); Assert.That(report.GetAuditEntries()[0].EndStatus, Is.EqualTo(ExpenseReportStatus.Approved)); Assert.That(report.GetAuditEntries()[0].Date, Is.EqualTo(auditDate)); }
public void ShouldSaveExpenseReportWithNewProperties() { // Clean the database new DatabaseTester().Clean(); // Make employees var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); DateTime testTime = new DateTime(2015, 1, 1); // popluate ExpenseReport var report = new ExpenseReport { Submitter = creator, Approver = assignee, Title = "TestExpenseReport", Description = "This is an expense report test", Number = "123", MilesDriven = 100, Created = testTime, FirstSubmitted = testTime, LastSubmitted = testTime, LastWithdrawn = testTime, LastCancelled = testTime, LastApproved = testTime, LastDeclined = testTime, Total = 100.25m }; report.ChangeStatus(ExpenseReportStatus.Approved); report.AddAuditEntry(new AuditEntry(creator, DateTime.Now, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved)); using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(creator); session.SaveOrUpdate(assignee); session.SaveOrUpdate(report); session.Transaction.Commit(); } ExpenseReport pulledExpenseReport; using (ISession session = DataContext.GetTransactedSession()) { pulledExpenseReport = session.Load <ExpenseReport>(report.Id); } Assert.That(pulledExpenseReport.MilesDriven, Is.EqualTo(report.MilesDriven)); Assert.That(pulledExpenseReport.Created, Is.EqualTo(report.Created)); Assert.That(pulledExpenseReport.FirstSubmitted, Is.EqualTo(report.FirstSubmitted)); Assert.That(pulledExpenseReport.LastSubmitted, Is.EqualTo(report.LastSubmitted)); Assert.That(pulledExpenseReport.LastWithdrawn, Is.EqualTo(report.LastWithdrawn)); Assert.That(pulledExpenseReport.LastCancelled, Is.EqualTo(report.LastCancelled)); Assert.That(pulledExpenseReport.LastApproved, Is.EqualTo(report.LastApproved)); Assert.That(pulledExpenseReport.LastDeclined, Is.EqualTo(report.LastDeclined)); Assert.That(pulledExpenseReport.Total, Is.EqualTo(report.Total)); }
public void ShouldCascadeDeleteAuditEntries() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var report = new ExpenseReport(); report.Submitter = creator; report.Approver = assignee; report.Title = "foo"; report.Description = "bar"; report.ChangeStatus(ExpenseReportStatus.Approved); report.Number = "123"; var auditEntry = new AuditEntry(creator, DateTime.Now, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved, report); report.AddAuditEntry(auditEntry); using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { context.Add(creator); context.Add(assignee); context.Add(auditEntry); context.Add(report); context.SaveChanges(); } ExpenseReport rehydratedExpenseReport; using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { rehydratedExpenseReport = context.Set <ExpenseReport>() .Single(s => s.Id == report.Id); context.Entry(rehydratedExpenseReport).Collection(x => x.AuditEntries).Load(); } rehydratedExpenseReport.AuditEntries.ToArray().Length.ShouldEqual(1); var entryId = rehydratedExpenseReport.AuditEntries.ToArray()[0].Id; using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { context.Remove(rehydratedExpenseReport); context.SaveChanges(); } using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { context.Set <AuditEntry>().Count(entry => entry.Id == entryId).ShouldEqual(0); context.SaveChanges(); } }
public void ShouldReproduceOwnedInstanceBug() { new DatabaseTester().Clean(); var employee = new Employee("jpalermo", "Jeffrey", "Palermo", "jeffrey @ clear dash measure.com"); using (var context = new StubbedDataContextFactory().GetContext()) { context.Add(employee); context.SaveChanges(); } var report = new ExpenseReport(); report.Number = "123"; report.Status = ExpenseReportStatus.Draft; report.Submitter = employee; report.Approver = employee; report.Total = 34; using (var context = new StubbedDataContextFactory().GetContext()) { context.Update(report); context.SaveChanges(); } var submitted = ExpenseReportStatus.Submitted; report.AddAuditEntry( new AuditEntry(employee, DateTime.Now, ExpenseReportStatus.Draft, submitted, report)); report.Status = submitted.Clone(); using (var context = new StubbedDataContextFactory().GetContext()) { context.Update(report); context.SaveChanges(); } using (var context = new StubbedDataContextFactory().GetContext()) { var statuses = new Dictionary <string, int>(); new SqlExecuter().ExecuteSql( "select count(1), status from ExpenseReport group by status" , reader => statuses.Add(reader.GetString(1), reader.GetInt32(0))); Assert.That(statuses["SBM"], Is.EqualTo(1)); } }
public void ShouldSaveAuditEntries() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var report = new ExpenseReport(); report.Submitter = creator; report.Approver = assignee; report.Title = "foo"; report.Description = "bar"; report.ChangeStatus(ExpenseReportStatus.Approved); report.Number = "123"; report.AddAuditEntry(new AuditEntry(creator, DateTime.Now, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved, report)); using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { context.Add(creator); context.Add(assignee); context.SaveChanges(); } IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance <Bus>(); bus.Send(new ExpenseReportSaveCommand { ExpenseReport = report }); ExpenseReport rehydratedReport; using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { rehydratedReport = context.Find <ExpenseReport>(report.Id); context.Entry(rehydratedReport).Collection(r => r.AuditEntries).Load(); } var x = report.AuditEntries.ToArray()[0]; var y = rehydratedReport.AuditEntries.ToArray()[0]; y.EndStatus.ShouldEqual(x.EndStatus); y.BeginStatus.ShouldEqual(x.BeginStatus); y.EmployeeName.ShouldEqual(x.EmployeeName); }
public void ShouldSaveAuditEntries() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var report = new ExpenseReport(); report.Submitter = creator; report.Approver = assignee; report.Title = "foo"; report.Description = "bar"; report.ChangeStatus(ExpenseReportStatus.Approved); report.Number = "123"; report.AddAuditEntry(new AuditEntry(creator, DateTime.Now, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved)); using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(creator); session.SaveOrUpdate(assignee); session.Transaction.Commit(); } IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered(); var bus = container.GetInstance <Bus>(); bus.Send(new ExpenseReportSaveCommand { ExpenseReport = report }); ExpenseReport rehydratedReport; using (ISession session2 = DataContext.GetTransactedSession()) { rehydratedReport = session2.Load <ExpenseReport>(report.Id); } var x = report.GetAuditEntries()[0]; var y = rehydratedReport.GetAuditEntries()[0]; y.EndStatus.ShouldEqual(x.EndStatus); y.BeginStatus.ShouldEqual(x.BeginStatus); y.EmployeeName.ShouldEqual(x.EmployeeName); }
public void ShouldSaveAuditEntries() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var report = new ExpenseReport(); report.Submitter = creator; report.Approver = assignee; report.Title = "foo"; report.Description = "bar"; report.ChangeStatus(ExpenseReportStatus.Approved); report.Number = "123"; var auditEntry = new AuditEntry(creator, DateTime.Now, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved, report); report.AddAuditEntry(auditEntry); using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { context.Add(creator); context.Add(assignee); context.Add(auditEntry); context.Add(report); context.SaveChanges(); } ExpenseReport rehydratedExpenseReport; using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { rehydratedExpenseReport = context.Set <ExpenseReport>() .Single(s => s.Id == report.Id); context.Entry <ExpenseReport>(rehydratedExpenseReport).Collection(x => x.AuditEntries).Load(); } var x1 = report.AuditEntries.ToArray()[0]; var y1 = rehydratedExpenseReport.AuditEntries.ToArray()[0]; Assert.That(y1.EndStatus, Is.EqualTo(x1.EndStatus)); }
public void ShouldSaveAuditEntries() { new DatabaseTester().Clean(); var creator = new Employee("1", "1", "1", "1"); var assignee = new Employee("2", "2", "2", "2"); var order = new ExpenseReport(); order.Submitter = creator; order.Approver = assignee; order.Title = "foo"; order.Description = "bar"; order.ChangeStatus(ExpenseReportStatus.Approved); order.Number = "123"; order.AddAuditEntry(new AuditEntry(creator, DateTime.Now, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved)); using (ISession session = DataContext.GetTransactedSession()) { session.SaveOrUpdate(creator); session.SaveOrUpdate(assignee); session.Transaction.Commit(); } var repository = new ExpenseReportRepository(); repository.Save(order); ExpenseReport rehydratedExpenseReport; using (ISession session2 = DataContext.GetTransactedSession()) { rehydratedExpenseReport = session2.Load <ExpenseReport>(order.Id); } var x = order.GetAuditEntries()[0]; var y = rehydratedExpenseReport.GetAuditEntries()[0]; Assert.That(x.BeginStatus, Is.EqualTo(y.BeginStatus)); }
public void ShouldSaveExpenseReportWithNewProperties() { // Clean the database new DatabaseTester().Clean(); // Make employees var submitter = new Employee("1", "1", "1", "1"); var approver = new Employee("2", "2", "2", "2"); DateTime testTime = new DateTime(2015, 1, 1); // popluate ExpenseReport var report = new ExpenseReport { Submitter = submitter, Approver = approver, Title = "TestExpenseReport", Description = "This is an expense report test", Number = "123", MilesDriven = 100, Created = testTime, FirstSubmitted = testTime, LastSubmitted = testTime, LastWithdrawn = testTime, LastCancelled = testTime, LastApproved = testTime, LastDeclined = testTime, Total = 100.25m }; report.ChangeStatus(ExpenseReportStatus.Approved); var auditEntry = new AuditEntry(submitter, DateTime.Now, ExpenseReportStatus.Submitted, ExpenseReportStatus.Approved, report); report.AddAuditEntry(auditEntry); using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { context.Add(submitter); context.Add(approver); context.Add(auditEntry); context.Add(report); context.SaveChanges(); } ExpenseReport rehydratedExpenseReport; using (EfCoreContext context = new StubbedDataContextFactory().GetContext()) { rehydratedExpenseReport = context.Set <ExpenseReport>().Include(x => x.Approver) .Include(x => x.Submitter).Single(x => x.Id == report.Id); } rehydratedExpenseReport.Approver.ShouldEqual(approver); rehydratedExpenseReport.Submitter.ShouldEqual(submitter); rehydratedExpenseReport.Title.ShouldEqual("TestExpenseReport"); rehydratedExpenseReport.Description.ShouldEqual("This is an expense report test"); rehydratedExpenseReport.Number.ShouldEqual("123"); rehydratedExpenseReport.Status.ShouldEqual(ExpenseReportStatus.Approved); Assert.That(rehydratedExpenseReport.MilesDriven, Is.EqualTo(report.MilesDriven)); Assert.That(rehydratedExpenseReport.Created, Is.EqualTo(report.Created)); Assert.That(rehydratedExpenseReport.FirstSubmitted, Is.EqualTo(report.FirstSubmitted)); Assert.That(rehydratedExpenseReport.LastSubmitted, Is.EqualTo(report.LastSubmitted)); Assert.That(rehydratedExpenseReport.LastWithdrawn, Is.EqualTo(report.LastWithdrawn)); Assert.That(rehydratedExpenseReport.LastCancelled, Is.EqualTo(report.LastCancelled)); Assert.That(rehydratedExpenseReport.LastApproved, Is.EqualTo(report.LastApproved)); Assert.That(rehydratedExpenseReport.LastDeclined, Is.EqualTo(report.LastDeclined)); Assert.That(rehydratedExpenseReport.Total, Is.EqualTo(report.Total)); }