public async Task AddAgencyToDb_When_ValidGlobalAgencyRegionLabel_And_ExistingGlobalAgency_Should_AddGlobalAgencyRegion()
        {
            // Arrange
            var agencyName = "Saatchi";
            var regionName = "Japan";
            var globalAgencyRegionLabel = $"{Constants.BusinessUnit.GlobalAgencyRegionLabelPrefix}{agencyName}_{regionName}";
            var a5Agency = await PrepareTestData(globalAgencyRegionLabel);

            var costAgency = EFContext.Agency.First();
            var existingGlobalAgencyRegion = new GlobalAgencyRegion
            {
                Region       = "North America",
                GlobalAgency = new GlobalAgency
                {
                    Name = agencyName
                }
            };

            costAgency.GlobalAgencyRegion = existingGlobalAgencyRegion;

            EFContext.GlobalAgencyRegion.Add(existingGlobalAgencyRegion);
            EFContext.SaveChanges();

            // Act
            await AgencyService.AddAgencyToDb(a5Agency);

            // Assert
            EFContext.GlobalAgency.Should().HaveCount(1);
            EFContext.GlobalAgencyRegion.Should().HaveCount(2);
        }
        public async Task AddAgencyToDb_When_ValidGlobalAgencyRegionLabel_And_ChanginGlobalAgencyForBU_Should_UpdateGlobalAgencyOfAgency()
        {
            // Arrange
            var agencyName = "Saatchi";
            var regionName = "Japan";
            var globalAgencyRegionLabel = $"{Constants.BusinessUnit.GlobalAgencyRegionLabelPrefix}{agencyName}_{regionName}";
            var a5Agency = await PrepareTestData(globalAgencyRegionLabel);

            var existingGlobalAgencyRegion = new GlobalAgencyRegion
            {
                Region       = regionName,
                GlobalAgency = new GlobalAgency
                {
                    Name = "Any other global agency"
                }
            };


            var costAgency = EFContext.Agency.First();

            costAgency.GlobalAgencyRegion = existingGlobalAgencyRegion;

            EFContext.GlobalAgencyRegion.Add(existingGlobalAgencyRegion);
            EFContext.SaveChanges();

            // Act
            await AgencyService.AddAgencyToDb(a5Agency);

            // Assert
            EFContext.GlobalAgency.Should().HaveCount(2);
            EFContext.GlobalAgencyRegion.Should().HaveCount(2);
            costAgency.GlobalAgencyRegion.Region.Should().Be(regionName);
            costAgency.GlobalAgencyRegion.GlobalAgency.Name.Should().Be(agencyName);
        }
        public async Task AddAgencyToDb_When_NoGlobalAgencyRegionLabel_ShouldNotCreateGlobalAgencyAndRegion()
        {
            // Arrange
            var a5Agency = await PrepareTestData();

            // Act
            await AgencyService.AddAgencyToDb(a5Agency);

            // Assert
            EFContext.GlobalAgency.Should().HaveCount(0);
            EFContext.GlobalAgencyRegion.Should().HaveCount(0);
        }
        public async Task AddAgencyToDb_When_ValidGlobalAgencyRegionLabel_And_NewGlobalAgency_Should_CreateGlobalAgencyAndRegion()
        {
            // Arrange
            var agencyName = "Saatchi";
            var regionName = "Japan";
            var globalAgencyRegionLabel = $"{Constants.BusinessUnit.GlobalAgencyRegionLabelPrefix}{agencyName}_{regionName}";
            var a5Agency = await PrepareTestData(globalAgencyRegionLabel);

            // Act
            await AgencyService.AddAgencyToDb(a5Agency);

            // Assert
            EFContext.GlobalAgency.Should().HaveCount(1);
            EFContext.GlobalAgencyRegion.Should().HaveCount(1);
        }
        public async Task AddAgencyToDb_When_RegionIsMissingInGlobalAgencyRegionLabel_And_NewGlobalAgency_ShouldNotCreateGlobalAgencyAndRegion()
        {
            // Arrange
            var agencyName = "Saatchi";
            var regionName = "";
            var globalAgencyRegionLabel = $"{Constants.BusinessUnit.GlobalAgencyRegionLabelPrefix}{agencyName}_{regionName}";
            var a5Agency = await PrepareTestData(globalAgencyRegionLabel);

            // Act
            await AgencyService.AddAgencyToDb(a5Agency);

            // Assert
            EFContext.GlobalAgency.Should().HaveCount(0);
            EFContext.GlobalAgencyRegion.Should().HaveCount(0);
            LoggerAsMock.Verify(l => l.Error(It.IsAny <string>()), Times.Once);
        }
        public async Task AddAgencyToDb_When_MultipleGlobalAgencyRegionLabels__Should_UseFirstLabel()
        {
            // Arrange
            var agencyName1 = "Saatchi1";
            var regionName1 = "Japan1";
            var agencyName2 = "Saatchi2";
            var regionName2 = "Japan2";
            var globalAgencyRegionLabel1 = $"{Constants.BusinessUnit.GlobalAgencyRegionLabelPrefix}{agencyName1}_{regionName1}";
            var globalAgencyRegionLabel2 = $"{Constants.BusinessUnit.GlobalAgencyRegionLabelPrefix}{agencyName2}_{regionName2}";
            var a5Agency = await PrepareTestData(globalAgencyRegionLabel1, globalAgencyRegionLabel2);

            // Act
            await AgencyService.AddAgencyToDb(a5Agency);

            // Assert
            EFContext.GlobalAgency.Should().HaveCount(1);
            EFContext.GlobalAgencyRegion.Should().HaveCount(1);
            EFContext.GlobalAgency.First().Name.Should().Be(agencyName1);
            EFContext.GlobalAgencyRegion.First().Region.Should().Be(regionName1);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        public async Task HandleA5EventObject_Media_AgencyCreated()
        {
            //Setup
            var basePath = AppContext.BaseDirectory;
            var filePath = $"{basePath}{Path.DirectorySeparatorChar}JsonData{Path.DirectorySeparatorChar}a5_agency.json";
            var a5Agency = await JsonReader.GetObject <A5Agency>(filePath, true);

            a5Agency._cm.Common.Labels = a5Agency._cm.Common.Labels.Where(a => !a.StartsWith("SMO_")).ToArray();

            PermissionServiceMock.Setup(a => a.CreateDomainNode(It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <Guid>()))
            .ReturnsAsync(new[] { Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString() });
            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.CostUser.AddRange(costUsers);
            EFContext.Brand.AddRange(brands);
            EFContext.Currency.Add(currency);

            EFContext.SaveChanges();

            //Act
            await AgencyService.AddAgencyToDb(a5Agency);

            //Assert
            PermissionServiceMock.Verify(a => a.CreateDomainNode(It.IsAny <string>(), It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <Guid>()), Times.Never);
            EFContext.Agency.Should().HaveCount(1);
            EFContext.GlobalAgencyRegion.Should().HaveCount(0);
            EFContext.GlobalAgency.Should().HaveCount(0);
        }