Skip to content

Commit a3bf7dd

Browse files
committed
🧪 Add tests
1 parent 054389b commit a3bf7dd

File tree

3 files changed

+101
-3
lines changed

3 files changed

+101
-3
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
using CubicBot.Telegram.Utils;
2+
using Telegram.Bot.Exceptions;
3+
using Xunit;
4+
5+
namespace CubicBot.Telegram.Tests;
6+
7+
public class ChatHelperTests
8+
{
9+
[Fact]
10+
public void Get_Retry_Wait_Time_Normal()
11+
{
12+
for (var i = 1; i <= 30; i++)
13+
{
14+
Test_Get_Retry_Wait_Time(i);
15+
}
16+
}
17+
18+
private static void Test_Get_Retry_Wait_Time(int seconds)
19+
{
20+
var ex = new ApiRequestException($"Too Many Requests: retry after {seconds}", 429);
21+
22+
var waitTimeSec = ChatHelper.GetRetryWaitTimeMs(ex) / 1000;
23+
24+
Assert.InRange(waitTimeSec, seconds + 1, seconds + 5);
25+
}
26+
27+
[Theory]
28+
[InlineData("💩")]
29+
[InlineData("Super super super super super super super long error message.")]
30+
public void Get_Retry_Wait_Time_Bad_Message(string message)
31+
{
32+
var ex = new ApiRequestException(message, 429);
33+
34+
var waitTimeMs = ChatHelper.GetRetryWaitTimeMs(ex);
35+
36+
Assert.Equal(15 * 1000, waitTimeMs);
37+
}
38+
39+
[Theory]
40+
[InlineData(null, "fakename", null, null)]
41+
[InlineData("lol", "fakename", null, null)]
42+
[InlineData("/", "fakename", null, null)]
43+
[InlineData("/ arg", "fakename", null, null)]
44+
[InlineData("/@", "fakename", null, null)]
45+
[InlineData("/@ arg", "fakename", null, null)]
46+
[InlineData("/@fakename", "fakename", null, null)]
47+
[InlineData("/@fakename arg", "fakename", null, null)]
48+
[InlineData("/@wrongname", "fakename", null, null)]
49+
[InlineData("/start", "fakename", "start", null)]
50+
[InlineData("/start ", "fakename", "start", null)]
51+
[InlineData("/start ", "fakename", "start", null)]
52+
[InlineData("/start arg", "fakename", "start", "arg")]
53+
[InlineData("/start arg ", "fakename", "start", "arg")]
54+
[InlineData("/start arg", "fakename", "start", "arg")]
55+
[InlineData("/start@ arg", "fakename", "start", "arg")]
56+
[InlineData("/start@wrongname arg", "fakename", null, null)]
57+
[InlineData("/start@fakename arg", "fakename", "start", "arg")]
58+
public void Parse_Message_Into_Command_And_Argument(string? message, string botUsername, string? expectedCommand, string? expectedArgument)
59+
{
60+
var (command, argument) = ChatHelper.ParseMessageIntoCommandAndArgument(message, botUsername);
61+
62+
Assert.Equal(expectedCommand, command);
63+
Assert.Equal(expectedArgument, argument);
64+
}
65+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<Nullable>enable</Nullable>
6+
7+
<IsPackable>false</IsPackable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
12+
<PackageReference Include="xunit" Version="2.4.1" />
13+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
14+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
15+
<PrivateAssets>all</PrivateAssets>
16+
</PackageReference>
17+
<PackageReference Include="coverlet.collector" Version="3.1.0">
18+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
19+
<PrivateAssets>all</PrivateAssets>
20+
</PackageReference>
21+
</ItemGroup>
22+
23+
<ItemGroup>
24+
<ProjectReference Include="..\CubicBot.Telegram\CubicBot.Telegram.csproj" />
25+
</ItemGroup>
26+
27+
</Project>

CubicBot.sln

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 16
4-
VisualStudioVersion = 16.0.31205.134
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.0.31903.59
55
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CubicBot.Telegram", "CubicBot.Telegram\CubicBot.Telegram.csproj", "{997C0DEC-6193-480D-9317-16053D8AD5FA}"
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CubicBot.Telegram", "CubicBot.Telegram\CubicBot.Telegram.csproj", "{997C0DEC-6193-480D-9317-16053D8AD5FA}"
7+
EndProject
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CubicBot.Telegram.Tests", "CubicBot.Telegram.Tests\CubicBot.Telegram.Tests.csproj", "{A4BCE05E-2876-459D-936C-B2A99F074AF7}"
79
EndProject
810
Global
911
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -15,6 +17,10 @@ Global
1517
{997C0DEC-6193-480D-9317-16053D8AD5FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
1618
{997C0DEC-6193-480D-9317-16053D8AD5FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
1719
{997C0DEC-6193-480D-9317-16053D8AD5FA}.Release|Any CPU.Build.0 = Release|Any CPU
20+
{A4BCE05E-2876-459D-936C-B2A99F074AF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21+
{A4BCE05E-2876-459D-936C-B2A99F074AF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
22+
{A4BCE05E-2876-459D-936C-B2A99F074AF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
23+
{A4BCE05E-2876-459D-936C-B2A99F074AF7}.Release|Any CPU.Build.0 = Release|Any CPU
1824
EndGlobalSection
1925
GlobalSection(SolutionProperties) = preSolution
2026
HideSolutionNode = FALSE

0 commit comments

Comments
 (0)