public void ShouldExecuteDraftTransition()
        {
            new DatabaseTester().Clean();

            var report = new ExpenseReport();

            report.Number = "123";
            report.Status = ExpenseReportStatus.Draft;
            var employee = new Employee("jpalermo", "Jeffrey", "Palermo", "jeffrey @ clear dash measure.com");

            report.Submitter = employee;
            report.Approver  = employee;

            using (ISession session = DataContext.GetTransactedSession())
            {
                session.SaveOrUpdate(employee);
                session.SaveOrUpdate(report);
                session.Transaction.Commit();
            }

            var command = new ExecuteTransitionCommand(report, "Save", employee, new DateTime(2001, 1, 1));

            IContainer container = DependencyRegistrarModule.EnsureDependenciesRegistered();
            var        bus       = container.GetInstance <Bus>();

            ExecuteTransitionResult result = bus.Send(command);

            result.NewStatus.ShouldEqual("Drafting");
        }
Exemplo n.º 2
0
        public ActionResult Manage(ExpenseReportManageModel model, string command)
        {
            Employee currentUser = _session.GetCurrentUser();

            ExpenseReport expenseReport;

            if (model.Mode == EditMode.New)
            {
                expenseReport = _expenseReportBuilder.Build(currentUser);
            }
            else
            {
                expenseReport = _bus.Send(new ExpenseReportByNumberQuery {
                    ExpenseReportNumber = model.ExpenseReportNumber
                }).Result;
            }

            if (!ModelState.IsValid)
            {
                ViewBag.ExpenseReport = expenseReport;
                ViewBag.CurrentUser   = currentUser;
                return(View("Manage", model));
            }

            Employee approver  = _bus.Send(new EmployeeByUserNameQuery(model.ApproverUserName)).Result;
            Employee submitter = _bus.Send(new EmployeeByUserNameQuery(model.SubmitterUserName)).Result;

            expenseReport.Number      = model.ExpenseReportNumber;
            expenseReport.Submitter   = submitter;
            expenseReport.Approver    = approver;
            expenseReport.Title       = model.Title;
            expenseReport.Description = model.Description;
            expenseReport.Total       = model.Total;

            var transitionCommand = new ExecuteTransitionCommand(expenseReport, command, currentUser,
                                                                 _calendar.GetCurrentTime());

            ExecuteTransitionResult transitionResult = _bus.Send(transitionCommand);

            if (transitionResult.NextStep == NextStep.Dashboard)
            {
                return(Redirect("~/Home"));
            }

            return(RedirectToAction("Manage", new { id = expenseReport.Number, mode = "edit" }));
        }
        public void ShouldExecuteDraftTransition()
        {
            var report = new ExpenseReport();

            report.Number = "123";
            report.Status = ExpenseReportStatus.Draft;
            var employee = new Employee();

            report.Submitter = employee;
            report.Approver  = employee;

            var handler = new ExecuteTransitionCommandHandler(null);
            ExecuteTransitionResult result = handler.Handle(
                new ExecuteTransitionCommand(report, "Save", employee, new DateTime()));

            result.NewStatus.ShouldEqual("Drafting");
        }