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); }
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); }
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); }
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); }