Improve tests

pull/678/head
Tyrrrz 3 years ago
parent 85d53d0e94
commit d735d2acd3

@ -22,6 +22,9 @@ jobs:
- name: Build & test - name: Build & test
run: dotnet test --configuration Release --logger GitHubActions run: dotnet test --configuration Release --logger GitHubActions
env:
DISCORD_TOKEN: ${{ secrets.DISCORD_TOKEN }}
DISCORD_TOKEN_BOT: true
- name: Upload coverage - name: Upload coverage
uses: codecov/codecov-action@v1.0.5 uses: codecov/codecov-action@v1.0.5

@ -36,16 +36,20 @@ namespace DiscordChatExporter.Cli.Tests
var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "json"); var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "json");
// Act // Act
await new ExportChannelsCommand var jsonData = await GlobalCache.WrapAsync("mention-specs-output-json", async () =>
{ {
TokenValue = Secrets.DiscordToken, await new ExportChannelsCommand
IsBotToken = Secrets.IsDiscordTokenBot, {
ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)}, TokenValue = Secrets.DiscordToken,
ExportFormat = ExportFormat.Json, IsBotToken = Secrets.IsDiscordTokenBot,
OutputPath = outputFilePath ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)},
}.ExecuteAsync(new FakeConsole()); ExportFormat = ExportFormat.Json,
OutputPath = outputFilePath
var jsonData = await File.ReadAllTextAsync(outputFilePath); }.ExecuteAsync(new FakeConsole());
return await File.ReadAllTextAsync(outputFilePath);
});
_testOutput.WriteLine(jsonData); _testOutput.WriteLine(jsonData);
var json = Json.Parse(jsonData); var json = Json.Parse(jsonData);
@ -81,16 +85,20 @@ namespace DiscordChatExporter.Cli.Tests
var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "html"); var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "html");
// Act // Act
await new ExportChannelsCommand var htmlData = await GlobalCache.WrapAsync("mention-specs-output-html", async () =>
{ {
TokenValue = Secrets.DiscordToken, await new ExportChannelsCommand
IsBotToken = Secrets.IsDiscordTokenBot, {
ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)}, TokenValue = Secrets.DiscordToken,
ExportFormat = ExportFormat.HtmlDark, IsBotToken = Secrets.IsDiscordTokenBot,
OutputPath = outputFilePath ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)},
}.ExecuteAsync(new FakeConsole()); ExportFormat = ExportFormat.HtmlDark,
OutputPath = outputFilePath
var htmlData = await File.ReadAllTextAsync(outputFilePath); }.ExecuteAsync(new FakeConsole());
return await File.ReadAllTextAsync(outputFilePath);
});
_testOutput.WriteLine(htmlData); _testOutput.WriteLine(htmlData);
var html = Html.Parse(htmlData); var html = Html.Parse(htmlData);
@ -110,16 +118,20 @@ namespace DiscordChatExporter.Cli.Tests
var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "json"); var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "json");
// Act // Act
await new ExportChannelsCommand var jsonData = await GlobalCache.WrapAsync("mention-specs-output-json", async () =>
{ {
TokenValue = Secrets.DiscordToken, await new ExportChannelsCommand
IsBotToken = Secrets.IsDiscordTokenBot, {
ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)}, TokenValue = Secrets.DiscordToken,
ExportFormat = ExportFormat.Json, IsBotToken = Secrets.IsDiscordTokenBot,
OutputPath = outputFilePath ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)},
}.ExecuteAsync(new FakeConsole()); ExportFormat = ExportFormat.Json,
OutputPath = outputFilePath
var jsonData = await File.ReadAllTextAsync(outputFilePath); }.ExecuteAsync(new FakeConsole());
return await File.ReadAllTextAsync(outputFilePath);
});
_testOutput.WriteLine(jsonData); _testOutput.WriteLine(jsonData);
var json = Json.Parse(jsonData); var json = Json.Parse(jsonData);
@ -148,16 +160,20 @@ namespace DiscordChatExporter.Cli.Tests
var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "html"); var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "html");
// Act // Act
await new ExportChannelsCommand var htmlData = await GlobalCache.WrapAsync("mention-specs-output-html", async () =>
{ {
TokenValue = Secrets.DiscordToken, await new ExportChannelsCommand
IsBotToken = Secrets.IsDiscordTokenBot, {
ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)}, TokenValue = Secrets.DiscordToken,
ExportFormat = ExportFormat.HtmlDark, IsBotToken = Secrets.IsDiscordTokenBot,
OutputPath = outputFilePath ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)},
}.ExecuteAsync(new FakeConsole()); ExportFormat = ExportFormat.HtmlDark,
OutputPath = outputFilePath
var htmlData = await File.ReadAllTextAsync(outputFilePath); }.ExecuteAsync(new FakeConsole());
return await File.ReadAllTextAsync(outputFilePath);
});
_testOutput.WriteLine(htmlData); _testOutput.WriteLine(htmlData);
var html = Html.Parse(htmlData); var html = Html.Parse(htmlData);
@ -176,16 +192,20 @@ namespace DiscordChatExporter.Cli.Tests
var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "json"); var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "json");
// Act // Act
await new ExportChannelsCommand var jsonData = await GlobalCache.WrapAsync("mention-specs-output-json", async () =>
{ {
TokenValue = Secrets.DiscordToken, await new ExportChannelsCommand
IsBotToken = Secrets.IsDiscordTokenBot, {
ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)}, TokenValue = Secrets.DiscordToken,
ExportFormat = ExportFormat.Json, IsBotToken = Secrets.IsDiscordTokenBot,
OutputPath = outputFilePath ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)},
}.ExecuteAsync(new FakeConsole()); ExportFormat = ExportFormat.Json,
OutputPath = outputFilePath
var jsonData = await File.ReadAllTextAsync(outputFilePath); }.ExecuteAsync(new FakeConsole());
return await File.ReadAllTextAsync(outputFilePath);
});
_testOutput.WriteLine(jsonData); _testOutput.WriteLine(jsonData);
var json = Json.Parse(jsonData); var json = Json.Parse(jsonData);
@ -214,16 +234,20 @@ namespace DiscordChatExporter.Cli.Tests
var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "html"); var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "html");
// Act // Act
await new ExportChannelsCommand var htmlData = await GlobalCache.WrapAsync("mention-specs-output-html", async () =>
{ {
TokenValue = Secrets.DiscordToken, await new ExportChannelsCommand
IsBotToken = Secrets.IsDiscordTokenBot, {
ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)}, TokenValue = Secrets.DiscordToken,
ExportFormat = ExportFormat.HtmlDark, IsBotToken = Secrets.IsDiscordTokenBot,
OutputPath = outputFilePath ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)},
}.ExecuteAsync(new FakeConsole()); ExportFormat = ExportFormat.HtmlDark,
OutputPath = outputFilePath
var htmlData = await File.ReadAllTextAsync(outputFilePath); }.ExecuteAsync(new FakeConsole());
return await File.ReadAllTextAsync(outputFilePath);
});
_testOutput.WriteLine(htmlData); _testOutput.WriteLine(htmlData);
var html = Html.Parse(htmlData); var html = Html.Parse(htmlData);
@ -242,16 +266,20 @@ namespace DiscordChatExporter.Cli.Tests
var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "json"); var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "json");
// Act // Act
await new ExportChannelsCommand var jsonData = await GlobalCache.WrapAsync("mention-specs-output-json", async () =>
{ {
TokenValue = Secrets.DiscordToken, await new ExportChannelsCommand
IsBotToken = Secrets.IsDiscordTokenBot, {
ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)}, TokenValue = Secrets.DiscordToken,
ExportFormat = ExportFormat.Json, IsBotToken = Secrets.IsDiscordTokenBot,
OutputPath = outputFilePath ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)},
}.ExecuteAsync(new FakeConsole()); ExportFormat = ExportFormat.Json,
OutputPath = outputFilePath
var jsonData = await File.ReadAllTextAsync(outputFilePath); }.ExecuteAsync(new FakeConsole());
return await File.ReadAllTextAsync(outputFilePath);
});
_testOutput.WriteLine(jsonData); _testOutput.WriteLine(jsonData);
var json = Json.Parse(jsonData); var json = Json.Parse(jsonData);
@ -280,16 +308,20 @@ namespace DiscordChatExporter.Cli.Tests
var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "html"); var outputFilePath = Path.ChangeExtension(_tempOutput.GetTempFilePath(), "html");
// Act // Act
await new ExportChannelsCommand var htmlData = await GlobalCache.WrapAsync("mention-specs-output-html", async () =>
{ {
TokenValue = Secrets.DiscordToken, await new ExportChannelsCommand
IsBotToken = Secrets.IsDiscordTokenBot, {
ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)}, TokenValue = Secrets.DiscordToken,
ExportFormat = ExportFormat.HtmlDark, IsBotToken = Secrets.IsDiscordTokenBot,
OutputPath = outputFilePath ChannelIds = new[] {Snowflake.Parse(ChannelIds.MentionTestCases)},
}.ExecuteAsync(new FakeConsole()); ExportFormat = ExportFormat.HtmlDark,
OutputPath = outputFilePath
var htmlData = await File.ReadAllTextAsync(outputFilePath); }.ExecuteAsync(new FakeConsole());
return await File.ReadAllTextAsync(outputFilePath);
});
_testOutput.WriteLine(htmlData); _testOutput.WriteLine(htmlData);
var html = Html.Parse(htmlData); var html = Html.Parse(htmlData);

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace DiscordChatExporter.Cli.Tests.Utils
{
internal static class GlobalCache
{
private static readonly Dictionary<string, object?> Dictionary = new();
public static async Task<T> WrapAsync<T>(string key, Func<Task<T>> getAsync)
{
if (Dictionary.TryGetValue(key, out var value) && value is T existing)
return existing;
var result = await getAsync();
Dictionary[key] = result;
return result;
}
}
}
Loading…
Cancel
Save