Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# 6.2.1

## Template Changes
- Template test projects now use TUnit instead of xUnit.

# 6.2.0
- Add COA0014 analyzer to avoid incorrect usage of `NoAutoInclude`.
- Added `DefaultOrderByAttribute.Suppress` property to prevent properties from being used as fallback ordering.
Expand Down
1 change: 1 addition & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -72,5 +72,6 @@
<PackageVersion Include="System.Text.Json" Version="10.0.2" />
<PackageVersion Include="System.Runtime.Caching" Version="8.0.1" />
<PackageVersion Include="OpenTelemetry" Version="1.12.0" />
<PackageVersion Include="TUnit" Version="1.13.56" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="coverlet.collector" Version="6.0.4">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0" />
<PackageReference Include="xunit" Version="2.9.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="TUnit" Version="1.13.56" />
<PackageReference Include="Moq.AutoMock" Version="3.5.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ namespace Coalesce.Starter.Vue.Data.Test;

public class UnitTest1 : TestBase
{
[Fact]
public void Test1()
[Test]
public async Task Test1()
{
#if ExampleModel
// Arrange
Expand All @@ -17,11 +17,11 @@ public void Test1()
var widget2 = Db.Widgets.Single();

// Assert
Assert.Equal(WidgetCategory.Sprecklesprockets, widget2.Category);
await Assert.That(widget2.Category).IsEqualTo(WidgetCategory.Sprecklesprockets);

// After calling RefreshServices, we have a different DbContext instance
// and so we'll get a different entity instance.
Assert.NotEqual(widget1, widget2);
await Assert.That(widget1).IsNotEqualTo(widget2);
#endif
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,51 @@ public static class AssertionExtensions
/// <summary>
/// Asserts that the result was a failure.
/// </summary>
public static void AssertError(this ApiResult result)
public static async Task AssertError(this ApiResult result)
{
Assert.False(result.WasSuccessful);
await Assert.That(result.WasSuccessful).IsFalse();
}

/// <summary>
/// Asserts that the result was a failure.
/// </summary>
/// <param name="message">Expected error message.</param>
public static void AssertError(this ApiResult result, string message)
public static async Task AssertError(this ApiResult result, string message)
{
result.AssertError();
Assert.Equal(message, result.Message);
await result.AssertError();
await Assert.That(result.Message).IsEqualTo(message);
}

/// <summary>
/// Asserts that the result was successful.
/// </summary>
public static void AssertSuccess(this ApiResult result, string? message = null)
public static async Task AssertSuccess(this ApiResult result, string? message = null)
{
Assert.True(result.WasSuccessful, result.Message);
Assert.Equal(message, result.Message);
if (!string.IsNullOrEmpty(result.Message))
{
await Assert.That(result.WasSuccessful).IsTrue().Because(result.Message);
}
else
{
await Assert.That(result.WasSuccessful).IsTrue();
}
await Assert.That(result.Message).IsEqualTo(message);
}

/// <summary>
/// Asserts that the result was successful.
/// </summary>
public static T AssertSuccess<T>(this ItemResult<T> result)
public static async Task<T> AssertSuccess<T>(this ItemResult<T> result)
{
Assert.True(result.WasSuccessful, result.Message);
Assert.Null(result.Message);
if (!string.IsNullOrEmpty(result.Message))
{
await Assert.That(result.WasSuccessful).IsTrue().Because(result.Message);
}
else
{
await Assert.That(result.WasSuccessful).IsTrue();
}
await Assert.That(result.Message).IsNull();
return result.Object ?? throw new ArgumentException("Successful result unexpectedly returned null object");
}

Expand All @@ -47,7 +61,7 @@ public static T AssertSuccess<T>(this ItemResult<T> result)
public static async Task<T> AssertSuccess<T>(this Task<ItemResult<T>> resultTask)
{
var result = await resultTask;
return result.AssertSuccess();
return await result.AssertSuccess();
}

/// <summary>
Expand All @@ -56,16 +70,23 @@ public static async Task<T> AssertSuccess<T>(this Task<ItemResult<T>> resultTask
public static async Task AssertSuccess(this Task<ItemResult> resultTask)
{
var result = await resultTask;
Assert.True(result.WasSuccessful, result.Message);
if (!string.IsNullOrEmpty(result.Message))
{
await Assert.That(result.WasSuccessful).IsTrue().Because(result.Message);
}
else
{
await Assert.That(result.WasSuccessful).IsTrue();
}
}

/// <summary>
/// Asserts that the result was successful.
/// </summary>
/// <param name="expectedValue">Expected value on the result.</param>
public static void AssertSuccess<T>(this ItemResult<T> result, T expectedValue)
public static async Task AssertSuccess<T>(this ItemResult<T> result, T expectedValue)
{
result.AssertSuccess();
Assert.Equal(expectedValue, result.Object);
await result.AssertSuccess();
await Assert.That(result.Object).IsEqualTo(expectedValue);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@

global using Xunit;
global using TUnit.Core;
global using TUnit.Assertions;
global using TUnit.Assertions.Extensions;
global using Moq;
global using IntelliTect.Coalesce;
global using IntelliTect.Coalesce.Api;
Expand Down
5 changes: 5 additions & 0 deletions templates/Coalesce.Vue.Template/content/global.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"test": {
"runner": "Microsoft.Testing.Platform"
}
}