Skip to content

Commit cb2a489

Browse files
committed
Add some tests
1 parent a58c786 commit cb2a489

File tree

23 files changed

+139
-46
lines changed

23 files changed

+139
-46
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
8+
<IsPackable>false</IsPackable>
9+
</PropertyGroup>
10+
11+
<ItemGroup>
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
13+
<PackageReference Include="NUnit" Version="3.13.3" />
14+
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
15+
<PackageReference Include="NUnit.Analyzers" Version="3.3.0" />
16+
<PackageReference Include="coverlet.collector" Version="3.1.2" />
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<ProjectReference Include="..\InEngine.Commands\InEngine.Commands.csproj" />
21+
<ProjectReference Include="..\InEngineTesting\InEngineTesting.csproj" />
22+
</ItemGroup>
23+
24+
</Project>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
global using NUnit.Framework;

src/InEngine.Commands/CommandsPlugin.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System.Collections.Generic;
2-
using CommandLine;
32
using InEngine.Core;
43
using InEngine.Core.Commands;
54
using InEngine.Core.Scheduling;
@@ -8,12 +7,6 @@ namespace InEngine.Commands;
87

98
public class CommandsPlugin : AbstractPlugin
109
{
11-
[VerbOption("fail", HelpText = "Always fail. Useful for end-to-end testing.")]
12-
public AlwaysFail AlwaysFail { get; set; }
13-
14-
[VerbOption("succeed", HelpText = "A null operation command. Literally does nothing.")]
15-
public AlwaysSucceed Null { get; set; }
16-
1710
public override void Schedule(ISchedule schedule)
1811
{
1912
schedule.Command(new Echo { VerbatimText = "Core Echo command." })
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using InEngine.Core.Commands;
2+
using InEngine.Core.Exceptions;
3+
using InEngineTesting;
4+
5+
namespace InEngine.Core.Test.Commands;
6+
7+
public class AlwaysFailTest : TestBase<AlwaysFail>
8+
{
9+
[Test]
10+
public void ShouldFailWithException()
11+
{
12+
Assert.ThrowsAsync<CommandFailedException>(async () => await Subject.RunAsync());
13+
}
14+
15+
[Test]
16+
public void ShouldFailWithExceptionWhenRunWithLifeCycleMethods()
17+
{
18+
Assert.ThrowsAsync<CommandFailedException>(async () => await Subject.RunWithLifeCycleAsync());
19+
}
20+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System.Threading.Tasks;
2+
using InEngine.Core.Commands;
3+
using InEngine.Core.IO;
4+
using InEngineTesting;
5+
using Moq;
6+
7+
namespace InEngine.Core.Test.Commands;
8+
9+
public class AlwaysSucceedTest : TestBase<AlwaysSucceed>
10+
{
11+
[Test]
12+
public async Task ShouldSucceed()
13+
{
14+
const string expected = "This command always succeeds.";
15+
var mockWrite = new Mock<IConsoleWrite>();
16+
Subject.Write = mockWrite.Object;
17+
18+
await Subject.RunAsync();
19+
20+
mockWrite.Verify(x => x.Info(expected), Times.Once());
21+
Assert.Pass();
22+
}
23+
}

src/InEngine.Core.Test/Commands/ChainTest.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
using System.Collections.Generic;
2-
using InEngine.Commands;
32
using InEngine.Core.Commands;
43
using InEngine.Core.Exceptions;
4+
using System.Threading.Tasks;
5+
using InEngineTesting;
56
using Moq;
6-
using NUnit.Framework;
77

88
namespace InEngine.Core.Test.Commands;
99

@@ -16,7 +16,7 @@ public void Setup()
1616
}
1717

1818
[Test]
19-
public void ShouldRunChainOfCommands()
19+
public async Task ShouldRunChainOfCommands()
2020
{
2121
var mockCommand1 = new Mock<AbstractCommand>();
2222
var mockCommand2 = new Mock<AbstractCommand>();
@@ -27,7 +27,7 @@ public void ShouldRunChainOfCommands()
2727
};
2828
Subject.Commands = commands;
2929

30-
Subject.RunAsync();
30+
await Subject.RunAsync();
3131

3232
mockCommand1.Verify(x => x.RunAsync(), Times.Once());
3333
mockCommand2.Verify(x => x.RunAsync(), Times.Once());
@@ -47,33 +47,33 @@ public void ShouldRunChainOfCommandsAndFail()
4747
};
4848
Subject.Commands = commands;
4949

50-
Assert.That(Subject.RunAsync, Throws.TypeOf<CommandChainFailedException>());
50+
Assert.ThrowsAsync<CommandChainFailedException>(async () => await Subject.RunAsync());
5151

5252
mockCommand1.Verify(x => x.RunAsync(), Times.Once());
5353
mockCommand2.Verify(x => x.RunAsync(), Times.Never());
5454
}
5555

5656
[Test]
57-
public void ShouldRunChainOfDifferentCommands()
57+
public async Task ShouldRunChainOfDifferentCommands()
5858
{
5959
Subject.Commands = new List<AbstractCommand>
6060
{
6161
new AlwaysSucceed(),
62-
new Echo() { VerbatimText = "Hello, world!" },
62+
new Echo { VerbatimText = "Hello, world!" },
6363
};
6464

65-
Subject.RunAsync();
65+
await Subject.RunAsync();
6666
}
6767

6868
[Test]
69-
public void ShouldRunChainOfDifferentCommandsAsAbstractCommand()
69+
public async Task ShouldRunChainOfDifferentCommandsAsAbstractCommand()
7070
{
7171
Subject.Commands = new AbstractCommand[]
7272
{
7373
new AlwaysSucceed(),
7474
new Echo(verbatimText: "Hello, world!"),
7575
};
7676

77-
Subject.RunAsync();
77+
await Subject.RunAsync();
7878
}
7979
}

src/InEngine.Core.Test/InEngine.Core.Test.csproj

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
<ItemGroup>
1616
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.0" />
1717
<PackageReference Include="Moq" Version="4.7.145" />
18-
<PackageReference Include="NUnit" Version="3.9.0" />
19-
<PackageReference Include="NUnit.Console" Version="3.7.0" />
20-
<PackageReference Include="NUnit.ConsoleRunner" Version="3.7.0" />
18+
<PackageReference Include="NUnit" Version="3.13.3" />
19+
<PackageReference Include="NUnit.Console" Version="3.15.2" />
20+
<PackageReference Include="NUnit.ConsoleRunner" Version="3.15.2" />
2121
<PackageReference Include="Quartz" Version="3.4.0" />
2222
</ItemGroup>
2323
<ItemGroup>
2424
<ProjectReference Include="..\InEngine.Core\InEngine.Core.csproj" />
2525
<ProjectReference Include="..\InEngine.Commands\InEngine.Commands.csproj" />
26+
<ProjectReference Include="..\InEngineTesting\InEngineTesting.csproj" />
2627
</ItemGroup>
2728
<ItemGroup>
2829
<None Update="appsettings.json">

src/InEngine.Core.Test/Queuing/Commands/ConsumeTest.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
using InEngine.Commands;
22
using InEngine.Core.Queuing.Commands;
33
using Moq;
4-
using NUnit.Framework;
54
using Quartz;
65

76
namespace InEngine.Core.Test.Queuing.Commands;
87

8+
using InEngineTesting;
9+
910
[TestFixture]
1011
public class ConsumeTest : TestBase<Consume>
1112
{

src/InEngine.Core.Test/Queuing/Commands/PublishTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
using InEngine.Commands;
44
using InEngine.Core.Commands;
55
using InEngine.Core.Exceptions;
6+
using InEngineTesting;
67
using InEngine.Core.Queuing.Commands;
7-
using NUnit.Framework;
88

99
namespace InEngine.Core.Test.Queuing.Commands;
1010

src/InEngine.Core.Test/Queuing/Enqueue.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using InEngine.Core.Commands;
55
using InEngine.Core.Queuing;
66
using Moq;
7-
using NUnit.Framework;
87
using Serialize.Linq.Extensions;
98

109
namespace InEngine.Core.Test.Queuing;

0 commit comments

Comments
 (0)