예제 #1
0
        public void TestByWorkgroupReturnsView1()
        {
            #region Arrange
            var wg1 = CreateValidEntities.Workgroup(1);
            var wg2 = CreateValidEntities.Workgroup(2);
            wg1.SetIdTo(2);
            wg2.SetIdTo(3);
            var conditionalApprovals = new List <ConditionalApproval>();
            conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(1));
            conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(2));
            conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(3));
            conditionalApprovals[0].Workgroup = wg1;
            conditionalApprovals[1].Workgroup = wg2;
            conditionalApprovals[2].Workgroup = wg1;

            new FakeConditionalApprovals(0, ConditionalApprovalRepository, conditionalApprovals);
            #endregion Arrange

            #region Act
            var result = Controller.ByWorkgroup(2)
                         .AssertViewRendered()
                         .WithViewData <IQueryable <ConditionalApproval> >();
            #endregion Act

            #region Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count());
            Assert.AreEqual(2, Controller.ViewBag.WorkgroupId);
            #endregion Assert
        }
예제 #2
0
        public void TestByOrgReturnsView2()
        {
            #region Arrange
            var org1 = CreateValidEntities.Organization(1);
            var org2 = CreateValidEntities.Organization(2);
            org1.SetIdTo("test");
            org2.SetIdTo("test2");
            var conditionalApprovals = new List <ConditionalApproval>();
            conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(1));
            conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(2));
            conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(3));
            conditionalApprovals[0].Organization = org1;
            conditionalApprovals[1].Organization = org2;
            conditionalApprovals[2].Organization = org1;

            new FakeConditionalApprovals(0, ConditionalApprovalRepository, conditionalApprovals);
            #endregion Arrange

            #region Act
            var result = Controller.ByOrg("test2")
                         .AssertViewRendered()
                         .WithViewData <IQueryable <ConditionalApproval> >();
            #endregion Act

            #region Assert
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual("test2", Controller.ViewBag.OrganizationId);
            #endregion Assert
        }
        public void SetupDateForIndex1()
        {
            var organizations = new List <Organization>();
            var users         = new List <User>();

            for (int i = 0; i < 3; i++)
            {
                users.Add(CreateValidEntities.User(i + 1));
                users[i].Organizations = new List <Organization>();
                for (int j = 0; j < 4; j++)
                {
                    var organization = CreateValidEntities.Organization((i * 4) + (j + 1));
                    organization.Name = "O" + organization.Name;
                    organization.SetIdTo(((i * 4) + (j + 1)).ToString());
                    users[i].Organizations.Add(organization);
                    organizations.Add(organization);
                }
            }
            users.Add(CreateValidEntities.User(4));
            new FakeUsers(0, UserRepository, users, false);
            new FakeOrganizations(0, OrganizationRepository, organizations, true);

            var workgroups = new List <Workgroup>();

            for (int i = 0; i < 6; i++)
            {
                workgroups.Add(CreateValidEntities.Workgroup(i + 1));
                workgroups[i].Name          = "W" + workgroups[i].Name;
                workgroups[i].Organizations = new List <Organization>();
                workgroups[i].Organizations.Add(OrganizationRepository.GetNullableById(((i * 2) + 1).ToString()));
                workgroups[i].Organizations.Add(OrganizationRepository.GetNullableById(((i * 2) + 2).ToString()));
            }
            workgroups[5].Organizations.Add(OrganizationRepository.GetNullableById("6"));
            new FakeWorkgroups(0, WorkgroupRepository, workgroups);

            var conditionalApprovals = new List <ConditionalApproval>();

            for (int i = 0; i < 6; i++)
            {
                conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(i + 1));
                conditionalApprovals[i].Workgroup = WorkgroupRepository.GetNullableById(i + 1);
            }
            for (int i = 6; i < 18; i++)
            {
                conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(i + 1));
                conditionalApprovals[i].Workgroup    = null;
                conditionalApprovals[i].Organization = OrganizationRepository.GetNullableById((i - 5).ToString());
            }

            conditionalApprovals[0].PrimaryApprover   = CreateValidEntities.User(99);
            conditionalApprovals[6].PrimaryApprover   = CreateValidEntities.User(99);
            conditionalApprovals[6].SecondaryApprover = CreateValidEntities.User(88);

            new FakeConditionalApprovals(0, ConditionalApprovalRepository, conditionalApprovals);
        }
        public void TestCreateApprovalsForNewOrder29()
        {
            #region Arrange
            var order = CreateValidEntities.Order(1);
            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(6, UserRepository);

            var conditionalApprovalIds = new[] { 1, 2 };
            var conditionalApprovals   = new List <ConditionalApproval>();
            conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(1));
            conditionalApprovals[0].PrimaryApprover   = CreateValidEntities.User(4);
            conditionalApprovals[0].SecondaryApprover = CreateValidEntities.User(5);

            conditionalApprovals.Add(CreateValidEntities.ConditionalApproval(2));
            conditionalApprovals[1].PrimaryApprover   = CreateValidEntities.User(6);
            conditionalApprovals[1].SecondaryApprover = null;

            new FakeConditionalApprovals(0, ConditionalApprovalRepository, conditionalApprovals);
            UserIdentity.Expect(a => a.Current).Return("4"); // Same As conditional approval, but conditional approvals do not auto approve.
            #endregion Arrange

            #region Act
            OrderService.CreateApprovalsForNewOrder(order, conditionalApprovalIds, null, null, "2");
            #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));
            EventService.AssertWasCalled(a => a.OrderCreated(order));

            Assert.AreEqual(5, order.Approvals.Count);
            Assert.AreEqual(OrderStatusCode.Codes.Approver, order.Approvals[0].StatusCode.Id);
            Assert.IsNull(order.Approvals[0].User);
            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);
            Assert.AreEqual("LastName4", order.Approvals[3].User.LastName);
            Assert.AreEqual(OrderStatusCode.Codes.ConditionalApprover, order.Approvals[3].StatusCode.Id);
            Assert.AreEqual("LastName5", order.Approvals[3].SecondaryUser.LastName);
            Assert.AreEqual("LastName6", order.Approvals[4].User.LastName);
            Assert.AreEqual(OrderStatusCode.Codes.ConditionalApprover, order.Approvals[4].StatusCode.Id);
            Assert.IsNull(order.Approvals[4].SecondaryUser);
            #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 ConditionalApproval GetValid(int?counter)
        {
            var rtValue = CreateValidEntities.ConditionalApproval(counter);

            rtValue.PrimaryApprover = UserRepository.Queryable.Single(a => a.Id == "3");

            //These really can't be both null, but that is controlled by the controller not the db.
            rtValue.Workgroup    = null;
            rtValue.Organization = null;

            return(rtValue);
        }
        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
        }