public Task ExportProperties_FilterPlainProperties()
        {
            //Arrange
            var pricelist = CreateSamplePricelist();

            var dataQuery = new PricelistExportDataQuery()
            {
                IncludedProperties = new[]
                {
                    new ExportedTypePropertyInfo()
                    {
                        FullName = "Id"
                    },
                }
            };

            //Act
            dataQuery.FilterProperties(pricelist);

            //Assert
            Assert.Equal("1", pricelist.Id);
            Assert.Null(pricelist.Name);

            return(Task.CompletedTask);
        }
Ejemplo n.º 2
0
        public Task ExportPrices_ExportNameTest()
        {
            var date   = new DateTime(2020, 10, 20);
            var prices = new List <Price>()
            {
                new Price
                {
                    Id          = "P1",
                    PricelistId = "1",
                    List        = 25,
                    CreatedDate = date,
                    Currency    = "USD",
                },
                new Price
                {
                    Id           = "P2",
                    PricelistId  = "1",
                    List         = 26,
                    EndDate      = date,
                    ModifiedDate = date,
                    Pricelist    = new Pricelist()
                    {
                        Id = "1", Name = "Pricelist 1"
                    },
                },
            };

            var propertyInfos = new[]
            {
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Price.Id),
                    DisplayName = $"{nameof(Price)}.{nameof(Price.Id)}",
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Price.PricelistId),
                    DisplayName = $"{nameof(Price)}.{nameof(Price.PricelistId)}",
                },
            };
            var dataQuery = new PricelistExportDataQuery()
            {
                IncludedProperties = propertyInfos
            };
            var exportedDataRequest = CreatExportDataRequest(dataQuery);

            //Act
            var filteredPricesString = SerializeAndRead(exportedDataRequest, prices);

            //Assets
            Assert.Equal("Price.Id,Price.PricelistId\r\nP1,1\r\nP2,1\r\n", filteredPricesString);

            return(Task.CompletedTask);
        }
Ejemplo n.º 3
0
        public Task ExportPricelists_FilterNestedMembers()
        {
            var pricelists = CreatePricelists();

            var propertyInfos = new[]
            {
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Pricelist.Id),
                    DisplayName = nameof(Pricelist.Id),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Pricelist.Name),
                    DisplayName = nameof(Pricelist.Name),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Pricelist.Currency),
                    DisplayName = nameof(Pricelist.Currency),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Id)}",
                    DisplayName = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Id)}",
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Name)}",
                    DisplayName = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Name)}",
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Priority)}",
                    DisplayName = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Priority)}",
                },
            };
            var dataQuery = new PricelistExportDataQuery()
            {
                IncludedProperties = propertyInfos
            };
            var exportedDataRequest = CreatExportDataRequest(dataQuery);

            //Act
            var filteredPricesString = SerializeAndRead(exportedDataRequest, pricelists);

            //Assets
            Assert.Equal("Id,Name,Currency,ActiveAssignment.Id,ActiveAssignment.Name,ActiveAssignment.Priority\r\nPL1,Pricelist 1,USD,PA1_1,PA1_1 Name,1\r\nPL2,Pricelist 2,EUR,PA2_1,PA2_1 Name,11\r\n", filteredPricesString);

            return(Task.CompletedTask);
        }
Ejemplo n.º 4
0
        public Task ExportPricelists_DoesNotWriteEnumerableProperties()
        {
            var pricelists = CreatePricelists();

            var propertyInfos = new[]
            {
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Pricelist.Id),
                    DisplayName = nameof(Pricelist.Id),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Pricelist.Name),
                    DisplayName = nameof(Pricelist.Name),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Pricelist.Currency),
                    DisplayName = nameof(Pricelist.Currency),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.Prices)}.{nameof(Price.Id)}",
                    DisplayName = $"{nameof(Pricelist.Prices)}.{nameof(Price.Id)}",
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.Prices)}.{nameof(Price.List)}",
                    DisplayName = $"{nameof(Pricelist.Prices)}.{nameof(Price.List)}",
                },
            };
            var dataQuery = new PricelistExportDataQuery()
            {
                IncludedProperties = propertyInfos
            };
            var exportedDataRequest = CreatExportDataRequest(dataQuery);

            //Act
            var filteredPricesString = SerializeAndRead(exportedDataRequest, pricelists);

            //Assets
            Assert.Equal("Id,Name,Currency\r\nPL1,Pricelist 1,USD\r\nPL2,Pricelist 2,EUR\r\n", filteredPricesString);

            return(Task.CompletedTask);
        }
        public Task ExportProperties_FilterCollectionNestedProperties()
        {
            //Arrange
            var pricelist = CreateSamplePricelist();

            var dataQuery = new PricelistExportDataQuery()
            {
                IncludedProperties = new[]
                {
                    new ExportedTypePropertyInfo()
                    {
                        FullName = "Id"
                    },
                    new ExportedTypePropertyInfo()
                    {
                        FullName = "Name"
                    },
                    new ExportedTypePropertyInfo()
                    {
                        FullName = "Prices.List"
                    },
                    new ExportedTypePropertyInfo()
                    {
                        FullName = "Assignments.Id"
                    },
                }
            };

            //Act
            dataQuery.FilterProperties(pricelist);

            //Assert
            Assert.Equal("PL1", pricelist.Name);
            Assert.Equal("1", pricelist.Id);

            Assert.Equal(2, pricelist.Prices.Count);
            Assert.Equal(1, pricelist.Prices.Count(x => x.List == 25));
            Assert.Equal(1, pricelist.Prices.Count(x => x.List == 26));

            Assert.Equal(2, pricelist.Assignments.Count);
            Assert.Equal(1, pricelist.Assignments.Count(x => x.Id == "A1"));
            Assert.Equal(1, pricelist.Assignments.Count(x => x.Id == "A2"));

            return(Task.CompletedTask);
        }
        public Task ExportProperties_ClearCircleReferences()
        {
            //Arrange
            var pricelist = CreateSamplePricelist();

            var dataQuery = new PricelistExportDataQuery()
            {
                IncludedProperties = new[]
                {
                    new ExportedTypePropertyInfo()
                    {
                        FullName = "Name"
                    },
                    new ExportedTypePropertyInfo()
                    {
                        FullName = "Prices.Id"
                    },
                    new ExportedTypePropertyInfo()
                    {
                        FullName = "Id"
                    },
                    new ExportedTypePropertyInfo()
                    {
                        FullName = "Assignments.Id"
                    },
                },
            };

            //Act
            dataQuery.FilterProperties(pricelist);

            //Assert
            Assert.Null(pricelist.Prices.First().Pricelist);
            Assert.Null(pricelist.Assignments.First().Pricelist);

            return(Task.CompletedTask);
        }
Ejemplo n.º 7
0
        public Task ExportPricelists_UseCustomMap()
        {
            var pricelists = CreatePricelists();

            var propertyInfos = new[]
            {
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Pricelist.Id),
                    DisplayName = nameof(Pricelist.Id),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Pricelist.Name),
                    DisplayName = nameof(Pricelist.Name),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(Pricelist.Currency),
                    DisplayName = nameof(Pricelist.Name),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Id)}",
                    DisplayName = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Id)}",
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Name)}",
                    DisplayName = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Name)}",
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Priority)}",
                    DisplayName = $"{nameof(Pricelist.ActiveAssignment)}.{nameof(PricelistAssignment.Priority)}",
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.Prices)}.{nameof(Price.Id)}",
                    DisplayName = $"{nameof(Pricelist.Prices)}.{nameof(Price.Id)}",
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = $"{nameof(Pricelist.Prices)}.{nameof(Price.List)}",
                    DisplayName = $"{nameof(Pricelist.Prices)}.{nameof(Price.List)}",
                },
            };
            var dataQuery = new PricelistExportDataQuery()
            {
                IncludedProperties = propertyInfos
            };

            var configuration = new Configuration(cultureInfo: CultureInfo.InvariantCulture);

            configuration.RegisterClassMap <PricelistTestMapping>();

            var exportDataRequest = CreatExportDataRequest(dataQuery, new CsvProviderConfiguration()
            {
                Configuration = configuration
            });

            //Act
            var filteredPricesString = SerializeAndRead(exportDataRequest, pricelists);

            //Assets
            Assert.Equal("Id,Name,Currency,ActiveAssignment.Id,ActiveAssignment.Name\r\nPL1,Pricelist 1,USD,PA1_1,PA1_1 Name\r\nPL2,Pricelist 2,EUR,PA2_1,PA2_1 Name\r\n", filteredPricesString);

            return(Task.CompletedTask);
        }
Ejemplo n.º 8
0
        public Task ExportPricelistAssignments_FilterPlainMembers()
        {
            var date        = new DateTime(2020, 10, 20);
            var assignments = new List <PricelistAssignment>()
            {
                new PricelistAssignment
                {
                    Id          = "PA1",
                    PricelistId = "1",
                    Description = "PA1 Description",
                    Priority    = 1,
                    Pricelist   = new Pricelist()
                    {
                        Name = "Pricelist1"
                    },
                },
                new PricelistAssignment
                {
                    Id                  = "PA2",
                    PricelistId         = "2",
                    EndDate             = date,
                    Description         = "PA2 Description",
                    ConditionExpression = "<expression/>",
                },
            };

            var propertyInfos = new[]
            {
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(PricelistAssignment.Id),
                    DisplayName = nameof(PricelistAssignment.Id),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(PricelistAssignment.Description),
                    DisplayName = nameof(PricelistAssignment.Description),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(PricelistAssignment.EndDate),
                    DisplayName = nameof(PricelistAssignment.EndDate),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(PricelistAssignment.Priority),
                    DisplayName = nameof(PricelistAssignment.Priority),
                },
                new ExportedTypePropertyInfo()
                {
                    FullName    = nameof(PricelistAssignment.ConditionExpression),
                    DisplayName = nameof(PricelistAssignment.ConditionExpression),
                },
            };
            var dataQuery = new PricelistExportDataQuery()
            {
                IncludedProperties = propertyInfos
            };
            var exportedDataRequest = CreatExportDataRequest(dataQuery);

            //Act
            var filteredPricesString = SerializeAndRead(exportedDataRequest, assignments);

            //Assets
            Assert.Equal("Id,Description,EndDate,Priority,ConditionExpression\r\nPA1,PA1 Description,,1,\r\nPA2,PA2 Description,10/20/2020 00:00:00,0,<expression/>\r\n", filteredPricesString);

            return(Task.CompletedTask);
        }