Example #1
0
        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
        }
Example #2
0
        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
        }
Example #3
0
        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);
        }
Example #5
0
        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);
        }
Example #6
0
        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
        }
Example #10
0
        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);
        }
Example #11
0
        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
        }