コード例 #1
0
        public Task PriceJsonExport()
        {
            //Arrange
            IKnownExportTypesRegistrar registrar = new KnownExportTypesService();

            var searchServiceMock = new Mock <IPricingSearchService>();

            searchServiceMock.Setup(x => x.SearchPrices(It.Is <PricesSearchCriteria>(y => y.Skip == 0))).Returns(GetTestPriceResult <Price>());
            searchServiceMock.Setup(x => x.SearchPrices(It.Is <PricesSearchCriteria>(y => y.Skip > 0))).Returns(new PricingSearchResult <Price>());

            var priceServiceMock = new Mock <IPricingService>();

            var itemServiceMock = new Mock <IItemService>();

            var metadata = typeof(ExportablePrice).GetPropertyNames();
            var resolver = (IKnownExportTypesResolver)registrar;

            registrar.RegisterType(ExportedTypeDefinitionBuilder.Build <ExportablePrice, PriceExportDataQuery>()
                                   .WithDataSourceFactory(new PriceExportPagedDataSourceFactory(searchServiceMock.Object, priceServiceMock.Object, itemServiceMock.Object, null))
                                   .WithMetadata(metadata));

            var includedPropertyNames = new string[] { "Currency", "ProductId", "Sale", "List", "MinQuantity", "StartDate", "EndDate", "EffectiveValue" };
            var IncludedProperties    = metadata.PropertyInfos.Where(x => includedPropertyNames.Contains(x.FullName, StringComparer.OrdinalIgnoreCase)).ToArray();

            var exportProviderFactories = new[] {
                new Func <ExportDataRequest, IExportProvider>((request) => new JsonExportProvider(request)),
            };

            var dataExporter = new DataExporter(resolver, new ExportProviderFactory(exportProviderFactories));

            //Act
            var result = string.Empty;

            using (var stream = new MemoryStream())
                using (var writer = new StreamWriter(stream, Encoding.UTF8)
                {
                    AutoFlush = true
                })
                {
                    dataExporter.Export(
                        stream,
                        new ExportDataRequest()
                    {
                        DataQuery = new PriceExportDataQuery()
                        {
                            IncludedProperties = IncludedProperties
                        },
                        ExportTypeName = typeof(ExportablePrice).FullName,
                        ProviderName   = nameof(JsonExportProvider)
                    },
                        new Action <ExportProgressInfo>(x => Console.WriteLine(x.Description)),
                        new CancellationTokenWrapper(CancellationToken.None));

                    stream.Seek(0, SeekOrigin.Begin);

                    var reader = new StreamReader(stream);
                    result = reader.ReadToEnd();
                }

            //Assert
            var prices = JsonConvert.DeserializeObject <ExportablePrice[]>(result);

            Assert.NotNull(prices);
            Assert.Equal(3, prices.Length);
            Assert.Equal(2, prices.Count(x => x.List == 3.99m));
            Assert.Equal(1, prices.Count(x => x.ProductId == "d029526eab5948b189694f1bddba8e68"));

            return(Task.CompletedTask);
        }
コード例 #2
0
        public Task PricelistAssignmentJsonExport()
        {
            IKnownExportTypesRegistrar registrar = new KnownExportTypesService();

            var searchServiceMock = new Mock <IPricingSearchService>();

            searchServiceMock.Setup(x => x.SearchPricelistAssignments(It.Is <PricelistAssignmentsSearchCriteria>(y => y.Skip == 0))).Returns(GetPricelistAssignmentSearchResult <PricelistAssignment>());
            searchServiceMock.Setup(x => x.SearchPricelistAssignments(It.Is <PricelistAssignmentsSearchCriteria>(y => y.Skip > 0))).Returns(new PricingSearchResult <PricelistAssignment>());

            var priceServiceMock   = new Mock <IPricingService>();
            var catalogServiceMock = new Mock <ICatalogService>();

            var metadata = typeof(ExportablePricelistAssignment).GetPropertyNames();
            var resolver = (IKnownExportTypesResolver)registrar;

            registrar.RegisterType(ExportedTypeDefinitionBuilder.Build <ExportablePricelistAssignment, PricelistAssignmentExportDataQuery>()
                                   .WithDataSourceFactory(new PricelistAssignmentExportPagedDataSourceFactory(searchServiceMock.Object, priceServiceMock.Object, catalogServiceMock.Object))
                                   .WithMetadata(metadata));

            var exportProviderFactories = new[] {
                new Func <ExportDataRequest, IExportProvider>((request) => new JsonExportProvider(request)),
            };

            var dataExporter          = new DataExporter(resolver, new ExportProviderFactory(exportProviderFactories));
            var includedPropertyNames = new string[] { "CatalogId", "PricelistId", "Priority", "Id" };
            var IncludedProperties    = metadata.PropertyInfos.Where(x => includedPropertyNames.Contains(x.FullName, StringComparer.OrdinalIgnoreCase)).ToArray();

            //Act
            var result = string.Empty;

            using (var stream = new MemoryStream())
                using (var writer = new StreamWriter(stream, Encoding.UTF8)
                {
                    AutoFlush = true
                })
                {
                    dataExporter.Export(
                        stream,
                        new ExportDataRequest()
                    {
                        DataQuery = new PricelistAssignmentExportDataQuery()
                        {
                            IncludedProperties = IncludedProperties
                        },
                        ExportTypeName = typeof(ExportablePricelistAssignment).FullName,
                        ProviderName   = nameof(JsonExportProvider)
                    },
                        new Action <ExportProgressInfo>(x => Console.WriteLine(x.Description)),
                        new CancellationTokenWrapper(CancellationToken.None));

                    stream.Seek(0, SeekOrigin.Begin);

                    var reader = new StreamReader(stream);
                    result = reader.ReadToEnd();
                }

            //Assert
            var pricelistsAssigments = JsonConvert.DeserializeObject <ExportablePricelistAssignment[]>(result);

            Assert.NotNull(pricelistsAssigments);
            Assert.NotEmpty(pricelistsAssigments);

            var assigment = pricelistsAssigments.FirstOrDefault(x => x.Id == "d4a4e5271046497eaef61ee47efe6215");

            Assert.NotNull(assigment);
            Assert.Null(assigment.Name);
            Assert.Equal("80873a35a34a4cf8997ac87e69cac6d6", assigment.PricelistId);
            Assert.Equal("4974648a41df4e6ea67ef2ad76d7bbd4", assigment.CatalogId);
            Assert.Equal(10, assigment.Priority);

            return(Task.CompletedTask);
        }
コード例 #3
0
        public Task PriceCsvExport()
        {
            IKnownExportTypesRegistrar registrar = new KnownExportTypesService();

            var resolver = (IKnownExportTypesResolver)registrar;

            var searchServiceMock = new Mock <IPricingSearchService>();

            searchServiceMock.Setup(x => x.SearchPrices(It.Is <PricesSearchCriteria>(y => y.Skip == 0))).Returns(GetTestPriceResult <Price>());
            searchServiceMock.Setup(x => x.SearchPrices(It.Is <PricesSearchCriteria>(y => y.Skip > 0))).Returns(new PricingSearchResult <Price>());

            var priceServiceMock = new Mock <IPricingService>();

            var itemServiceMock = new Mock <IItemService>();

            var metadata = typeof(ExportablePrice).GetPropertyNames();

            registrar.RegisterType(ExportedTypeDefinitionBuilder.Build <ExportablePrice, PriceExportDataQuery>()
                                   .WithDataSourceFactory(new PriceExportPagedDataSourceFactory(searchServiceMock.Object, priceServiceMock.Object, itemServiceMock.Object, null))
                                   .WithMetadata(metadata)
                                   .WithTabularMetadata(typeof(TabularPrice).GetPropertyNames()));

            var exportProviderFactories = new[]
            {
                new Func <ExportDataRequest, IExportProvider>((request) => new JsonExportProvider(request)),
                new Func <ExportDataRequest, IExportProvider>((request) => new CsvExportProvider(request)),
            };


            var includedPropertyNames = new string[] { "Currency", "ProductId" };
            var IncludedProperties    = metadata.PropertyInfos.Where(x => includedPropertyNames.Contains(x.FullName, StringComparer.OrdinalIgnoreCase)).ToArray();
            var dataExporter          = new DataExporter(resolver, new ExportProviderFactory(exportProviderFactories));

            var result = string.Empty;

            using (var stream = new MemoryStream())
                using (var writer = new StreamWriter(stream, Encoding.UTF8)
                {
                    AutoFlush = true
                })
                {
                    dataExporter.Export(
                        stream,
                        new ExportDataRequest()
                    {
                        DataQuery = new PriceExportDataQuery()
                        {
                            IncludedProperties = IncludedProperties,
                        },
                        ExportTypeName = typeof(ExportablePrice).FullName,
                        ProviderName   = nameof(CsvExportProvider)
                    },
                        new Action <ExportProgressInfo>(x => Console.WriteLine(x.Description)),
                        new CancellationTokenWrapper(CancellationToken.None));

                    stream.Seek(0, SeekOrigin.Begin);

                    var reader = new StreamReader(stream);
                    result = reader.ReadToEnd();
                }

            Assert.Equal("Currency,ProductId\r\nUSD,d029526eab5948b189694f1bddba8e68\r\nEUR,85e7aa089a4e4a97a4394d668e37e3f8\r\nEUR,f427108e75ed4676923ddc47632111e3\r\n", result);

            return(Task.CompletedTask);
        }
コード例 #4
0
        public Task PricelistJsonExport()
        {
            //Arrange
            IKnownExportTypesRegistrar registrar = new KnownExportTypesService();

            var searchServiceMock = new Mock <IPricingSearchService>();

            searchServiceMock.Setup(x => x.SearchPricelists(It.Is <PricelistSearchCriteria>(y => y.Skip == 0))).Returns(GetTestPricelistResult <Pricelist>());
            searchServiceMock.Setup(x => x.SearchPricelists(It.Is <PricelistSearchCriteria>(y => y.Skip > 0))).Returns(new PricingSearchResult <Pricelist>());

            searchServiceMock.Setup(x => x.SearchPrices(It.IsAny <PricesSearchCriteria>())).Returns(new PricingSearchResult <Price>()
            {
                TotalCount = 0,
                Results    = new List <Price>(),
            });

            var priceServiceMock = new Mock <IPricingService>();

            var metadata = typeof(ExportablePricelist).GetPropertyNames();
            var resolver = (IKnownExportTypesResolver)registrar;

            registrar.RegisterType(ExportedTypeDefinitionBuilder.Build <ExportablePricelist, PricelistExportDataQuery>()
                                   .WithDataSourceFactory(new PricelistExportPagedDataSourceFactory(searchServiceMock.Object, priceServiceMock.Object))
                                   .WithMetadata(metadata));

            var exportProviderFactories = new[] {
                new Func <ExportDataRequest, IExportProvider>((request) => new JsonExportProvider(request)),
            };

            var dataExporter          = new DataExporter(resolver, new ExportProviderFactory(exportProviderFactories));
            var includedPropertyNames = new string[] { "Currency", "Id", "Name" };
            var IncludedProperties    = metadata.PropertyInfos.Where(x => includedPropertyNames.Contains(x.FullName, StringComparer.OrdinalIgnoreCase)).ToArray();

            //Act
            var result = string.Empty;

            using (var stream = new MemoryStream())
                using (var writer = new StreamWriter(stream, Encoding.UTF8)
                {
                    AutoFlush = true
                })
                {
                    dataExporter.Export(
                        stream,
                        new ExportDataRequest()
                    {
                        DataQuery = new PricelistExportDataQuery()
                        {
                            IncludedProperties = IncludedProperties
                        },
                        ExportTypeName = typeof(ExportablePricelist).FullName,
                        ProviderName   = nameof(JsonExportProvider)
                    },
                        new Action <ExportProgressInfo>(x => Console.WriteLine(x.Description)),
                        new CancellationTokenWrapper(CancellationToken.None));

                    stream.Seek(0, SeekOrigin.Begin);

                    var reader = new StreamReader(stream);
                    result = reader.ReadToEnd();
                }

            //Assert
            var pricelists = JsonConvert.DeserializeObject <ExportablePricelist[]>(result);

            Assert.NotNull(pricelists);
            Assert.NotEmpty(pricelists);

            var pricelist = pricelists.FirstOrDefault(x => x.Name.Equals("BoltsUSD", StringComparison.InvariantCultureIgnoreCase));

            Assert.NotNull(pricelist);
            Assert.Equal("0456b3ebc0a24c0ab7054ec9a5cea78e", pricelist.Id);
            Assert.Equal("USD", pricelist.Currency);

            return(Task.CompletedTask);
        }