protected void MapEmailNotificationObject(CostNotificationObject obj, Cost cost, CostNotificationUsers users) { dataAccess.Entity.Project project = cost.Project; obj.Agency = Mapper.Map <core.Models.Notifications.Agency>(users.CostOwner.Agency); Mapper.Map(users.CostOwner.Agency.Country, obj.Agency); obj.Brand = Mapper.Map <core.Models.Notifications.Brand>(project.Brand); obj.Cost = Mapper.Map <core.Models.Notifications.Cost>(cost); Mapper.Map(cost.LatestCostStageRevision.CostStage, obj.Cost); Mapper.Map(users.CostOwner, obj.Cost); obj.Project = Mapper.Map <core.Models.Notifications.Project>(project); if (users.Approver != null) { obj.Approver = Mapper.Map <Approver>(users.Approver); } }
public async Task HandleA5EventObject_ProjectDeleted() { //Setup const string projectGdamId = "1jh2j3g3j1hg23j1g3"; const string gdamUserId = "userId"; var agencyId = Guid.NewGuid(); var projectGuid = Guid.NewGuid(); var project = new Project() { Id = projectGuid, GdamProjectId = projectGdamId, AgencyId = agencyId, Deleted = false, }; _efContextMemory.Project.Add(project); await _efContextMemory.SaveChangesAsync(); _mapperMock.Setup(m => m.Map <ProjectSearchItem[]>(It.IsAny <Project>())).Returns(new bool[1] .Select(i => new ProjectSearchItem { Id = Guid.NewGuid().ToString(), Version = 1 }).ToArray()); //Act await _projectServiceEfMemory.DeleteProject(projectGdamId, gdamUserId); //Assert _elasticSearchServiceMock.Verify(es => es.UpdateSearchItem(It.IsAny <ProjectSearchItem>(), Constants.ElasticSearchIndices.ProjectsIndexName), Times.Once); var expected = _efContextMemory.Project.ToList().First(); expected.Deleted.Should().BeTrue(); }
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)); }
protected void SetupDataSharedAcrossTests(Agency agency, Country country, Cost cost, CostStageRevision latestRevision, Project project, CostUser costOwner, Guid costOwnerId, CostStage costStage, Brand brand, Guid costId, Guid costStageRevisionId, Guid projectId, string budgetRegion = Constants.BudgetRegion.AsiaPacific) { agency.Country = country; cost.CostNumber = CostNumber; cost.LatestCostStageRevision = latestRevision; cost.Project = project; costOwner.Agency = agency; costOwner.Id = costOwnerId; latestRevision.CostStage = costStage; project.Brand = brand; agency.Name = AgencyName; brand.Name = BrandName; cost.Id = costId; costStage.Name = CostStageName.ToString(); costOwner.FullName = CostOwnerFullName; costOwner.GdamUserId = CostOwnerGdamUserId; latestRevision.Id = costStageRevisionId; project.Id = projectId; project.Name = ProjectName; project.GdamProjectId = ProjectGdamId; project.AdCostNumber = ProjectNumber; country.Name = AgencyLocation; var stageDetails = new PgStageDetailsForm { ContentType = new core.Builders.DictionaryValue { Id = Guid.NewGuid(), Key = ContentType }, CostType = cost.CostType.ToString(), ProductionType = new core.Builders.DictionaryValue { Id = Guid.NewGuid(), Key = CostProductionType }, Title = CostTitle, AgencyTrackingNumber = AgencyTrackingNumber, BudgetRegion = new AbstractTypeValue { Key = budgetRegion, Name = budgetRegion } }; var existingUser = EFContext.CostUser.FirstOrDefault(a => a.GdamUserId == CostOwnerGdamUserId); if (existingUser == null) { EFContext.Add(costOwner); EFContext.SaveChanges(); } CostStageRevisionServiceMock.Setup(csr => csr.GetStageDetails <PgStageDetailsForm>(costStageRevisionId)).ReturnsAsync(stageDetails); }