public void ShouldSave() { 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"; 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).Reference(x => x.Submitter).Load(); context.Entry(rehydratedReport).Reference(x => x.Approver).Load(); } rehydratedReport.Id.ShouldEqual(report.Id); rehydratedReport.Submitter.Id.ShouldEqual(report.Submitter.Id); rehydratedReport.Approver.Id.ShouldEqual(report.Approver.Id); rehydratedReport.Title.ShouldEqual(report.Title); rehydratedReport.Description.ShouldEqual(report.Description); rehydratedReport.Status.ShouldEqual(report.Status); rehydratedReport.Number.ShouldEqual(report.Number); }
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); }