示例#1
0
        public async Task <FileStreamResult> Export(ExportClassifierList request)
        {
            var result = await _mediator.Send(request);

            // http://blog.stephencleary.com/2016/11/streaming-zip-on-aspnet-core.html

            return(File(result.Stream, result.ContentType, result.FileName));
        }
示例#2
0
        public async Task ExportClassifierList_Should_ReturnStream()
        {
            // arrange
            var cancellationToken        = new CancellationToken();
            var unitOfWorkFactory        = new TransactionScopeUnitOfWorkFactory();
            var dbContextFactory         = new DefaultDbContextFactory();
            var classifierTypeRepository = new DbClassifierTypeRepository(dbContextFactory);
            var classifierTypeService    = new DbClassifierTypeService(dbContextFactory, classifierTypeRepository);

            var fieldProviderRegistry = new DefaultFieldProviderRegistry();

            fieldProviderRegistry.AddFieldType(typeof(TextField));
            fieldProviderRegistry.AddFieldType(typeof(TextAreaField));

            var dbFieldDataRepository = new DbFieldDataRepository(dbContextFactory, fieldProviderRegistry);

            var metadataServiceMock = new Mock <IClassifierTypeMetadataService>();

            metadataServiceMock
            .Setup(x => x.GetMetadata(It.IsAny <ClassifierType>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(() => new FieldMetadata[]
            {
                new TextField {
                    Key = "test1", Active = true, System = false
                },
                new TextField {
                    Key = "test2", Active = true, System = false
                },
                new TextField {
                    Key = "test3", Active = true, System = false
                }
            });

            var generator = new MasterDataDbGenerator(unitOfWorkFactory, dbContextFactory);

            var classifierRepository = new DbClassifierRepository <Classifier>(
                dbContextFactory, classifierTypeService, null, metadataServiceMock.Object, dbFieldDataRepository, null);

            var classifierRepositoryFactoryMock = new Mock <INamedServiceFactory <IClassifierRepository> >();

            classifierRepositoryFactoryMock
            .Setup(x => x.GetNamedOrDefaultService(generator.TypeCode))
            .Returns(() => classifierRepository);

            var handler = new ExportClassifierListHandler(classifierRepositoryFactoryMock.Object);

            using (var _ = unitOfWorkFactory.Create())
            {
                // arrange
                await generator.InsertType(HierarchyType.None, cancellationToken);

                for (var i = 0; i < 100; i++)
                {
                    await generator.InsertItem($"{i:D4}", null, cancellationToken);
                }

                // act
                var command = new ExportClassifierList
                {
                    TypeCode = generator.TypeCode
                };

                var result = await handler.Handle(command, cancellationToken);

                // assert
                Assert.IsNotNull(result);
                Assert.IsNotNull(result.Stream);
                Assert.IsNotNull(result.FileName);
                Assert.IsNotNull(result.ContentType);

                // temp
                using (var fs = new FileStream(result.FileName, FileMode.OpenOrCreate))
                {
                    await result.Stream.CopyToAsync(fs, cancellationToken);
                }
            }
        }