Beispiel #1
0
        public RegularFilehookService(
            IOptions <FilehookOptions> fileStorageNameResolverOptions,
            IFileStorageNameResolver fileStorageNameResolver,
            IFileStyleResolver fileStyleResolver,
            IEnumerable <IFileStorage> storages,
            IEnumerable <IFileProccessor> fileProccessors,
            ILocationTemplateParser locationTemplateParser,
            ILocationParamFormatter locationParamFormatter,
            IParamNameResolver paramNameResolver,
            IEntityIdResolver entityIdResolver)
        {
            if (fileStorageNameResolverOptions == null)
            {
                throw new ArgumentNullException(nameof(fileStorageNameResolverOptions));
            }

            _options = fileStorageNameResolverOptions.Value;
            _fileStorageNameResolver = fileStorageNameResolver ?? throw new ArgumentNullException(nameof(fileStorageNameResolver));
            _fileStyleResolver       = fileStyleResolver ?? throw new ArgumentNullException(nameof(fileStyleResolver));

            _storages        = storages ?? throw new ArgumentNullException(nameof(storages));
            _fileProccessors = fileProccessors ?? throw new ArgumentNullException(nameof(fileProccessors));

            _locationTemplateParser = locationTemplateParser ?? throw new ArgumentNullException(nameof(locationTemplateParser));
            _locationParamFormatter = locationParamFormatter ?? throw new ArgumentNullException(nameof(locationParamFormatter));

            _paramNameResolver = paramNameResolver ?? throw new ArgumentNullException(nameof(paramNameResolver));
            _entityIdResolver  = entityIdResolver ?? throw new ArgumentNullException(nameof(entityIdResolver));
        }
        public AttributeFileStorageNameResolver(IOptions <FilehookOptions> options)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            _options = options.Value;
        }
Beispiel #3
0
        public void EntityWithoutStorage_ReturnsDefault()
        {
            var options = new FilehookOptions
            {
                DefaultStorageName = "default"
            };

            var resolver = new AttributeFileStorageNameResolver(Options.Create(options));

            var result = resolver.Resolve <EntityWithoutStorage>((x) => x.Name);

            Assert.Equal(options.DefaultStorageName, result);
        }
        public void Ok()
        {
            var storageName = "storageName";
            var style       = "some_style";
            var someUrl     = "someUrl";

            var data = new byte[] { 0xFF };

            var mockFileStorageNameResolver = new Mock <IFileStorageNameResolver>();
            var mockFileStyleResolver       = new Mock <IFileStyleResolver>();
            var mockFileStorage             = new Mock <IFileStorage>();
            var mockFileProccessor          = new Mock <IFileProccessor>();
            var mockLocationTemplateParser  = new Mock <ILocationTemplateParser>();
            var mockLocationParamFormatter  = new Mock <ILocationParamFormatter>();
            var mockParamNameResolver       = new Mock <IParamNameResolver>();
            var mockEntityIdResolver        = new Mock <IEntityIdResolver>();

            var options = new FilehookOptions();

            mockFileStorageNameResolver
            .Setup(x => x.Resolve(It.IsAny <Expression <Func <EntityWithoutStorage, string> > >()))
            .Returns(storageName);

            mockFileStyleResolver
            .Setup(x => x.Resolve(It.IsAny <Expression <Func <EntityWithoutStorage, string> > >()))
            .Returns(new[] { new FileStyle(style) });

            mockFileStorage
            .SetupGet(x => x.Name)
            .Returns(storageName);

            mockFileStorage
            .Setup(x => x.SaveAsync(It.IsAny <string>(), It.IsAny <MemoryStream>()))
            .Returns(Task.FromResult("path"));

            mockFileStorage
            .Setup(x => x.GetUrl(It.IsAny <string>()))
            .Returns(someUrl);

            mockFileProccessor
            .Setup(x => x.CanProccess(It.IsAny <string>(), It.IsAny <byte[]>()))
            .Returns(true);

            // TODO
            // var fileProccessorResult = new IEnumerable<FileProccessingResult> { { style, new MemoryStream(data, false) } };
            // mockFileProccessor
            //     .Setup(x => x.ProccessAsync(It.IsAny<byte[]>(), It.IsAny<IEnumerable<FileStyle>>()))
            //     .Returns(Task.FromResult(fileProccessorResult));

            mockLocationTemplateParser
            .Setup(x => x.Parse(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .Returns("parsedTemplate");

            mockLocationParamFormatter
            .Setup(x => x.Format(It.IsAny <string>()))
            .Returns("formattedValue");

            var regularFilehookService = new RegularFilehookService(
                Options.Create(options),
                mockFileStorageNameResolver.Object,
                mockFileStyleResolver.Object,
                new[] { mockFileStorage.Object },
                new[] { mockFileProccessor.Object },
                mockLocationTemplateParser.Object,
                mockLocationParamFormatter.Object,
                mockParamNameResolver.Object,
                mockEntityIdResolver.Object);

            var entity = new EntityWithoutStorage
            {
                Id = "1"
            };

            var result = regularFilehookService.SaveAsync(entity, e => e.Name, "name1.ext", data);

            // TODO verify
        }