예제 #1
0
        public async Task Should_resolve_folder_path_from_root()
        {
            var folderId1 = Guid.NewGuid();
            var folder1   = CreateFolder(folderId1);

            A.CallTo(() => assetFolderRepository.FindAssetFolderAsync(folderId1))
            .Returns(folder1);

            var result = await sut.FindAssetFolderAsync(folderId1);

            Assert.Equal(result, new[] { folder1 });
        }
예제 #2
0
        public async Task Should_find_asset_folder_with_path()
        {
            var folderId1 = DomainId.NewGuid();
            var folder1   = CreateFolder(folderId1);

            A.CallTo(() => assetFolderRepository.FindAssetFolderAsync(appId.Id, folderId1, A <CancellationToken> ._))
            .Returns(folder1);

            var result = await sut.FindAssetFolderAsync(appId.Id, folderId1);

            Assert.Equal(result, new[] { folder1 });
        }
예제 #3
0
        public async Task <IReadOnlyList <IAssetFolderEntity> > FindAssetFolderAsync(DomainId appId, DomainId id,
                                                                                     CancellationToken ct = default)
        {
            using (Profiler.TraceMethod <AssetQueryService>())
            {
                var result = new List <IAssetFolderEntity>();

                while (id != DomainId.Empty)
                {
                    var folder = await assetFolderRepository.FindAssetFolderAsync(appId, id, ct);

                    if (folder == null || result.Any(x => x.Id == folder.Id))
                    {
                        result.Clear();
                        break;
                    }

                    result.Insert(0, folder);

                    id = folder.ParentId;
                }

                return(result);
            }
        }
예제 #4
0
 private async Task <IAssetFolderEntity?> FindFolderCoreAsync(DomainId appId, DomainId id, CancellationToken ct)
 {
     using (var timeout = new CancellationTokenSource(options.TimeoutFind))
     {
         using (var combined = CancellationTokenSource.CreateLinkedTokenSource(timeout.Token, ct))
         {
             return(await assetFolderRepository.FindAssetFolderAsync(appId, id, combined.Token));
         }
     }
 }
예제 #5
0
        public async Task <IReadOnlyList <IAssetFolderEntity> > FindAssetFolderAsync(Guid id)
        {
            var result = new List <IAssetFolderEntity>();

            while (id != default)
            {
                var folder = await assetFolderRepository.FindAssetFolderAsync(id);

                if (folder == null || result.Any(x => x.Id == folder.Id))
                {
                    result.Clear();
                    break;
                }

                result.Insert(0, folder);

                id = folder.ParentId;
            }

            return(result);
        }