public void TestOrderApproved() { #region Arrange var users = new List <User>(); for (int i = 0; i < 3; i++) { users.Add(CreateValidEntities.User(i + 1)); users[i].SetIdTo((i + 1).ToString(CultureInfo.InvariantCulture)); } new FakeUsers(0, UserRepository, users, true); var order = CreateValidEntities.Order(1); var approval = CreateValidEntities.Approval(1); approval.User = UserRepository.Queryable.Single(a => a.Id == "3"); approval.StatusCode = CreateValidEntities.OrderStatusCode(4); UserIdentity.Expect(a => a.Current).Return("2"); #endregion Arrange #region Act EventService.OrderApproved(order, approval); #endregion Act #region Assert NotificationService.AssertWasCalled(a => a.OrderApproved(order, approval)); Assert.AreEqual(1, order.OrderTrackings.Count()); Assert.AreEqual("FirstName2 LastName2", order.OrderTrackings[0].User.FullName); Assert.AreEqual("Name4", order.OrderTrackings[0].StatusCode.Name); Assert.AreEqual("approved", order.OrderTrackings[0].Description); #endregion Assert }
public void TestApprovalsWithANewValueDoesNotSave() { Split record = null; try { #region Arrange record = GetValid(9); record.Approvals.Add(CreateValidEntities.Approval(1)); #endregion Arrange #region Act SplitRepository.DbContext.BeginTransaction(); SplitRepository.EnsurePersistent(record); SplitRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception ex) { Assert.IsNotNull(record); Assert.IsNotNull(ex); Assert.AreEqual("object references an unsaved transient instance - save the transient instance before flushing or set cascade action for the property to something that would make it autosave. Type: Purchasing.Core.Domain.Approval, Entity: Purchasing.Core.Domain.Approval", ex.Message); throw; } }
public void TestReroutePurchaserGetReturnsView1() { #region Arrange var orders = new List <Order>(); orders.Add(CreateValidEntities.Order(1)); orders[0].StatusCode.SetIdTo(OrderStatusCode.Codes.AccountManager); orders[0].Approvals.Add(CreateValidEntities.Approval(1)); orders[0].Approvals[0].StatusCode.SetIdTo(OrderStatusCode.Codes.AccountManager); orders[0].Approvals[0].User = CreateValidEntities.User(99); new FakeOrders(0, OrderRepository, orders); new FakeUsers(3, UserRepository); //new FakeOrderPeeps(3, OrderPeepRepository); #endregion Arrange #region Act var result = Controller.ReroutePurchaser(1) .AssertViewRendered() .WithViewData <OrderReRoutePurchaserModel>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual(0, result.PurchaserPeeps.Count()); #endregion Assert }
public void TestReroutePurchaserThrowsExceptionIfUserDoesNotExist() { var thisFar = false; try { #region Arrange var orders = new List <Order>(); orders.Add(CreateValidEntities.Order(1)); orders[0].StatusCode.SetIdTo(OrderStatusCode.Codes.AccountManager); orders[0].Approvals.Add(CreateValidEntities.Approval(1)); orders[0].Approvals[0].StatusCode.SetIdTo(OrderStatusCode.Codes.AccountManager); orders[0].Approvals[0].User = CreateValidEntities.User(99); new FakeOrders(0, OrderRepository, orders); new FakeUsers(3, UserRepository); //new FakeOrderPeeps(3, OrderPeepRepository); thisFar = true; #endregion Arrange #region Act Controller.ReroutePurchaser(1, "NotMe"); #endregion Act } catch (Exception ex) { Assert.IsTrue(thisFar); Assert.IsNotNull(ex); Assert.AreEqual("Sequence contains no matching element", ex.Message); throw; } }
public void TestReRouteApprovalsForExistingOrderWhenCurrectLevelIsApprove05() { #region Arrange var order = CreateValidEntities.Order(1); order.CreatedBy = CreateValidEntities.User(109); order.SetIdTo(99); order.Splits = new List <Split>(); order.Splits.Add(CreateValidEntities.Split(1)); order.Splits.Add(CreateValidEntities.Split(2)); order.Splits[0].Order = order; order.Splits[1].Order = order; order.Splits[0].Account = "12345"; order.Splits[1].Account = "23456"; order.StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.Approver); order.Approvals = new List <Approval>(); order.Approvals.Add(CreateValidEntities.Approval(1)); order.Approvals.Add(CreateValidEntities.Approval(2)); order.Approvals.Add(CreateValidEntities.Approval(3)); order.Approvals.Add(CreateValidEntities.Approval(4)); order.Approvals[0].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.Approver); order.Approvals[0].Completed = true; order.Approvals[0].User = CreateValidEntities.User(88); order.Approvals[1].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.AccountManager); order.Approvals[2].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.Purchaser); order.Approvals[3].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.ConditionalApprover); order.Approvals[3].User = CreateValidEntities.User(99); new FakeUsers(4, UserRepository); new FakeWorkgroupAccounts(3, WorkgroupAccountRepository); #endregion Arrange #region Act OrderService.ReRouteApprovalsForExistingOrder(order, string.Empty, string.Empty); #endregion Act #region Assert EventService.AssertWasCalled(a => a.OrderApprovalAdded(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything, Arg <bool> .Is.Anything), x => x.Repeat.Times(3)); EventService.AssertWasCalled(a => a.OrderReRouted(order)); SecurityService.AssertWasNotCalled(a => a.GetUser(Arg <string> .Is.Anything)); Assert.AreEqual(4, order.Approvals.Count); Assert.AreEqual("LastName99", order.Approvals[0].User.LastName); Assert.IsFalse(order.Approvals[0].Completed); Assert.IsNull(order.Approvals[1].User); Assert.AreEqual(OrderStatusCode.Codes.AccountManager, order.Approvals[1].StatusCode.Id); Assert.IsNull(order.Approvals[2].User); Assert.AreEqual(OrderStatusCode.Codes.Purchaser, order.Approvals[2].StatusCode.Id); Assert.IsNull(order.Approvals[3].User); Assert.AreEqual(OrderStatusCode.Codes.AccountManager, order.Approvals[3].StatusCode.Id); #endregion Assert }
public void TestOrderApprovalAddedDoesNothing() { #region Arrange var order = CreateValidEntities.Order(1); var approval = CreateValidEntities.Approval(1); var trackingCount = order.OrderTrackings.Count(); #endregion Arrange #region Act EventService.OrderApprovalAdded(order, approval); #endregion Act #region Assert NotificationService.AssertWasNotCalled(a => a.OrderReRouted(Arg <Order> .Is.Anything, Arg <int> .Is.Anything, Arg <bool> .Is.Anything)); Assert.AreEqual(trackingCount, order.OrderTrackings.Count()); #endregion Assert }
/// <summary> /// Gets the valid entity of type T /// </summary> /// <param name="counter">The counter.</param> /// <returns>A valid entity of type T</returns> protected override Approval GetValid(int?counter) { var rtValue = CreateValidEntities.Approval(counter); rtValue.Order = Repository.OfType <Order>().Queryable.FirstOrDefault(); rtValue.StatusCode = Repository.OfType <OrderStatusCode>().Queryable.FirstOrDefault(); rtValue.User = null; if (counter != null && counter == 3) { rtValue.Completed = true; } else { rtValue.Completed = false; } return(rtValue); }
public void TestOrderAutoApprovalAddedAddsTracking() { #region Arrange var order = CreateValidEntities.Order(1); var approval = CreateValidEntities.Approval(1); approval.User = CreateValidEntities.User(3); approval.StatusCode = CreateValidEntities.OrderStatusCode(4); #endregion Arrange #region Act EventService.OrderAutoApprovalAdded(order, approval); #endregion Act #region Assert NotificationService.AssertWasNotCalled(a => a.OrderApproved(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything)); Assert.AreEqual(1, order.OrderTrackings.Count()); Assert.AreEqual("FirstName3 LastName3", order.OrderTrackings[0].User.FullName); Assert.AreEqual("Name4", order.OrderTrackings[0].StatusCode.Name); Assert.AreEqual("automatically approved", order.OrderTrackings[0].Description); #endregion Assert }
public void TestReRouteApprovalsForExistingOrderWhenCurrectLevelIsApprove02() { #region Arrange var order = CreateValidEntities.Order(1); order.CreatedBy = CreateValidEntities.User(3); order.SetIdTo(99); order.Splits = new List <Split>(); order.Splits.Add(CreateValidEntities.Split(1)); order.Splits[0].Order = order; order.StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.Approver); order.Approvals = new List <Approval>(); order.Approvals.Add(CreateValidEntities.Approval(1)); order.Approvals.Add(CreateValidEntities.Approval(2)); order.Approvals.Add(CreateValidEntities.Approval(3)); order.Approvals[0].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.Approver); order.Approvals[1].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.AccountManager); order.Approvals[2].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.Purchaser); new FakeUsers(4, UserRepository); UserIdentity.Expect(a => a.Current).Return("3"); #endregion Arrange #region Act OrderService.ReRouteApprovalsForExistingOrder(order, "3", "2"); #endregion Act #region Assert EventService.AssertWasCalled(a => a.OrderApprovalAdded(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything, Arg <bool> .Is.Anything), x => x.Repeat.Times(2)); EventService.AssertWasCalled(a => a.OrderAutoApprovalAdded(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything)); EventService.AssertWasCalled(a => a.OrderReRouted(order)); Assert.AreEqual(3, order.Approvals.Count); Assert.AreEqual("LastName3", order.Approvals[0].User.LastName); Assert.IsTrue(order.Approvals[0].Completed); Assert.AreEqual("LastName2", order.Approvals[1].User.LastName); Assert.IsNull(order.Approvals[2].User); #endregion Assert }
public void TestApprovalsWithPopulatedExistingListWillSave() { #region Arrange Split record = GetValid(9); SplitRepository.DbContext.BeginTransaction(); SplitRepository.EnsurePersistent(record); SplitRepository.DbContext.CommitTransaction(); const int addedCount = 3; var relatedRecords = new List <Approval>(); for (int i = 0; i < addedCount; i++) { relatedRecords.Add(CreateValidEntities.Approval(i + 1)); relatedRecords[i].Split = record; relatedRecords[i].User = null; relatedRecords[i].StatusCode = OrderStatusCodeRepository.Queryable.First(); relatedRecords[i].Order = Repository.OfType <Order>().Queryable.First(); Repository.OfType <Approval>().EnsurePersistent(relatedRecords[i]); } #endregion Arrange #region Act var saveId = record.Id; NHibernateSessionManager.Instance.GetSession().Evict(record); record = SplitRepository.Queryable.Single(a => a.Id == saveId); Assert.AreEqual(3, record.Approvals.Count()); SplitRepository.DbContext.BeginTransaction(); SplitRepository.EnsurePersistent(record); SplitRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.IsNotNull(record.Approvals); Assert.AreEqual(addedCount, record.Approvals.Count); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestReroutePurchaserWhenValid2() { #region Arrange SetupRoles(); new FakeUsers(12, UserRepository); var orders = new List <Order>(); orders.Add(CreateValidEntities.Order(1)); orders[0].StatusCode.SetIdTo(OrderStatusCode.Codes.AccountManager); orders[0].Approvals.Add(CreateValidEntities.Approval(1)); orders[0].Approvals[0].StatusCode.SetIdTo(OrderStatusCode.Codes.AccountManager); orders[0].Approvals[0].User = CreateValidEntities.User(99); orders[0].Workgroup.SetIdTo(2); orders[0].Approvals.Add(CreateValidEntities.Approval(1)); orders[0].Approvals[0].StatusCode.SetIdTo(OrderStatusCode.Codes.Purchaser); orders[0].Approvals[0].User = CreateValidEntities.User(99); orders[0].Workgroup.Permissions.Add(CreateValidEntities.WorkgroupPermission(1)); orders[0].Workgroup.Permissions.Add(CreateValidEntities.WorkgroupPermission(12)); orders[0].Workgroup.Permissions[0].User = UserRepository.Queryable.Single(a => a.Id == "1"); orders[0].Workgroup.Permissions[0].Role = RoleRepository.Queryable.Single(a => a.Id == Role.Codes.Purchaser); orders[0].Workgroup.Permissions[1].User = UserRepository.Queryable.Single(a => a.Id == "12"); orders[0].Workgroup.Permissions[1].Role = RoleRepository.Queryable.Single(a => a.Id == Role.Codes.Purchaser); orders[0].Workgroup.Permissions[1].IsAdmin = true; new FakeOrders(0, OrderRepository, orders); //var orderPeeps = new List<OrderPeep>(); //for (int i = 0; i < 12; i++) //{ // orderPeeps.Add(CreateValidEntities.OrderPeep(i + 1)); // orderPeeps[i].OrderId = 1; // orderPeeps[i].WorkgroupId = 2; // orderPeeps[i].OrderStatusCodeId = OrderStatusCode.Codes.Purchaser; // orderPeeps[i].UserId = (i + 1).ToString(); //} //orderPeeps[1].UserId = "99"; //orderPeeps[2].OrderStatusCodeId = OrderStatusCode.Codes.AccountManager; //orderPeeps[3].OrderId = 9; //orderPeeps[4].WorkgroupId = 1; //orderPeeps[5].OrderStatusCodeId = OrderStatusCode.Codes.Approver; //orderPeeps[6].OrderStatusCodeId = OrderStatusCode.Codes.Requester; //orderPeeps[7].OrderStatusCodeId = OrderStatusCode.Codes.Cancelled; //orderPeeps[8].OrderStatusCodeId = OrderStatusCode.Codes.Complete; //orderPeeps[9].UserId = "1"; //orderPeeps[10].UserId = "1"; //new FakeOrderPeeps(0, OrderPeepRepository, orderPeeps); //var peeps = new List<OrderPeep>(); //for (int i = 0; i < 10; i++) //{ // peeps.Add(CreateValidEntities.OrderPeep(i + 1)); // peeps[i].OrderId = 1; // peeps[i].WorkgroupId = 2; //} #endregion Arrange #region Act var result = Controller.ReroutePurchaser(1, "1") .AssertActionRedirect() .ToAction <OrderController>(a => a.Review(1)); #endregion Act #region Assert Assert.AreEqual("Order rerouted to purchaser FirstName1 LastName1", Controller.Message); ApprovalRepository.AssertWasCalled(a => a.EnsurePersistent(orders[0].Approvals[0])); OrderService.AssertWasCalled(a => a.ReRouteSingleApprovalForExistingOrder(orders[0].Approvals[0], UserRepository.Queryable.Single(b => b.Id == "1"))); Assert.IsNotNull(result); Assert.AreEqual(1, result.RouteValues["id"]); #endregion Assert }
public void TestReroutePurchaserThrowsExceptionIfUserNotPurchaser() { var thisFar = false; try { #region Arrange var orders = new List <Order>(); orders.Add(CreateValidEntities.Order(1)); orders[0].StatusCode.SetIdTo(OrderStatusCode.Codes.AccountManager); orders[0].Approvals.Add(CreateValidEntities.Approval(1)); orders[0].Approvals[0].StatusCode.SetIdTo(OrderStatusCode.Codes.AccountManager); orders[0].Approvals[0].User = CreateValidEntities.User(99); orders[0].Workgroup.SetIdTo(2); orders[0].Approvals.Add(CreateValidEntities.Approval(1)); orders[0].Approvals[0].StatusCode.SetIdTo(OrderStatusCode.Codes.Purchaser); orders[0].Approvals[0].User = null; new FakeOrders(0, OrderRepository, orders); new FakeUsers(12, UserRepository); //var orderPeeps = new List<OrderPeep>(); //for (int i = 0; i < 12; i++) //{ // orderPeeps.Add(CreateValidEntities.OrderPeep(i + 1)); // orderPeeps[i].OrderId = 1; // orderPeeps[i].WorkgroupId = 2; // orderPeeps[i].OrderStatusCodeId = OrderStatusCode.Codes.Purchaser; // orderPeeps[i].UserId = (i + 1).ToString(); //} //orderPeeps[1].UserId = "99"; //orderPeeps[2].OrderStatusCodeId = OrderStatusCode.Codes.AccountManager; //orderPeeps[3].OrderId = 9; //orderPeeps[4].WorkgroupId = 1; //orderPeeps[5].OrderStatusCodeId = OrderStatusCode.Codes.Approver; //orderPeeps[6].OrderStatusCodeId = OrderStatusCode.Codes.Requester; //orderPeeps[7].OrderStatusCodeId = OrderStatusCode.Codes.Cancelled; //orderPeeps[8].OrderStatusCodeId = OrderStatusCode.Codes.Complete; //orderPeeps[9].UserId = "1"; //orderPeeps[10].UserId = "1"; //new FakeOrderPeeps(0, OrderPeepRepository, orderPeeps); //var peeps = new List<OrderPeep>(); //for (int i = 0; i < 10; i++) //{ // peeps.Add(CreateValidEntities.OrderPeep(i + 1)); // peeps[i].OrderId = 1; // peeps[i].WorkgroupId = 2; //} thisFar = true; #endregion Arrange #region Act Controller.ReroutePurchaser(1, "3"); #endregion Act } catch (Exception ex) { Assert.IsTrue(thisFar); Assert.IsNotNull(ex); Assert.AreEqual("Precondition failed.", ex.Message); throw; } }
public void TestReroutePurchaserGetReturnsView3() { #region Arrange SetupRoles(); new FakeUsers(12, UserRepository); var orders = new List <Order>(); orders.Add(CreateValidEntities.Order(1)); orders[0].StatusCode.SetIdTo(OrderStatusCode.Codes.AccountManager); orders[0].Approvals.Add(CreateValidEntities.Approval(1)); orders[0].Approvals[0].StatusCode.SetIdTo(OrderStatusCode.Codes.Purchaser); orders[0].Approvals[0].User = CreateValidEntities.User(99); orders[0].Workgroup.SetIdTo(2); orders[0].Workgroup.Permissions.Add(CreateValidEntities.WorkgroupPermission(1)); orders[0].Workgroup.Permissions.Add(CreateValidEntities.WorkgroupPermission(12)); orders[0].Workgroup.Permissions[0].User = UserRepository.Queryable.Single(a => a.Id == "1"); orders[0].Workgroup.Permissions[0].Role = RoleRepository.Queryable.Single(a => a.Id == Role.Codes.Purchaser); orders[0].Workgroup.Permissions[1].User = UserRepository.Queryable.Single(a => a.Id == "12"); orders[0].Workgroup.Permissions[1].Role = RoleRepository.Queryable.Single(a => a.Id == Role.Codes.Purchaser); orders[0].Workgroup.Permissions[1].IsAdmin = true; new FakeOrders(0, OrderRepository, orders); //var orderPeeps = new List<OrderPeep>(); //for (int i = 0; i < 12; i++) //{ // orderPeeps.Add(CreateValidEntities.OrderPeep(i + 1)); // orderPeeps[i].OrderId = 1; // orderPeeps[i].WorkgroupId = 2; // orderPeeps[i].OrderStatusCodeId = OrderStatusCode.Codes.Purchaser; // orderPeeps[i].UserId = (i + 1).ToString(); //} //orderPeeps[1].UserId = "99"; //orderPeeps[2].OrderStatusCodeId = OrderStatusCode.Codes.AccountManager; //orderPeeps[3].OrderId = 9; //orderPeeps[4].WorkgroupId = 1; //orderPeeps[5].OrderStatusCodeId = OrderStatusCode.Codes.Approver; //orderPeeps[6].OrderStatusCodeId = OrderStatusCode.Codes.Requester; //orderPeeps[7].OrderStatusCodeId = OrderStatusCode.Codes.Cancelled; //orderPeeps[8].OrderStatusCodeId = OrderStatusCode.Codes.Complete; //orderPeeps[9].UserId = "1"; //orderPeeps[10].UserId = "1"; //new FakeOrderPeeps(0, OrderPeepRepository, orderPeeps); //var peeps = new List<OrderPeep>(); //for (int i = 0; i < 10; i++) //{ // peeps.Add(CreateValidEntities.OrderPeep(i + 1)); // peeps[i].OrderId = 1; // peeps[i].WorkgroupId = 2; //} #endregion Arrange #region Act var result = Controller.ReroutePurchaser(1) .AssertViewRendered() .WithViewData <OrderReRoutePurchaserModel>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual(2, result.PurchaserPeeps.Count()); Assert.AreEqual("1", result.PurchaserPeeps[0].Id); Assert.AreEqual("12", result.PurchaserPeeps[1].Id); #endregion Assert }
public void TestReRouteApprovalsForExistingOrderWhenCurrectLevelIsApprove09() { #region Arrange var order = CreateValidEntities.Order(1); order.CreatedBy = CreateValidEntities.User(109); order.SetIdTo(99); order.Splits = new List <Split>(); order.Splits.Add(CreateValidEntities.Split(1)); order.Splits.Add(CreateValidEntities.Split(2)); order.Splits[0].Order = order; order.Splits[1].Order = order; order.Splits[1].Account = "12345"; // switched order from one above order.Splits[0].Account = "23456"; order.StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.Approver); order.Approvals = new List <Approval>(); order.Approvals.Add(CreateValidEntities.Approval(1)); order.Approvals.Add(CreateValidEntities.Approval(2)); order.Approvals.Add(CreateValidEntities.Approval(3)); order.Approvals.Add(CreateValidEntities.Approval(4)); order.Approvals[0].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.Approver); order.Approvals[0].Completed = true; order.Approvals[0].User = CreateValidEntities.User(88); order.Approvals[1].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.AccountManager); order.Approvals[2].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.Purchaser); order.Approvals[3].StatusCode = OrderStatusCodeRepository.Queryable.Single(a => a.Id == OrderStatusCode.Codes.ConditionalApprover); order.Approvals[3].User = CreateValidEntities.User(99); new FakeUsers(4, UserRepository); var workgroupAccounts = new List <WorkgroupAccount>(); workgroupAccounts.Add(CreateValidEntities.WorkgroupAccount(1)); workgroupAccounts[0].Account = CreateValidEntities.Account(1); workgroupAccounts[0].Account.SetIdTo("23456"); workgroupAccounts[0].AccountManager = CreateValidEntities.User(555); workgroupAccounts[0].Approver = CreateValidEntities.User(556); workgroupAccounts[0].Purchaser = CreateValidEntities.User(557); workgroupAccounts[0].Workgroup = CreateValidEntities.Workgroup(3); workgroupAccounts[0].Workgroup.SetIdTo(3); workgroupAccounts.Add(CreateValidEntities.WorkgroupAccount(2)); workgroupAccounts[1].Account = CreateValidEntities.Account(2); workgroupAccounts[1].Account.SetIdTo("12345"); workgroupAccounts[1].AccountManager = CreateValidEntities.User(444); workgroupAccounts[1].Approver = CreateValidEntities.User(445); workgroupAccounts[1].Purchaser = CreateValidEntities.User(446); workgroupAccounts[1].Workgroup = CreateValidEntities.Workgroup(3); workgroupAccounts[1].Workgroup.SetIdTo(3); new FakeWorkgroupAccounts(0, WorkgroupAccountRepository, workgroupAccounts); order.Workgroup = workgroupAccounts[0].Workgroup; order.Workgroup.Accounts = workgroupAccounts; new FakeAutoApprovals(3, AutoAprovalRepository); #endregion Arrange #region Act OrderService.ReRouteApprovalsForExistingOrder(order, string.Empty, string.Empty); #endregion Act #region Assert EventService.AssertWasCalled(a => a.OrderApprovalAdded(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything, Arg <bool> .Is.Anything), x => x.Repeat.Times(5)); EventService.AssertWasCalled(a => a.OrderReRouted(order)); SecurityService.AssertWasNotCalled(a => a.GetUser(Arg <string> .Is.Anything)); Assert.AreEqual(6, order.Approvals.Count); Assert.AreEqual("LastName99", order.Approvals[0].User.LastName); Assert.AreEqual(OrderStatusCode.Codes.ConditionalApprover, order.Approvals[0].StatusCode.Id); Assert.AreEqual("LastName556", order.Approvals[1].User.LastName); Assert.AreEqual(OrderStatusCode.Codes.Approver, order.Approvals[1].StatusCode.Id); Assert.AreEqual("LastName555", order.Approvals[2].User.LastName); Assert.AreEqual(OrderStatusCode.Codes.AccountManager, order.Approvals[2].StatusCode.Id); Assert.AreEqual("LastName557", order.Approvals[3].User.LastName); Assert.AreEqual(OrderStatusCode.Codes.Purchaser, order.Approvals[3].StatusCode.Id); Assert.AreEqual("LastName445", order.Approvals[4].User.LastName); Assert.AreEqual(OrderStatusCode.Codes.Approver, order.Approvals[4].StatusCode.Id); Assert.AreEqual("LastName444", order.Approvals[5].User.LastName); Assert.AreEqual(OrderStatusCode.Codes.AccountManager, order.Approvals[5].StatusCode.Id); #endregion Assert }