public async Task InsertCost() { //Setup var adCostNumber = "adCostNumber"; var templateId = Guid.NewGuid(); var requestModel = CreateCostModel(templateId); var costModel = new CostBuilderModel { Stages = new[] { new CostStageModel { Revisions = new [] { new CostStageRevisionModel { SupportingDocuments = new List <SupportingDocumentModel>() } } } } }; var costUser = new CostUser { Id = User.Id, Agency = new Agency { Id = User.AgencyId, } }; var responseMock = new Mock <ICreateCostResponse>(); responseMock.SetupGet(f => f.Cost).Returns(costModel); PgUserServiceMock.Setup(a => a.GrantUsersAccess(It.IsAny <Cost>(), It.IsAny <CreateCostModel>())).Returns(Task.CompletedTask); CostBuilderMock.Setup(e => e.CreateCost(It.IsAny <CostUser>(), It.IsAny <CreateCostModel>())) .ReturnsAsync(responseMock.Object); EFContext.Project.Add(new Project { Id = Guid.NewGuid(), AdCostNumber = adCostNumber }); EFContext.CostUser.Add(costUser); await EFContext.SaveChangesAsync(); PermissionService.Setup(a => a.CreateDomainNode(It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <Guid>())) .ReturnsAsync(new[] { Guid.NewGuid().ToString() }); //Act await CostService.CreateCost(User, requestModel); //Assert CostBuilderMock.Verify(e => e.CreateCost(costUser, requestModel), Times.Once); EFContext.Cost.Should().HaveCount(1); EFContext.NotificationSubscriber.Should().HaveCount(0); Mapper.Verify(m => m.Map <CostModel>(It.Is <Cost>(c => c != null && c.Status == CostStageRevisionStatus.Draft))); }
public async Task GrandEditPermissionToOwner() { //Setup var adCostNumber = "adCostNumber"; var templateId = Guid.NewGuid(); var requestModel = CreateCostModel(templateId); var costModel = new CostBuilderModel { Stages = new[] { new CostStageModel { Revisions = new [] { new CostStageRevisionModel { SupportingDocuments = new List <SupportingDocumentModel>() } } } } }; var costUser = new CostUser { Id = User.Id, Agency = new Agency { Id = User.AgencyId, } }; var responseMock = new Mock <ICreateCostResponse>(); responseMock.SetupGet(f => f.Cost).Returns(costModel); PgUserServiceMock.Setup(a => a.GrantUsersAccess(It.IsAny <Cost>(), It.IsAny <CreateCostModel>())).Returns(Task.CompletedTask); CostBuilderMock.Setup(e => e.CreateCost(It.IsAny <CostUser>(), It.IsAny <CreateCostModel>())) .ReturnsAsync(responseMock.Object); EFContext.Project.Add(new Project { Id = Guid.NewGuid(), AdCostNumber = adCostNumber }); EFContext.CostUser.Add(costUser); await EFContext.SaveChangesAsync(); PermissionService.Setup(a => a.CreateDomainNode(It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <Guid>())) .ReturnsAsync(new[] { Guid.NewGuid().ToString() }); //Act await CostService.CreateCost(User, requestModel); //Assert CostStageRevisionPermissionServiceMock.Verify(p => p.GrantCostPermission(It.IsAny <Guid>(), Roles.CostEditor, It.Is <IEnumerable <CostUser> >(c => c.Any(i => i == costUser)), BuType.Pg, It.IsAny <Guid?>(), true), Times.Once); }
public async Task HandleA5EventObject_BU_AgencyCreated() { //Setup var a5Agency = await GetA5Agency(); var labelz = a5Agency._cm.Common.Labels.ToList(); labelz.Add("CM_Prime_P&G"); a5Agency._cm.Common.Labels = labelz.ToArray(); var costUser = new CostUser { Id = Guid.NewGuid(), GdamUserId = a5Agency.CreatedBy._id, ParentId = Guid.NewGuid() }; var agency = new Agency { Id = Guid.NewGuid(), GdamAgencyId = a5Agency._id }; var brand = new Brand { Id = Guid.NewGuid(), Name = "Brand", AdIdPrefix = "prefix" }; var country = new Country { Iso = "GB", Id = Guid.NewGuid() }; var currency = new Currency { DefaultCurrency = true, Code = "TEST", Description = "Test Currency" }; var costUsers = new List <CostUser> { costUser }.AsQueryable(); var brands = new List <Brand> { brand }.AsQueryable(); var abstractTypes = new List <AbstractType> { new AbstractType { Type = AbstractObjectType.Agency.ToString(), Id = Guid.NewGuid() }, new AbstractType { Type = AbstractObjectType.Module.ToString(), Module = new Module { ClientType = ClientType.Pg }, Id = Guid.NewGuid() } }; EFContext.AbstractType.AddRange(abstractTypes); EFContext.Country.Add(country); EFContext.Agency.Add(new Agency { Name = "Media Agency", Version = 1, Labels = new string[] { } }); EFContext.CostUser.AddRange(costUsers); EFContext.Brand.AddRange(brands); EFContext.Currency.Add(currency); EFContext.SaveChanges(); PluginAgencyServiceMock.Setup(a => a.AddAgencyAbstractType(It.IsAny <Agency>(), It.IsAny <AbstractType>())) .ReturnsAsync(new AbstractType { Id = Guid.NewGuid(), ObjectId = Guid.NewGuid() }); PgUserServiceMock.Setup(a => a.AddUsersToAgencyAbstractType(It.IsAny <AbstractType>(), It.IsAny <Guid>())).Returns(Task.CompletedTask); //Act var addedAgency = await AgencyService.AddAgencyToDb(a5Agency); //Assert PermissionServiceMock.Verify(a => a.CreateDomainNode(It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <Guid>()), Times.Once); EFContext.Agency.Should().HaveCount(2); EFContext.AbstractType.Should().HaveCount(3); EFContext.GlobalAgencyRegion.Should().HaveCount(0); EFContext.GlobalAgency.Should().HaveCount(0); addedAgency.Should().NotBeNull(); addedAgency.Name.Should().Be("Saatchi"); addedAgency.Labels.Length.Should().Be(7); addedAgency.GdamAgencyId.Should().Be(a5Agency._id); }