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