Skip to content

Commit bd35aea

Browse files
added test for export of textfile
1 parent d5890a4 commit bd35aea

3 files changed

Lines changed: 54 additions & 3 deletions

File tree

AudioCuesheetEditor.End2EndTests/Tests/Desktop/ExportTest.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,30 @@ public async Task DownloadProject_GeneratesProjectFile_WhenCuesheetIsValidAsync(
5656
Assert.AreEqual("{\"Tracks\":[{\"Position\":1,\"Artist\":\"Track Artist 1\",\"Title\":\"Track Title 1\",\"Begin\":\"00:00:00\",\"End\":\"00:05:48\",\"Flags\":[],\"IsLinkedToPreviousTrack\":true}],\"Artist\":\"Cuesheet Artist 1\",\"Title\":\"Cuesheet Title 1\",\"Audiofile\":{\"Name\":\"Kalimba.mp3\",\"Duration\":\"00:05:48\",\"AudioCodec\":{\"MimeType\":\"audio/mpeg\",\"FileExtension\":\".mp3\",\"Name\":\"AudioCodec MP3\"}},\"Sections\":[]}", content);
5757
}
5858

59-
//TODO: Test export textfile
59+
[TestMethod]
60+
public async Task DownloadText_GeneratesTextFile_WhenCuesheetIsValidAsync()
61+
{
62+
var bar = new AppBar(TestPage);
63+
var detailView = new DetailView(TestPage, DeviceName != null);
64+
await detailView.GotoAsync();
65+
await detailView.AddTrackAsync();
66+
await detailView.CuesheetArtistInput.FillAsync("Cuesheet Artist 1");
67+
await detailView.CuesheetTitleInput.FillAsync("Cuesheet Title 1");
68+
await detailView.AudiofileInput.SetInputFilesAsync("Kalimba.mp3");
69+
await detailView.EditTrackAsync("Track Artist 1", "Track Title 1");
70+
await bar.OpenExportDialogAsync("Textfile");
71+
await TestPage.GetByRole(AriaRole.Button, new() { Name = "Next" }).ClickAsync();
72+
var downloadTask = TestPage.WaitForDownloadAsync();
73+
await TestPage.GetByRole(AriaRole.Button, new() { Name = "Download-YouTube.txt" }).ClickAsync();
74+
var download = await downloadTask;
75+
using var stream = await download.CreateReadStreamAsync();
76+
using var reader = new StreamReader(stream);
77+
var content = await reader.ReadToEndAsync(TestContext.CancellationTokenSource.Token);
78+
content = content.Replace("\n", "\r\n");
79+
Assert.AreEqual(@"Cuesheet Artist 1 - Cuesheet Title 1
80+
Track Artist 1 - Track Title 1 00:00:00
81+
82+
", content);
83+
}
6084
}
6185
}

AudioCuesheetEditor.End2EndTests/Tests/Smartphone/ExportTestSmartphone.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,30 @@ public async Task DownloadProject_GeneratesProjectFile_WhenCuesheetIsValidAsync(
5656
Assert.AreEqual("{\"Tracks\":[{\"Position\":1,\"Artist\":\"Track Artist 1\",\"Title\":\"Track Title 1\",\"Begin\":\"00:00:00\",\"End\":\"00:05:48\",\"Flags\":[],\"IsLinkedToPreviousTrack\":true}],\"Artist\":\"Cuesheet Artist 1\",\"Title\":\"Cuesheet Title 1\",\"Audiofile\":{\"Name\":\"Kalimba.mp3\",\"Duration\":\"00:05:48\",\"AudioCodec\":{\"MimeType\":\"audio/mpeg\",\"FileExtension\":\".mp3\",\"Name\":\"AudioCodec MP3\"}},\"Sections\":[]}", content);
5757
}
5858

59-
//TODO: Test export textfile
59+
[TestMethod]
60+
public async Task DownloadText_GeneratesTextFile_WhenCuesheetIsValidAsync()
61+
{
62+
var bar = new AppBar(TestPage);
63+
var detailView = new DetailView(TestPage, DeviceName != null);
64+
await detailView.GotoAsync();
65+
await detailView.AddTrackAsync();
66+
await detailView.CuesheetArtistInput.FillAsync("Cuesheet Artist 1");
67+
await detailView.CuesheetTitleInput.FillAsync("Cuesheet Title 1");
68+
await detailView.AudiofileInput.SetInputFilesAsync("Kalimba.mp3");
69+
await detailView.EditTrackAsync("Track Artist 1", "Track Title 1");
70+
await bar.OpenExportDialogAsync("Textfile");
71+
await TestPage.GetByRole(AriaRole.Button, new() { Name = "Next" }).ClickAsync();
72+
var downloadTask = TestPage.WaitForDownloadAsync();
73+
await TestPage.GetByRole(AriaRole.Button, new() { Name = "Download-YouTube.txt" }).ClickAsync();
74+
var download = await downloadTask;
75+
using var stream = await download.CreateReadStreamAsync();
76+
using var reader = new StreamReader(stream);
77+
var content = await reader.ReadToEndAsync(TestContext.CancellationTokenSource.Token);
78+
content = content.Replace("\n", "\r\n");
79+
Assert.AreEqual(@"Cuesheet Artist 1 - Cuesheet Title 1
80+
Track Artist 1 - Track Title 1 00:00:00
81+
82+
", content);
83+
}
6084
}
6185
}

AudioCuesheetEditor/Shared/Dialogs/GenerateExportDialog.razor

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,10 @@ along with Foobar. If not, see
131131
<MudTd DataLabel="@_localizer["Name"]">@context.Name</MudTd>
132132
<MudTd DataLabel="@_localizer["Begin"]">@context.Begin</MudTd>
133133
<MudTd DataLabel="@_localizer["End"]">@context.End</MudTd>
134-
<MudTd DataLabel="@_localizer["Content"]"><MudIconButton Color="Color.Success" Variant="Variant.Outlined" Icon="@Icons.Material.Outlined.FileDownload" OnClick='() => _blazorDownloadFileService.DownloadFile(context.Name, context.Content, "text/plain")' /></MudTd>
134+
@{
135+
var ariaLabel = $"Download-{context.Name}";
136+
<MudTd DataLabel="@_localizer["Content"]"><MudIconButton Color="Color.Success" Variant="Variant.Outlined" Icon="@Icons.Material.Outlined.FileDownload" OnClick='() => _blazorDownloadFileService.DownloadFile(context.Name, context.Content, "text/plain")' aria-label="@ariaLabel" /></MudTd>
137+
}
135138
</RowTemplate>
136139
</MudTable>
137140
</MudStep>

0 commit comments

Comments
 (0)