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"); }
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"); }