public async Task ListPlaylists_WithTestDatabase_ReturnsCorrectEntries()
        {
            var exporter        = new MMDBPlaylistContainerExporter();
            var shouldBeEntries = new[]
            {
                new PlaylistMetaData {
                    ID = 16, Title = "Camille"
                },
                new PlaylistMetaData {
                    ID = 19, Title = "DemFeels"
                },
                new PlaylistMetaData {
                    ID = 21, Title = "Do not forget"
                },
                new PlaylistMetaData {
                    ID = 23, Title = "Kled"
                },
            };

            await exporter.Open(dbFilepath);

            var entries = await exporter.ListPlaylists();

            entries.Should().BeEquivalentTo(shouldBeEntries);
        }
        public async Task IsOpen_AfterOpenWithTestDatabase_ReturnsTrue()
        {
            var exporter = new MMDBPlaylistContainerExporter();

            await exporter.Open(dbFilepath);

            exporter.IsOpen.Should().BeTrue();
        }
        public void Open_WithTestDatabase_DoesNotThrowException()
        {
            var exporter = new MMDBPlaylistContainerExporter();

            Func <Task> act = async() => await exporter.Open(dbFilepath);

            act.Should().NotThrow();
        }
        public async Task IsOpen_AfterClose_ReturnsFalse()
        {
            var exporter = new MMDBPlaylistContainerExporter();

            await exporter.Open(dbFilepath);

            await exporter.Close();

            exporter.IsOpen.Should().BeFalse();
        }
        private async void Submit()
        {
            var metadata = SelectedSearchMatch.Metadata.AsFile;

            CurrentHint  = $"Opening \"{metadata.PathDisplay}\"...";
            CurrentState = ProgressState.Progressing;

            try
            {
                var downloadResponse = await client.Files.DownloadAsync(metadata.PathLower);

                var stream = await downloadResponse.GetContentAsStreamAsync();

                var tmpPath = IOPath.GetTempFileName();
                using (var fileStream = File.OpenWrite(tmpPath))
                {
                    await stream.CopyToAsync(fileStream);

                    await fileStream.FlushAsync();
                }

                try
                {
                    var database = new MMDBPlaylistContainerExporter();
                    await database.Open(tmpPath);

                    await database.Close();

                    DatabasePath = metadata.PathLower;

                    Dispatcher.Invoke(() =>
                    {
                        DialogResult = true;
                        Close();
                    });
                }
                catch
                {
                    Search();
                }
            }
            catch (Exception e)
            {
                SetFailed(e);
            }
        }
        public void IsOpen_BeforeOpen_ReturnsFalse()
        {
            var exporter = new MMDBPlaylistContainerExporter();

            exporter.IsOpen.Should().BeFalse();
        }