public void TestCreatePostReturnsViewWhenInvalid4() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "Me"); SetupData2(); var autoApprovalToCreate = CreateValidEntities.AutoApproval(9); autoApprovalToCreate.User = null; autoApprovalToCreate.TargetUser = CreateValidEntities.User(66); autoApprovalToCreate.Account = null; autoApprovalToCreate.MaxAmount = (decimal)765.32; autoApprovalToCreate.LessThan = true; autoApprovalToCreate.Equal = true; autoApprovalToCreate.Expiration = DateTime.UtcNow.ToPacificTime().Date; #endregion Arrange #region Act var result = Controller.Create(autoApprovalToCreate, true) .AssertViewRendered() .WithViewData <AutoApprovalViewModel>(); #endregion Act #region Assert Controller.ModelState.AssertErrorsAre("Expiration date has already passed"); Assert.IsNotNull(result); Assert.AreEqual("Me", result.AutoApproval.User.Id); Assert.AreEqual((decimal)765.32, result.AutoApproval.MaxAmount); Assert.IsTrue(Controller.ViewBag.IsCreate); Assert.IsTrue(Controller.ViewBag.ShowAll); #endregion Assert }
public void TestEditPostSavesWhenValid() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "Me"); SetupData2(); SetupData3(); var autoApprovalToEdit = CreateValidEntities.AutoApproval(99); autoApprovalToEdit.SetIdTo(99); autoApprovalToEdit.MaxAmount = (decimal)12.44; autoApprovalToEdit.TargetUser = null; autoApprovalToEdit.Account = CreateValidEntities.Account(9); autoApprovalToEdit.User = null; var saveLessThan = AutoApprovalRepository.GetNullableById(3).LessThan; autoApprovalToEdit.LessThan = !saveLessThan; #endregion Arrange #region Act var result = Controller.Edit(3, autoApprovalToEdit, true) .AssertActionRedirect() .ToAction <AutoApprovalController>(a => a.Index(true)); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual(true, result.RouteValues["showAll"]); AutoApprovalRepository.AssertWasCalled(a => a.EnsurePersistent(Arg <AutoApproval> .Is.Anything)); var args = (AutoApproval)AutoApprovalRepository.GetArgumentsForCallsMadeOn(a => a.EnsurePersistent(Arg <AutoApproval> .Is.Anything))[0][0]; Assert.AreEqual(3, args.Id); Assert.AreEqual((decimal)12.44, args.MaxAmount); Assert.IsNotNull(args.User); Assert.AreNotEqual(args.LessThan, saveLessThan); Assert.AreEqual("AutoApproval Edited Successfully", Controller.Message); #endregion Assert }
public void TestCreatePostReturnsViewWhenInvalid3() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "Me"); SetupData2(); var autoApprovalToCreate = CreateValidEntities.AutoApproval(9); autoApprovalToCreate.User = null; autoApprovalToCreate.TargetUser = null; autoApprovalToCreate.Account = null; autoApprovalToCreate.MaxAmount = (decimal)765.32; autoApprovalToCreate.LessThan = true; autoApprovalToCreate.Equal = true; autoApprovalToCreate.IsActive = false; #endregion Arrange #region Act var result = Controller.Create(autoApprovalToCreate, true) .AssertViewRendered() .WithViewData <AutoApprovalViewModel>(); #endregion Act #region Assert Controller.ModelState.AssertErrorsAre("An account OR user must be selected, not both."); Assert.IsNotNull(result); Assert.AreEqual("Me", result.AutoApproval.User.Id); Assert.AreEqual((decimal)765.32, result.AutoApproval.MaxAmount); Assert.IsTrue(result.AutoApproval.IsActive); Assert.IsTrue(Controller.ViewBag.IsCreate); Assert.IsTrue(Controller.ViewBag.ShowAll); #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 AutoApproval GetValid(int?counter) { var rtValue = CreateValidEntities.AutoApproval(counter); rtValue.MaxAmount = counter.HasValue ? counter.Value : 10.77m; return(rtValue); }
public void SetupData3() { var autoApprovals = new List <AutoApproval>(); for (int i = 0; i < 3; i++) { autoApprovals.Add(CreateValidEntities.AutoApproval(i + 1)); autoApprovals[i].User = CreateValidEntities.User(1); autoApprovals[i].User.SetIdTo("Me"); } autoApprovals[0].User.SetIdTo("NotMe"); autoApprovals[0].IsActive = false; new FakeAutoApprovals(0, AutoApprovalRepository, autoApprovals); }
public void TestEditPostReturnsViewWhenInvalid3() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "Me"); SetupData2(); SetupData3(); var autoApprovalToEdit = CreateValidEntities.AutoApproval(99); autoApprovalToEdit.SetIdTo(99); autoApprovalToEdit.MaxAmount = (decimal)12.44; autoApprovalToEdit.TargetUser = CreateValidEntities.User(88); autoApprovalToEdit.Account = CreateValidEntities.Account(87); autoApprovalToEdit.User = null; #endregion Arrange #region Act var result = Controller.Edit(3, autoApprovalToEdit, true) .AssertViewRendered() .WithViewData <AutoApprovalViewModel>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual(4, result.Users.Count); Assert.AreEqual(7, result.Accounts.Count); Assert.AreEqual("Someone55", result.Users[0].Id); Assert.AreEqual("Someone2", result.Users[1].Id); Assert.AreEqual("Someone3", result.Users[2].Id); Assert.AreEqual("Someone4", result.Users[3].Id); Assert.AreEqual("AccountName2", result.Accounts[0].Name); Assert.AreEqual("AccountName3", result.Accounts[1].Name); Assert.AreEqual("AccountName5", result.Accounts[2].Name); Assert.AreEqual("AccountName6", result.Accounts[3].Name); Assert.AreEqual("AccountName7", result.Accounts[4].Name); Assert.AreEqual("AccountName8", result.Accounts[5].Name); Assert.AreEqual("AccountName9", result.Accounts[6].Name); Assert.AreEqual(3, result.AutoApproval.Id); Assert.AreEqual((decimal)12.44, result.AutoApproval.MaxAmount); Assert.IsNotNull(result.AutoApproval.User); Assert.IsTrue(Controller.ViewBag.ShowAll); Assert.IsFalse(Controller.ViewBag.IsCreate); Controller.ModelState.AssertErrorsAre("An account OR user must be selected, not both."); AutoApprovalRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <AutoApproval> .Is.Anything)); #endregion Assert }
public void TestCreateApprovalsForNewOrder26() { #region Arrange var order = CreateValidEntities.Order(1); order.CreatedBy = CreateValidEntities.User(109); order.SetIdTo(99); order.Splits = new List <Split>(); order.Splits.Add(new Split()); order.Splits[0].Account = null; order.Splits[0].Order = order; order.Workgroup.SetIdTo(1); new FakeWorkgroupAccounts(3, WorkgroupAccountRepository); new FakeAccounts(3, AccountRepository); new FakeUsers(3, UserRepository); UserIdentity.Expect(a => a.Current).Return("3"); var autoApprovals = new List <AutoApproval>(); autoApprovals.Add(CreateValidEntities.AutoApproval(1)); autoApprovals[0].User = CreateValidEntities.User(1); autoApprovals[0].IsActive = true; autoApprovals[0].Expiration = DateTime.UtcNow.ToPacificTime().AddDays(1); autoApprovals[0].TargetUser = order.CreatedBy; autoApprovals[0].Account = null; new FakeAutoApprovals(0, AutoAprovalRepository, autoApprovals); #endregion Arrange #region Act OrderService.CreateApprovalsForNewOrder(order, null, null, "1", "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)); var args = (Approval)EventService.GetArgumentsForCallsMadeOn(a => a.OrderAutoApprovalAdded(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything))[0][1]; Assert.AreEqual(OrderStatusCode.Codes.Approver, args.StatusCode.Id); Assert.AreEqual(3, order.Approvals.Count); Assert.AreEqual(OrderStatusCode.Codes.Approver, order.Approvals[0].StatusCode.Id); Assert.AreEqual("LastName1", order.Approvals[0].User.LastName); Assert.AreEqual(OrderStatusCode.Codes.AccountManager, order.Approvals[1].StatusCode.Id); Assert.AreEqual("LastName2", order.Approvals[1].User.LastName); Assert.AreEqual(OrderStatusCode.Codes.Purchaser, order.Approvals[2].StatusCode.Id); #endregion Assert }
public void TestMaxAmount3() { #region Arrange var record = CreateValidEntities.AutoApproval(99); record.MaxAmount = 99999999.99m; #endregion Arrange #region Act AutoApprovalRepository.DbContext.BeginTransaction(); AutoApprovalRepository.EnsurePersistent(record); AutoApprovalRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(99999999.99m, record.MaxAmount); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestAutoApprovalAccountIfPopulatedSaves() { #region Arrange var record = CreateValidEntities.AutoApproval(99); record.TargetUser = null; record.Account = AccountRepository.Queryable.Single(a => a.Id == "3"); #endregion Arrange #region Act AutoApprovalRepository.DbContext.BeginTransaction(); AutoApprovalRepository.EnsurePersistent(record); AutoApprovalRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual("3", record.Account.Id); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void SetupData1() { var autoApprovals = new List <AutoApproval>(); for (int i = 0; i < 6; i++) { autoApprovals.Add(CreateValidEntities.AutoApproval(i + 1)); if (i % 2 == 0) { autoApprovals[i].TargetUser = null; autoApprovals[i].Account = CreateValidEntities.Account(i); } autoApprovals[i].User.SetIdTo("Me"); } autoApprovals[0].User.SetIdTo("NotMe"); autoApprovals[1].IsActive = false; autoApprovals[2].Expiration = DateTime.UtcNow.ToPacificTime().Date; autoApprovals[3].Expiration = DateTime.UtcNow.ToPacificTime().Date.AddDays(1); autoApprovals[4].Expiration = DateTime.UtcNow.ToPacificTime().Date.AddDays(-1); new FakeAutoApprovals(0, AutoApprovalRepository, autoApprovals); }
public void TestCreatePostRedirectsWhenValid7() { #region Arrange Controller.ControllerContext.HttpContext = new MockHttpContext(0, new[] { "" }, "Me"); SetupData2(); var autoApprovalToCreate = CreateValidEntities.AutoApproval(9); autoApprovalToCreate.User = null; autoApprovalToCreate.TargetUser = CreateValidEntities.User(66); autoApprovalToCreate.Account = null; autoApprovalToCreate.MaxAmount = (decimal)765.32; autoApprovalToCreate.LessThan = false; autoApprovalToCreate.Equal = true; autoApprovalToCreate.Expiration = DateTime.UtcNow.ToPacificTime().Date.AddDays(1); #endregion Arrange #region Act var result = Controller.Create(autoApprovalToCreate, true) .AssertActionRedirect() .ToAction <AutoApprovalController>(a => a.Index(true)); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual(true, result.RouteValues["showAll"]); AutoApprovalRepository.AssertWasCalled(a => a.EnsurePersistent(Arg <AutoApproval> .Is.Anything)); var args = (AutoApproval)AutoApprovalRepository.GetArgumentsForCallsMadeOn(a => a.EnsurePersistent(Arg <AutoApproval> .Is.Anything))[0][0]; Assert.IsNotNull(args); Assert.AreEqual("Me", args.User.Id); Assert.AreEqual((decimal)765.32, args.MaxAmount); Assert.IsFalse(args.LessThan); Assert.IsTrue(args.Equal); Assert.AreEqual("LastName66", args.TargetUser.LastName); Assert.IsNull(args.Account); Assert.AreEqual(DateTime.UtcNow.ToPacificTime().Date.AddDays(1), args.Expiration); Assert.AreEqual("AutoApproval Created Successfully Warning, will expire in 5 days or less", Controller.Message); #endregion Assert }
public void TestCreateApprovalsForNewOrder30() { #region Arrange var order = CreateValidEntities.Order(1); order.SetIdTo(99); order.Splits = new List <Split>(); order.Splits.Add(new Split()); order.Splits[0].Account = "12345"; order.Splits[0].Order = order; order.Splits.Add(new Split()); order.Splits[1].Account = "23456"; order.Splits[1].Order = order; order.Splits.Add(new Split()); order.Splits[2].Account = "777"; order.Splits[2].Order = order; order.Workgroup.SetIdTo(1); var workgroupAccounts = new List <WorkgroupAccount>(); workgroupAccounts.Add(CreateValidEntities.WorkgroupAccount(1)); workgroupAccounts[0].Workgroup = order.Workgroup; workgroupAccounts[0].Account = CreateValidEntities.Account(9); workgroupAccounts[0].Account.SetIdTo("777"); workgroupAccounts[0].Approver = CreateValidEntities.User(11); workgroupAccounts[0].Approver.SetIdTo("11"); workgroupAccounts[0].AccountManager = CreateValidEntities.User(22); workgroupAccounts[0].Purchaser = CreateValidEntities.User(33); new FakeWorkgroupAccounts(0, WorkgroupAccountRepository, workgroupAccounts); var accounts = new List <Account>(); accounts.Add(CreateValidEntities.Account(1)); accounts[0].SetIdTo("23456"); accounts[0].AccountManagerId = "TestUser"; accounts.Add(CreateValidEntities.Account(2)); accounts[1].SetIdTo("12345"); accounts[1].AccountManagerId = null; new FakeAccounts(0, AccountRepository, accounts, true); SecurityService.Expect(a => a.GetUser("TestUser")).Return(CreateValidEntities.User(55)); SecurityService.Expect(a => a.GetUser(null)).Return(null); var autoApprovals = new List <AutoApproval>(); autoApprovals.Add(CreateValidEntities.AutoApproval(1)); autoApprovals[0].User = CreateValidEntities.User(11); autoApprovals[0].IsActive = true; autoApprovals[0].Expiration = DateTime.UtcNow.ToPacificTime().AddDays(1); autoApprovals[0].TargetUser = null; autoApprovals[0].Account = workgroupAccounts[0].Account; new FakeAutoApprovals(0, AutoAprovalRepository, autoApprovals); //UserIdentity.Expect(a => a.Current).Return("11"); new FakeUsers(5, UserRepository); var conditionalApprovalIds = new[] { 1 }; var conditionalApprovals = new List <ConditionalApproval>(); conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(1)); conditionalApprovals[0].PrimaryApprover = CreateValidEntities.User(4); conditionalApprovals[0].SecondaryApprover = CreateValidEntities.User(5); new FakeConditionalApprovals(0, ConditionalApprovalRepository, conditionalApprovals); #endregion Arrange #region Act OrderService.CreateApprovalsForNewOrder(order, conditionalApprovalIds, null, null, null); #endregion Act #region Assert SecurityService.AssertWasCalled(a => a.GetUser("TestUser")); SecurityService.AssertWasCalled(a => a.GetUser(null)); EventService.AssertWasCalled(a => a.OrderApprovalAdded(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything, Arg <bool> .Is.Anything), x => x.Repeat.Times(4)); EventService.AssertWasCalled(a => a.OrderAutoApprovalAdded(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything)); EventService.AssertWasCalled(a => a.OrderCreated(order)); Assert.AreEqual(6, order.Approvals.Count); Assert.AreEqual(OrderStatusCode.Codes.AccountManager, order.Approvals[0].StatusCode.Id); Assert.AreEqual(OrderStatusCode.Codes.Purchaser, order.Approvals[1].StatusCode.Id); var purchaserCount = 0; var approverCount = 0; var acctManagerCount = 0; var conditionalApproverCount = 0; foreach (var approval in order.Approvals) { switch (approval.StatusCode.Id) { case OrderStatusCode.Codes.Purchaser: purchaserCount++; break; case OrderStatusCode.Codes.AccountManager: acctManagerCount++; break; case OrderStatusCode.Codes.Approver: approverCount++; break; case OrderStatusCode.Codes.ConditionalApprover: conditionalApproverCount++; break; default: throw new Exception("Should not be here!"); } //Assert.IsNull(approval.User); } Assert.AreEqual(1, purchaserCount); Assert.AreEqual(3, acctManagerCount); Assert.AreEqual(1, approverCount); Assert.AreEqual(1, conditionalApproverCount); //Assert.AreEqual("LastName66", order.Approvals[0].User.LastName); Assert.AreEqual("LastName55", order.Approvals[2].User.LastName); Assert.AreEqual("12345", order.Splits[0].Account); Assert.AreEqual("23456", order.Splits[1].Account); Assert.IsTrue(order.Approvals[3].Completed); #endregion Assert }
public void TestCreateApprovalsForNewOrder13() { #region Arrange var order = CreateValidEntities.Order(1); order.SetIdTo(99); order.CreatedBy = CreateValidEntities.User(109); order.Splits = new List <Split>(); order.Splits.Add(new Split()); //order.Splits[0].Account = "12345"; order.Splits[0].Order = order; order.Splits[0].Amount = 200.00m; order.Workgroup.SetIdTo(1); var workgroupAccounts = new List <WorkgroupAccount>(); workgroupAccounts.Add(CreateValidEntities.WorkgroupAccount(1)); workgroupAccounts[0].Workgroup = order.Workgroup; workgroupAccounts[0].Account = CreateValidEntities.Account(9); workgroupAccounts[0].Account.SetIdTo("12345"); workgroupAccounts[0].Approver = CreateValidEntities.User(11); workgroupAccounts[0].Approver.SetIdTo("11"); workgroupAccounts[0].AccountManager = CreateValidEntities.User(22); workgroupAccounts[0].Purchaser = CreateValidEntities.User(33); new FakeWorkgroupAccounts(0, WorkgroupAccountRepository, workgroupAccounts); //var accounts = new List<Account>(); //accounts.Add(CreateValidEntities.Account(1)); //accounts[0].SetIdTo("12345"); //accounts[0].AccountManagerId = "TestUser"; new FakeAccounts(3, AccountRepository); SecurityService.Expect(a => a.GetUser("TestUser")).Return(CreateValidEntities.User(55)); UserIdentity.Expect(a => a.Current).Return("22"); //NOT same as approver var autoApprovals = new List <AutoApproval>(); autoApprovals.Add(CreateValidEntities.AutoApproval(1)); autoApprovals[0].User = CreateValidEntities.User(11); autoApprovals[0].IsActive = true; autoApprovals[0].TargetUser = null; autoApprovals[0].Account = workgroupAccounts[0].Account; autoApprovals[0].Expiration = DateTime.UtcNow.ToPacificTime().AddDays(1); autoApprovals[0].Equal = false; autoApprovals[0].LessThan = true; autoApprovals[0].MaxAmount = 200.00m; new FakeAutoApprovals(0, AutoAprovalRepository, autoApprovals); #endregion Arrange #region Act OrderService.CreateApprovalsForNewOrder(order, null, "12345", null, null); #endregion Act #region Assert SecurityService.AssertWasNotCalled(a => a.GetUser(Arg <string> .Is.Anything)); // the account was not found in the workgroup or the account table EventService.AssertWasCalled(a => a.OrderApprovalAdded(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything, Arg <bool> .Is.Anything), x => x.Repeat.Times(3)); EventService.AssertWasNotCalled(a => a.OrderAutoApprovalAdded(Arg <Order> .Is.Anything, Arg <Approval> .Is.Anything)); //var args = (Approval)EventService.GetArgumentsForCallsMadeOn(a => a.OrderAutoApprovalAdded(Arg<Order>.Is.Anything, Arg<Approval>.Is.Anything))[0][1]; //Assert.AreEqual(OrderStatusCode.Codes.Approver, args.StatusCode.Id); EventService.AssertWasCalled(a => a.OrderCreated(order)); Assert.AreEqual(3, order.Approvals.Count); Assert.AreEqual(OrderStatusCode.Codes.AccountManager, order.Approvals[1].StatusCode.Id); Assert.AreEqual(OrderStatusCode.Codes.Purchaser, order.Approvals[2].StatusCode.Id); Assert.AreEqual("LastName11", order.Approvals[0].User.LastName); Assert.IsFalse(order.Approvals[0].Completed); Assert.AreEqual("LastName22", order.Approvals[1].User.LastName); Assert.AreEqual("LastName33", order.Approvals[2].User.LastName); Assert.AreEqual("12345", order.Splits[0].Account); #endregion Assert }