public async Task GetAssetDescriptor_NotFoundThrows()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new AssetDescriptorsCache(
                context.OptionsService,
                context.Logger,
                context.DataService);

            var key = $"d{context.Descriptors.Count}";

            // Act + Assert
            await sut.Init();

            Assert.Throws <AssetDescriptorNotFoundException>(() => sut.GetAssetDescriptor(key));
        }
        public async Task Init()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new AssetDescriptorsCache(
                context.OptionsService,
                context.Logger,
                context.DataService);

            // Act
            await sut.Init();

            // Assert
            Mock.Get(context.DataService).Verify(
                m => m.LoadDescriptorsAsync(
                    context.Options.AssetsDir, default),
                Times.Once);
        }
        public async Task GetAssetDescriptor_Found()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new AssetDescriptorsCache(
                context.OptionsService,
                context.Logger,
                context.DataService);

            var descriptor = context.Descriptors["d2"];

            // Act
            await sut.Init();

            var result = sut.GetAssetDescriptor(descriptor.Key);

            // Assert
            Assert.Same(descriptor, result);
        }