public async Task GrantAccessToApprovers()
            {
                // Arrange
                var cost = MockCost();

                var techApprover = new ApprovalMember
                {
                    Id       = Guid.NewGuid(),
                    MemberId = Guid.NewGuid(),
                    CostUser = new CostUser
                    {
                        FullName = "Test"
                    }
                };
                var approvals = new List <Approval>
                {
                    new Approval
                    {
                        Type            = ApprovalType.IPM,
                        ApprovalMembers = new List <ApprovalMember>
                        {
                            techApprover
                        }
                    }
                };

                EFContext.Approval.AddRange(approvals);
                EFContext.SaveChanges();

                // Act
                await ApprovalService.SubmitApprovals(cost, CostUser, approvals, BuType.Pg);

                // Assert
                PermissionServiceMock.Verify(p => p.GrantApproverAccess(CostUser.Id, cost.Id, It.IsAny <IEnumerable <CostUser> >(), It.IsAny <BuType>()));
            }
 //Xem bang này có bảng lịch sử clone từ bảng này ra hay không?
 //Su dung chu yeu cho viec getMaxKey, phai lay max tu ca 2 bang moi co maxKey chuan
 private static string GetEntityNameHist(string entityName)
 {
     if (entityName == ApprovalOrder.EntityName())
     {
         return(ApprovalOrderHist.EntityName());
     }
     if (entityName == ApprovalPreRisk.EntityName())
     {
         return(ApprovalPreRiskHist.EntityName());
     }
     if (entityName == ApprovalAccount.EntityName())
     {
         return(ApprovalAccountHist.EntityName());
     }
     if (entityName == ApprovalMember.EntityName())
     {
         return(ApprovalMemberHist.EntityName());
     }
     if (entityName == ApprovalDealing.EntityName())
     {
         return(ApprovalDealingHist.EntityName());
     }
     if (entityName == ApprovalSystem.EntityName())
     {
         return(ApprovalSystemHist.EntityName());
     }
     return(null);
 }
Пример #3
0
        public void ApprovalMember_To_ApprovalModel_Member_IsValid()
        {
            //Arrange
            var expectedMemberId          = Guid.NewGuid();
            var expectedFullName          = "Mr Smith";
            var expectedEmail             = "*****@*****.**";
            var expectedApprovalLimit     = 25M;
            var expectedApprovalBandId    = Guid.NewGuid();
            var expectedBusinessRole      = "A business role";
            var expectedBusinessRoleCount = 1;
            var expectedComments          = "Rejected cost because I wanted to";
            var businessRoles             = new List <UserBusinessRole>
            {
                new UserBusinessRole
                {
                    BusinessRole = new BusinessRole
                    {
                        Value = expectedBusinessRole
                    }
                }
            };
            var entity = new ApprovalMember
            {
                MemberId = expectedMemberId,
                CostUser = new CostUser
                {
                    ApprovalBandId    = expectedApprovalBandId,
                    ApprovalLimit     = expectedApprovalLimit,
                    FullName          = expectedFullName,
                    Email             = expectedEmail,
                    UserBusinessRoles = businessRoles
                },
                RejectionDetails = new RejectionDetails
                {
                    Comments = expectedComments
                }
            };

            //Act
            var result = _mapper.Map <ApprovalMember, ApprovalModel.Member>(entity);

            //Assert
            result.Should().NotBeNull();
            result.Id.Should().Be(expectedMemberId);
            result.FullName.Should().Be(expectedFullName);
            result.Email.Should().Be(expectedEmail);
            result.ApprovalLimit.Should().Be(expectedApprovalLimit.ToString());
            result.ApprovalBandId.Should().Be(expectedApprovalBandId.ToString());
            result.BusinessRoles.Should().HaveCount(expectedBusinessRoleCount);
            result.BusinessRoles.First().Should().Be(expectedBusinessRole);
            result.Comments.Should().Be(expectedComments);
        }
        public void GetRemovedApprovers_HasRemovedApprovers()
        {
            //Arrange
            var x                = new CostStageRevision();
            var y                = new CostStageRevision();
            var xApproval1       = new Approval();
            var xApproval2       = new Approval();
            var xApprovalMember1 = new ApprovalMember();
            var xApprovalMember2 = new ApprovalMember();
            var xCostUser1       = new CostUser();
            var removedCostUser  = new CostUser();

            var target = new CostStageRevisionAnalyser();

            x.Approvals = new List <Approval>();
            y.Approvals = new List <Approval>();
            xApproval1.ApprovalMembers = new List <ApprovalMember>();
            xApproval2.ApprovalMembers = new List <ApprovalMember>();

            xApproval1.ApprovalMembers.Add(xApprovalMember1);
            xApproval2.ApprovalMembers.Add(xApprovalMember2);
            xApprovalMember1.CostUser = xCostUser1;
            xApprovalMember2.CostUser = removedCostUser;

            xCostUser1.Id      = Guid.NewGuid();
            removedCostUser.Id = Guid.NewGuid();

            x.Approvals.Add(xApproval1);
            x.Approvals.Add(xApproval2);
            y.Approvals.Add(xApproval1);

            //Act
            var result = target.GetRemovedApprovers(x, y);

            //Assert
            result.Should().NotBeNull();
            result.Should().HaveCount(1);

            var removedApprover = result.First();

            removedApprover.Should().NotBeNull();
            removedApprover.CostUser.Should().NotBeNull();
            removedApprover.CostUser.Should().Be(removedCostUser);
        }
        public void GetRemovedApprovers_InYAndNotInX()
        {
            //Arrange
            var x                = new CostStageRevision();
            var y                = new CostStageRevision();
            var xApproval1       = new Approval();
            var xApproval2       = new Approval();
            var xApprovalMember1 = new ApprovalMember();
            var xApprovalMember2 = new ApprovalMember();
            var xCostUser1       = new CostUser();
            var xCostUser2       = new CostUser();

            var target = new CostStageRevisionAnalyser();

            x.Approvals = new List <Approval>();
            y.Approvals = new List <Approval>();
            xApproval1.ApprovalMembers = new List <ApprovalMember>();
            xApproval2.ApprovalMembers = new List <ApprovalMember>();

            xApproval1.ApprovalMembers.Add(xApprovalMember1);
            xApproval2.ApprovalMembers.Add(xApprovalMember2);
            xApprovalMember1.CostUser = xCostUser1;
            xApprovalMember2.CostUser = xCostUser2;

            xCostUser1.Id = Guid.NewGuid();
            xCostUser2.Id = Guid.NewGuid();

            x.Approvals.Add(xApproval1);

            y.Approvals.Add(xApproval1);
            y.Approvals.Add(xApproval2);

            //Act
            var result = target.GetRemovedApprovers(x, y);

            //Assert
            result.Should().NotBeNull();
            result.Should().BeEmpty();
        }
        //Xem bang này có bảng lịch sử clone từ bảng này ra hay không?
        public static string GetEntityNameHist(string entityName)
        {
            if (entityName == ApprovalAccount.EntityName())
            {
                return(ApprovalAccountHist.EntityName());
            }
            if (entityName == ApprovalDealing.EntityName())
            {
                return(ApprovalDealingHist.EntityName());
            }
            if (entityName == ApprovalMember.EntityName())
            {
                return(ApprovalMemberHist.EntityName());
            }
            if (entityName == ApprovalOrder.EntityName())
            {
                return(ApprovalOrderHist.EntityName());
            }
            if (entityName == ApprovalPreRisk.EntityName())
            {
                return(ApprovalPreRiskHist.EntityName());
            }
            if (entityName == ApprovalSystem.EntityName())
            {
                return(ApprovalSystemHist.EntityName());
            }

            if (entityName == AccountTransaction.EntityName())
            {
                return(AccountTransactionHist.EntityName());
            }
            if (entityName == BrokerOrder.EntityName())
            {
                return(BrokerOrderHist.EntityName());
            }
            if (entityName == ExecutionReport.EntityName())
            {
                return(ExecutionReportHist.EntityName());
            }

            if (entityName == OpenPositionDetail.EntityName())
            {
                return(OpenPositionDetailHist.EntityName());
            }
            if (entityName == OpenPosition.EntityName())
            {
                return(OpenPositionHist.EntityName());
            }
            if (entityName == OrderTransaction.EntityName())
            {
                return(OrderTransactionHist.EntityName());
            }
            if (entityName == SpecAccounting.EntityName())
            {
                return(SpecAccountingHist.EntityName());
            }
            if (entityName == SymbolSettlementPrice.EntityName())
            {
                return(SymbolSettlementPriceDaily.EntityName());
            }
            if (entityName == TradingDeal.EntityName())
            {
                return(TradingDealHist.EntityName());
            }

            return(null);
        }
        private static ApprovalMember GetReplacement(CostStageRevision costStageRevision, ApprovalMember removedMember)
        {
            foreach (var approval in costStageRevision.Approvals)
            {
                if (approval.Type == removedMember.Approval.Type)
                {
                    foreach (var approvalMember in approval.ApprovalMembers)
                    {
                        if (approvalMember.IsSystemApprover())
                        {
                            continue;
                        }

                        return(approvalMember);
                    }
                }
            }
            return(null);
        }
Пример #8
0
        private void SetupPurchaseOrderCost(Cost cost, CostStageRevision latestRevision,
                                            CostUser costOwner, Guid previousRevisionId, Guid latestRevisionId, string poNumber)
        {
            const string brandApproverGdamUserId = "57e5461ed9563f268ef4f1ta";
            const string brandApproverName       = "John Smith";
            var          costId      = Guid.NewGuid();
            var          costOwnerId = Guid.NewGuid();
            var          projectId   = Guid.NewGuid();

            var previousStageId = Guid.NewGuid();
            var latestStageId   = Guid.NewGuid();

            var previousRevision        = new CostStageRevision();
            var previousStage           = new CostStage();
            var latestStage             = new CostStage();
            var project                 = new Project();
            var brand                   = new Brand();
            var agency                  = new Agency();
            var country                 = new Country();
            var brandApproval           = new Approval();
            var brandApprover           = new ApprovalMember();
            var brandApproverAsCostUser = new CostUser();

            previousRevision.CostStage = previousStage;
            previousRevision.Id        = previousRevisionId;

            previousStage.Id = previousRevision.CostStageId = previousStageId;
            latestStage.Id   = latestRevision.CostStageId = latestStageId;

            previousStage.Name = CostStages.OriginalEstimate.ToString();
            latestStage.Name   = CostStages.FinalActual.ToString();

            cost.CostStages.AddRange(new[] { previousStage, latestStage });

            //China non-Cyclone Agencies should create a notification for non-backup approver when the cost total amount has changed
            SetupDataSharedAcrossTests(agency, country, cost, latestRevision, project, costOwner, costOwnerId, latestStage,
                                       brand, costId, latestRevisionId, projectId, Constants.BudgetRegion.China);

            brandApproval.ApprovalMembers = new List <ApprovalMember> {
                brandApprover
            };
            brandApprover.CostUser = brandApproverAsCostUser;

            brandApproval.Type = ApprovalType.Brand;
            brandApproverAsCostUser.GdamUserId = brandApproverGdamUserId;
            brandApproverAsCostUser.FullName   = brandApproverName;

            var approvals = new List <Approval> {
                brandApproval
            };

            ApprovalServiceMock.Setup(a => a.GetApprovalsByCostStageRevisionId(It.IsAny <Guid>(), true)).ReturnsAsync(approvals);

            var pgPaymentDetails = new PgPaymentDetails
            {
                PoNumber = poNumber
            };

            CostStageServiceMock.Setup(cssm => cssm.GetPreviousCostStage(latestStageId)).Returns(Task.FromResult(previousStage));
            CostStageRevisionServiceMock.Setup(csrsm => csrsm.GetLatestRevision(previousStageId)).Returns(Task.FromResult(previousRevision));
            CustomObjectDataServiceMock
            .Setup(codsm => codsm.GetCustomData <PgPaymentDetails>(latestRevisionId, CustomObjectDataKeys.PgPaymentDetails))
            .Returns(Task.FromResult(pgPaymentDetails));
            CustomObjectDataServiceMock
            .Setup(codsm => codsm.GetCustomData <PgPaymentDetails>(previousRevisionId, CustomObjectDataKeys.PgPaymentDetails))
            .Returns(Task.FromResult(pgPaymentDetails));
        }