Esempio n. 1
0
        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));
        }
Esempio n. 3
0
        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);
        }
Esempio n. 7
0
        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));
        }
Esempio n. 9
0
        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));
        }