diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6697e17..38a22cb 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -7,18 +7,6 @@ on:
branches: [ "main" ]
jobs:
- test-net8:
- runs-on: ubuntu-latest
- container: mcr.microsoft.com/dotnet/sdk:8.0
-
- steps:
- - name: Checkout
- uses: actions/checkout@v3
- - name: Build
- run: ./build.sh net8.0
- - name: Test
- run: ./test.sh net8.0
-
test-net9:
runs-on: ubuntu-latest
container: mcr.microsoft.com/dotnet/sdk:9.0
@@ -27,7 +15,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Build
- run: ./build.sh net9.0
+ run: dotnet build
- name: Test
- run: ./test.sh net9.0
+ run: dotnet test
diff --git a/Directory.Build.props b/Directory.Build.props
index 5b2e9d9..6670e95 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -1,7 +1,7 @@
- net8.0;net9.0
+ net9.0
enable
enable
Cnblogs
diff --git a/build.sh b/build.sh
deleted file mode 100755
index 6908b50..0000000
--- a/build.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env bash
-set -e
-dotnet restore -p:TargetFramework="$1"
-dotnet build -c Release -p:TargetFramework="$1" --no-restore
diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/Cnblogs.Architecture.Ddd.Cqrs.Abstractions.csproj b/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/Cnblogs.Architecture.Ddd.Cqrs.Abstractions.csproj
index a4bf66c..14aeb37 100644
--- a/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/Cnblogs.Architecture.Ddd.Cqrs.Abstractions.csproj
+++ b/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/Cnblogs.Architecture.Ddd.Cqrs.Abstractions.csproj
@@ -17,14 +17,6 @@
-
-
-
-
-
-
-
-
diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/CommandResponse.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/CommandResponse.cs
index 614059b..2a32ee8 100644
--- a/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/CommandResponse.cs
+++ b/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/CommandResponse.cs
@@ -26,7 +26,7 @@ public record CommandResponse : IValidationResponse, ILockableResponse
public string ErrorMessage { get; init; } = string.Empty;
///
- public ValidationErrors ValidationErrors { get; init; } = new();
+ public ValidationErrors ValidationErrors { get; init; } = [];
///
public bool LockAcquired { get; set; }
diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/ValidationErrors.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/ValidationErrors.cs
index 4e56344..55bc037 100644
--- a/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/ValidationErrors.cs
+++ b/src/Cnblogs.Architecture.Ddd.Cqrs.Abstractions/ValidationErrors.cs
@@ -7,7 +7,7 @@ namespace Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
///
public class ValidationErrors : ICollection
{
- private readonly List _validationErrors = new();
+ private readonly List _validationErrors = [];
///
/// Add a new validation error.
diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore.csproj b/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore.csproj
index 588d7c0..86f4069 100644
--- a/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore.csproj
+++ b/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore.csproj
@@ -9,14 +9,7 @@
-
-
-
-
-
-
-
-
+
diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/CqrsRouteMapper.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/CqrsRouteMapper.cs
index 2ab46a4..382f5b2 100644
--- a/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/CqrsRouteMapper.cs
+++ b/src/Cnblogs.Architecture.Ddd.Cqrs.AspNetCore/CqrsRouteMapper.cs
@@ -15,35 +15,35 @@ namespace Cnblogs.Architecture.Ddd.Cqrs.AspNetCore;
///
public static class CqrsRouteMapper
{
- private static readonly List QueryTypes = new() { typeof(IQuery<>), typeof(IListQuery<>) };
+ private static readonly List QueryTypes = [typeof(IQuery<>), typeof(IListQuery<>)];
- private static readonly List CommandTypes = new() { typeof(ICommand<>), typeof(ICommand<,>) };
+ private static readonly List CommandTypes = [typeof(ICommand<>), typeof(ICommand<,>)];
- private static readonly string[] GetAndHeadMethods = { "GET", "HEAD" };
+ private static readonly string[] GetAndHeadMethods = ["GET", "HEAD"];
- private static readonly List PostCommandPrefixes = new()
- {
+ private static readonly List PostCommandPrefixes =
+ [
"Create",
"Add",
"New"
- };
+ ];
- private static readonly List PutCommandPrefixes = new()
- {
+ private static readonly List PutCommandPrefixes =
+ [
"Update",
"Modify",
"Replace",
"Alter"
- };
+ ];
- private static readonly List DeleteCommandPrefixes = new()
- {
+ private static readonly List DeleteCommandPrefixes =
+ [
"Delete",
"Remove",
"Clean",
"Clear",
"Purge"
- };
+ ];
///
/// Map a query API, using GET method. would been constructed from route and query string.
diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.Dapper.Clickhouse/ClickhouseContextCollection.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.Dapper.Clickhouse/ClickhouseContextCollection.cs
index d93603d..8e02352 100644
--- a/src/Cnblogs.Architecture.Ddd.Cqrs.Dapper.Clickhouse/ClickhouseContextCollection.cs
+++ b/src/Cnblogs.Architecture.Ddd.Cqrs.Dapper.Clickhouse/ClickhouseContextCollection.cs
@@ -5,7 +5,7 @@ namespace Cnblogs.Architecture.Ddd.Cqrs.Dapper.Clickhouse;
///
public class ClickhouseContextCollection
{
- internal List ContextTypes { get; } = new();
+ internal List ContextTypes { get; } = [];
internal void Add()
{
diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.MongoDb/MongoContextCollection.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.MongoDb/MongoContextCollection.cs
index 3b072b2..4d3cb11 100644
--- a/src/Cnblogs.Architecture.Ddd.Cqrs.MongoDb/MongoContextCollection.cs
+++ b/src/Cnblogs.Architecture.Ddd.Cqrs.MongoDb/MongoContextCollection.cs
@@ -7,7 +7,7 @@ namespace Cnblogs.Architecture.Ddd.Cqrs.MongoDb;
///
public class MongoContextCollection
{
- private readonly List _contexts = new();
+ private readonly List _contexts = [];
///
/// 添加一个 MongoContext。
diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.ServiceAgent/CqrsServiceAgent.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.ServiceAgent/CqrsServiceAgent.cs
index 19f4da5..3d73cc0 100644
--- a/src/Cnblogs.Architecture.Ddd.Cqrs.ServiceAgent/CqrsServiceAgent.cs
+++ b/src/Cnblogs.Architecture.Ddd.Cqrs.ServiceAgent/CqrsServiceAgent.cs
@@ -155,7 +155,6 @@ public async Task> PutCommandAsync await response.Content.ReadFromJsonAsync(),
- HttpStatusCode.NotFound => default,
_ => default
};
}
@@ -202,7 +201,7 @@ public async Task> BatchGetItemsAsync(
'&',
ids.Select(i => $"{WebUtility.UrlEncode(paramName)}={WebUtility.UrlEncode(i.ToString())}"));
url = $"{url}{(url.Contains('?') ? '&' : '?')}{query}";
- return await HttpClient.GetFromJsonAsync>(url) ?? new List();
+ return await HttpClient.GetFromJsonAsync>(url) ?? [];
}
///
diff --git a/src/Cnblogs.Architecture.Ddd.Cqrs.ServiceAgent/ServiceAgentBase.cs b/src/Cnblogs.Architecture.Ddd.Cqrs.ServiceAgent/ServiceAgentBase.cs
index 2d60860..67c2e27 100644
--- a/src/Cnblogs.Architecture.Ddd.Cqrs.ServiceAgent/ServiceAgentBase.cs
+++ b/src/Cnblogs.Architecture.Ddd.Cqrs.ServiceAgent/ServiceAgentBase.cs
@@ -293,7 +293,7 @@ public async Task> BatchGetItemsAsync(
'&',
ids.Select(i => $"{WebUtility.UrlEncode(paramName)}={WebUtility.UrlEncode(i.ToString())}"));
url = $"{url}{(url.Contains('?') ? '&' : '?')}{query}";
- return await HttpClient.GetFromJsonAsync>(url) ?? new List();
+ return await HttpClient.GetFromJsonAsync>(url) ?? [];
}
catch (HttpRequestException e)
{
@@ -306,7 +306,7 @@ public async Task> BatchGetItemsAsync(
ThrowApiException(HttpMethod.Get, url, e);
}
- return new List();
+ return [];
}
}
diff --git a/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/DateTimeOffsetCalculator.cs b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/DateTimeOffsetCalculator.cs
new file mode 100644
index 0000000..38b5ca7
--- /dev/null
+++ b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/DateTimeOffsetCalculator.cs
@@ -0,0 +1,72 @@
+namespace Cnblogs.Architecture.Ddd.Domain.Abstractions;
+
+///
+/// Handy calculator for DateTime
+///
+public static class DateTimeOffsetCalculator
+{
+ ///
+ /// Get a new with time set to 0:00:00
+ ///
+ /// Input .
+ ///
+ public static DateTimeOffset StartOfTheDay(this DateTimeOffset dateTime)
+ {
+ return new DateTimeOffset(dateTime.Date, dateTime.Offset);
+ }
+
+ ///
+ /// Get a new with time set to 23:59:59.999.
+ ///
+ ///
+ ///
+ public static DateTimeOffset EndOfTheDay(this DateTimeOffset dateTime)
+ {
+ return StartOfTheDay(dateTime).AddDays(1).AddMilliseconds(-1);
+ }
+
+ ///
+ /// Get a new that set the start of a week for the given date.
+ ///
+ ///
+ ///
+ public static DateTimeOffset StartOfTheWeek(this DateTimeOffset dateTime)
+ {
+ var monday = dateTime.DayOfWeek switch
+ {
+ DayOfWeek.Monday => dateTime,
+ DayOfWeek.Sunday => dateTime.AddDays(-6),
+ _ => dateTime.AddDays(-(int)(dateTime.DayOfWeek - 1))
+ };
+
+ return monday.StartOfTheDay();
+ }
+
+ ///
+ /// Get a new that set to the end of a week for the given date.
+ ///
+ ///
+ ///
+ public static DateTimeOffset EndOfTheWeek(this DateTimeOffset dateTime)
+ {
+ var sunday = dateTime.DayOfWeek switch
+ {
+ DayOfWeek.Sunday => dateTime,
+ DayOfWeek.Monday => dateTime.AddDays(6),
+ _ => dateTime.AddDays((int)(7 - dateTime.DayOfWeek))
+ };
+
+ return sunday.EndOfTheDay();
+ }
+
+ ///
+ /// Check whether two is in same date.
+ ///
+ /// First to check.
+ /// Second to check.
+ ///
+ public static bool IsInSameDate(this DateTimeOffset left, DateTimeOffset right)
+ {
+ return left.Year == right.Year && left.DayOfYear == right.DayOfYear;
+ }
+}
diff --git a/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/DefaultDateTimeProvider.cs b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/DefaultDateTimeProvider.cs
index 58fee8a..9053697 100644
--- a/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/DefaultDateTimeProvider.cs
+++ b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/DefaultDateTimeProvider.cs
@@ -11,6 +11,18 @@ public DateTimeOffset Now()
return DateTimeOffset.Now;
}
+ ///
+ public DateTimeOffset Yesterday()
+ {
+ return Today().AddDays(-1);
+ }
+
+ ///
+ public DateTimeOffset EndOfYesterday()
+ {
+ return Today().AddDays(-1).EndOfTheDay();
+ }
+
///
public DateTimeOffset Today()
{
@@ -18,9 +30,33 @@ public DateTimeOffset Today()
return new DateTimeOffset(now.Year, now.Month, now.Day, 0, 0, 0, now.Offset);
}
+ ///
+ public DateTimeOffset EndOfToday()
+ {
+ return Today().EndOfTheDay();
+ }
+
+ ///
+ public DateTimeOffset Tomorrow()
+ {
+ return Today().AddDays(1);
+ }
+
+ ///
+ public DateTimeOffset EndOfTomorrow()
+ {
+ return Today().AddDays(1).EndOfTheDay();
+ }
+
///
public long UnixSeconds()
{
return Now().ToUnixTimeSeconds();
}
+
+ ///
+ public long UnixMilliseconds()
+ {
+ return Now().ToUnixTimeMilliseconds();
+ }
}
diff --git a/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/Entity.cs b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/Entity.cs
index f00a01c..782c8b6 100644
--- a/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/Entity.cs
+++ b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/Entity.cs
@@ -49,7 +49,7 @@ public abstract class Entity : Entity, IEntity
/// 领域事件生成器。
public void AddDomainEvent(Func generator)
{
- _domainEventGenerator ??= new List>();
+ _domainEventGenerator ??= [];
_domainEventGenerator.Add(generator);
}
diff --git a/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/EntityBase.cs b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/EntityBase.cs
index ec36f79..490c868 100644
--- a/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/EntityBase.cs
+++ b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/EntityBase.cs
@@ -18,7 +18,7 @@ public abstract class EntityBase : IDomainEventSource
/// 领域事件。
public virtual void AddDomainEvent(IDomainEvent eventItem)
{
- _events ??= new List();
+ _events ??= [];
_events.Add(eventItem);
}
diff --git a/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/IDateTimeProvider.cs b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/IDateTimeProvider.cs
index 81f448a..41d4a70 100644
--- a/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/IDateTimeProvider.cs
+++ b/src/Cnblogs.Architecture.Ddd.Domain.Abstractions/IDateTimeProvider.cs
@@ -12,14 +12,50 @@ public interface IDateTimeProvider
DateTimeOffset Now();
///
- /// Get today's date.
+ /// Get of yesterday's date.
+ ///
+ ///
+ DateTimeOffset Yesterday();
+
+ ///
+ /// Get of yesterday's date with time set to 23:59:59.999.
+ ///
+ ///
+ DateTimeOffset EndOfYesterday();
+
+ ///
+ /// Get of today's date.
///
/// Today's date.
DateTimeOffset Today();
+ ///
+ /// Get of today's date with time set to 23:59:59.999.
+ ///
+ ///
+ DateTimeOffset EndOfToday();
+
+ ///
+ /// Get of tomorrow's date with time set to 0:00:00.000.
+ ///
+ ///
+ DateTimeOffset Tomorrow();
+
+ ///
+ /// Get of tomorrow's date with time set to 23:59:59.000.
+ ///
+ ///
+ DateTimeOffset EndOfTomorrow();
+
///
/// Get number of seconds that have elapsed since 1970-01-01T00:00:00Z.
///
/// The number of seconds that have elapsed since 1970-01-01T00:00:00Z.
long UnixSeconds();
+
+ ///
+ /// Get number of milliseconds that have elapsed since 1970-01-01T00:00:00Z.
+ ///
+ ///
+ long UnixMilliseconds();
}
diff --git a/src/Cnblogs.Architecture.Ddd.EventBus.Dapr/EndPointExtensions.cs b/src/Cnblogs.Architecture.Ddd.EventBus.Dapr/EndPointExtensions.cs
index fb3923f..6b1418b 100644
--- a/src/Cnblogs.Architecture.Ddd.EventBus.Dapr/EndPointExtensions.cs
+++ b/src/Cnblogs.Architecture.Ddd.EventBus.Dapr/EndPointExtensions.cs
@@ -182,12 +182,12 @@ private static MethodInfo GetSubscribeMethod()
{
return typeof(EndPointExtensions).GetMethod(
nameof(Subscribe),
- new[] { typeof(IEndpointRouteBuilder), typeof(string) })!;
+ [typeof(IEndpointRouteBuilder), typeof(string)])!;
}
private static void InvokeSubscribe(this MethodInfo method, Type eventType, IEndpointRouteBuilder builder, string appName)
{
- method.MakeGenericMethod(eventType).Invoke(null, new object[] { builder, appName });
+ method.MakeGenericMethod(eventType).Invoke(null, [builder, appName]);
}
private static string GetAppName(this Assembly assembly)
diff --git a/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/DispatchDomainEventExtensions.cs b/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/DispatchDomainEventExtensions.cs
index a42203a..131597a 100644
--- a/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/DispatchDomainEventExtensions.cs
+++ b/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/DispatchDomainEventExtensions.cs
@@ -24,7 +24,7 @@ public static async Task DispatchDomainEventsAsync(this IMediator mediator, IEnu
}
catch (Exception exception)
{
- exceptions ??= new List();
+ exceptions ??= [];
exceptions.Add(exception);
}
}
diff --git a/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/OrderBySegmentConfig.cs b/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/OrderBySegmentConfig.cs
index 254984c..1449fa7 100644
--- a/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/OrderBySegmentConfig.cs
+++ b/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/OrderBySegmentConfig.cs
@@ -62,7 +62,7 @@ public static bool TryParseOrderBySegments(
return false;
}
- segments = new List();
+ segments = [];
var segmentStrings = SplitSortStrings(input);
foreach (var s in segmentStrings)
{
diff --git a/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/QueryOrderer.cs b/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/QueryOrderer.cs
index 82cc628..27b769d 100644
--- a/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/QueryOrderer.cs
+++ b/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/QueryOrderer.cs
@@ -30,7 +30,7 @@ public static IQueryable OrderBy(this IQueryable quer
{
var (isDesc, exp) = segment;
var method = GetOrderByMethodName(isDesc);
- Type[] types = { queryable.ElementType, exp.Body.Type };
+ Type[] types = [queryable.ElementType, exp.Body.Type];
var rs = Expression.Call(typeof(Queryable), method, types, queryable.Expression, exp);
return queryable.Provider.CreateQuery(rs);
}
@@ -67,7 +67,7 @@ public static IQueryable OrderBy(
foreach (var (isDesc, exp) in segments)
{
var method = isFirst ? GetOrderByMethodName(isDesc) : GetThenByMethodName(isDesc);
- Type[] types = { queryable.ElementType, exp.Body.Type };
+ Type[] types = [queryable.ElementType, exp.Body.Type];
var rs = Expression.Call(typeof(Queryable), method, types, queryable.Expression, exp);
queryable = queryable.Provider.CreateQuery(rs);
isFirst = false;
diff --git a/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/QueryStringBuilder.cs b/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/QueryStringBuilder.cs
index 499724a..c5b2c80 100644
--- a/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/QueryStringBuilder.cs
+++ b/src/Cnblogs.Architecture.Ddd.Infrastructure.Abstractions/QueryStringBuilder.cs
@@ -7,7 +7,7 @@ namespace Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
///
public class QueryStringBuilder
{
- private readonly List> _params = new();
+ private readonly List> _params = [];
///
/// 创建一个 。
diff --git a/src/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.InMemory/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.InMemory.csproj b/src/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.InMemory/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.InMemory.csproj
index ae94074..67631a4 100644
--- a/src/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.InMemory/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.InMemory.csproj
+++ b/src/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.InMemory/Cnblogs.Architecture.Ddd.Infrastructure.CacheProviders.InMemory.csproj
@@ -9,15 +9,7 @@
-
-
-
-
-
-
-
-
diff --git a/src/Cnblogs.Architecture.Ddd.Infrastructure.Dapper/Cnblogs.Architecture.Ddd.Infrastructure.Dapper.csproj b/src/Cnblogs.Architecture.Ddd.Infrastructure.Dapper/Cnblogs.Architecture.Ddd.Infrastructure.Dapper.csproj
index e18a1aa..33baa71 100644
--- a/src/Cnblogs.Architecture.Ddd.Infrastructure.Dapper/Cnblogs.Architecture.Ddd.Infrastructure.Dapper.csproj
+++ b/src/Cnblogs.Architecture.Ddd.Infrastructure.Dapper/Cnblogs.Architecture.Ddd.Infrastructure.Dapper.csproj
@@ -10,13 +10,6 @@
-
-
-
-
-
-
-
diff --git a/test.sh b/test.sh
deleted file mode 100755
index 4c41aad..0000000
--- a/test.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env bash
-set -e
-dotnet test -c Release -f "$1" --no-build --no-restore
diff --git a/test/Cnblogs.Architecture.IntegrationTestProject/Application/Queries/ListStringsQueryHandler.cs b/test/Cnblogs.Architecture.IntegrationTestProject/Application/Queries/ListStringsQueryHandler.cs
index 3fd69fc..1d51ee7 100644
--- a/test/Cnblogs.Architecture.IntegrationTestProject/Application/Queries/ListStringsQueryHandler.cs
+++ b/test/Cnblogs.Architecture.IntegrationTestProject/Application/Queries/ListStringsQueryHandler.cs
@@ -8,6 +8,6 @@ public class ListStringsQueryHandler : IPageableQueryHandler
public Task> Handle(ListStringsQuery request, CancellationToken cancellationToken)
{
- return Task.FromResult(new PagedList(new[] { "hello" }));
+ return Task.FromResult(new PagedList(["hello"]));
}
}
\ No newline at end of file
diff --git a/test/Cnblogs.Architecture.IntegrationTestProject/Cnblogs.Architecture.IntegrationTestProject.csproj b/test/Cnblogs.Architecture.IntegrationTestProject/Cnblogs.Architecture.IntegrationTestProject.csproj
index 9c4c9b5..84c3626 100644
--- a/test/Cnblogs.Architecture.IntegrationTestProject/Cnblogs.Architecture.IntegrationTestProject.csproj
+++ b/test/Cnblogs.Architecture.IntegrationTestProject/Cnblogs.Architecture.IntegrationTestProject.csproj
@@ -5,7 +5,4 @@
-
-
-
diff --git a/test/Cnblogs.Architecture.IntegrationTests/Cnblogs.Architecture.IntegrationTests.csproj b/test/Cnblogs.Architecture.IntegrationTests/Cnblogs.Architecture.IntegrationTests.csproj
index cea954a..aae480f 100644
--- a/test/Cnblogs.Architecture.IntegrationTests/Cnblogs.Architecture.IntegrationTests.csproj
+++ b/test/Cnblogs.Architecture.IntegrationTests/Cnblogs.Architecture.IntegrationTests.csproj
@@ -10,8 +10,9 @@
all
-
+
+
diff --git a/test/Cnblogs.Architecture.IntegrationTests/CommandResponseHandlerTests.cs b/test/Cnblogs.Architecture.IntegrationTests/CommandResponseHandlerTests.cs
index 6a64974..5146fd2 100644
--- a/test/Cnblogs.Architecture.IntegrationTests/CommandResponseHandlerTests.cs
+++ b/test/Cnblogs.Architecture.IntegrationTests/CommandResponseHandlerTests.cs
@@ -1,3 +1,4 @@
+using System.Net;
using System.Net.Http.Headers;
using System.Net.Http.Json;
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
@@ -7,7 +8,6 @@
using Cnblogs.Architecture.IntegrationTestProject.Application.Errors;
using Cnblogs.Architecture.IntegrationTestProject.Application.Queries;
using Cnblogs.Architecture.IntegrationTestProject.Payloads;
-using FluentAssertions;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Testing;
@@ -36,7 +36,7 @@ public async Task MinimalApi_NoCqrsVersionHeader_RawResultAsync()
var content = await response.Content.ReadAsStringAsync();
// Assert
- content.Should().NotBeNullOrEmpty();
+ Assert.False(string.IsNullOrEmpty(content));
}
[Fact]
@@ -53,9 +53,9 @@ public async Task MinimalApi_CqrsV2_CommandResponseAsync()
var content = await response.Content.ReadFromJsonAsync>();
// Assert
- response.Headers.CqrsVersion().Should().BeGreaterThan(1);
- content.Should().NotBeNull();
- content.Response.Should().NotBeNullOrEmpty();
+ Assert.True(response.Headers.CqrsVersion() > 1);
+ Assert.NotNull(content);
+ Assert.False(string.IsNullOrEmpty(content.Response));
}
[Fact]
@@ -71,8 +71,8 @@ public async Task Mvc_NoCqrsVersionHeader_RawResultAsync()
var content = await response.Content.ReadAsStringAsync();
// Assert
- response.Should().BeSuccessful();
- content.Should().NotBeNullOrEmpty();
+ Assert.True(response.IsSuccessStatusCode);
+ Assert.False(string.IsNullOrEmpty(content));
}
[Fact]
@@ -89,9 +89,9 @@ public async Task Mvc_CurrentCqrsVersion_CommandResponseAsync()
var content = await response.Content.ReadFromJsonAsync>();
// Assert
- response.Should().BeSuccessful();
- response.Headers.CqrsVersion().Should().BeGreaterThan(1);
- content!.Response.Should().NotBeNullOrEmpty();
+ Assert.True(response.IsSuccessStatusCode);
+ Assert.True(response.Headers.CqrsVersion() > 1);
+ Assert.False(string.IsNullOrEmpty(content!.Response));
}
[Theory]
@@ -108,8 +108,8 @@ public async Task MinimalApi_HavingError_BadRequestAsync(bool needValidationErro
var content = await response.Content.ReadAsStringAsync();
// Assert
- response.Should().HaveClientError();
- content.Should().NotBeNullOrEmpty();
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ Assert.False(string.IsNullOrEmpty(content));
}
[Fact]
@@ -122,7 +122,7 @@ public async Task MinimalApi_Success_OkAsync()
var response = await builder.CreateClient().PutAsJsonAsync("/api/v1/strings/1", new UpdatePayload());
// Assert
- response.Should().BeSuccessful();
+ Assert.True(response.IsSuccessStatusCode);
}
[Theory]
@@ -140,8 +140,8 @@ public async Task MinimalApi_HavingError_ProblemDetailsAsync(bool needValidation
var content = await response.Content.ReadFromJsonAsync();
// Assert
- response.Should().HaveClientError();
- content.Should().NotBeNull();
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ Assert.NotNull(content);
}
[Theory]
@@ -160,11 +160,11 @@ public async Task MinimalApi_HavingError_CommandResponseAsync(bool needValidatio
var commandResponse = await response.Content.ReadFromJsonAsync>();
// Assert
- response.Should().HaveClientError();
- commandResponse.Should().NotBeNull();
- commandResponse.IsSuccess().Should().BeFalse();
- commandResponse.Should().BeEquivalentTo(new { IsValidationError = needValidationError });
- (commandResponse.ErrorCode != null).Should().Be(needExecutionError);
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ Assert.NotNull(commandResponse);
+ Assert.False(commandResponse.IsSuccess());
+ Assert.Equal(needValidationError, commandResponse.IsValidationError);
+ Assert.Equal(needExecutionError, commandResponse.ErrorCode != null);
}
[Theory]
@@ -185,8 +185,8 @@ public async Task MinimalApi_HavingError_CustomContentAsync(bool needValidationE
var content = await response.Content.ReadFromJsonAsync();
// Assert
- response.Should().HaveClientError();
- content.Should().BeEquivalentTo(error);
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ Assert.Equivalent(error, content);
}
[Fact]
@@ -199,7 +199,7 @@ public async Task Mvc_Success_OkAsync()
var response = await builder.CreateClient().PutAsJsonAsync("/api/v1/mvc/strings/1", new UpdatePayload());
// Assert
- response.Should().BeSuccessful();
+ Assert.True(response.IsSuccessStatusCode);
}
[Theory]
@@ -216,8 +216,8 @@ public async Task Mvc_HavingError_TextAsync(bool needValidationError, bool needE
var content = await response.Content.ReadAsStringAsync();
// Assert
- response.Should().HaveClientError();
- content.Should().NotBeNullOrEmpty();
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ Assert.False(string.IsNullOrEmpty(content));
}
[Theory]
@@ -235,8 +235,8 @@ public async Task Mvc_HavingError_ProblemDetailAsync(bool needValidationError, b
var content = await response.Content.ReadFromJsonAsync();
// Assert
- response.Should().HaveClientError();
- content.Should().NotBeNull();
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ Assert.NotNull(content);
}
[Theory]
@@ -255,11 +255,11 @@ public async Task Mvc_HavingError_CommandResponseAsync(bool needValidationError,
var content = await response.Content.ReadFromJsonAsync>();
// Assert
- response.Should().HaveClientError();
- content.Should().NotBeNull();
- content.IsSuccess().Should().BeFalse();
- content.Should().BeEquivalentTo(new { IsValidationError = needValidationError });
- (content.ErrorCode != null).Should().Be(needExecutionError);
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ Assert.NotNull(content);
+ Assert.False(content.IsSuccess());
+ Assert.Equal(needValidationError, content.IsValidationError);
+ Assert.Equal(needExecutionError, content.ErrorCode != null);
}
[Theory]
@@ -280,7 +280,7 @@ public async Task Mvc_HavingError_CustomContentAsync(bool needValidationError, b
var content = await response.Content.ReadFromJsonAsync();
// Assert
- response.Should().HaveClientError();
- content.Should().BeEquivalentTo(error);
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
+ Assert.Equivalent(error, content);
}
}
diff --git a/test/Cnblogs.Architecture.IntegrationTests/CqrsRouteMapperTests.cs b/test/Cnblogs.Architecture.IntegrationTests/CqrsRouteMapperTests.cs
index 1292aa5..53892a3 100644
--- a/test/Cnblogs.Architecture.IntegrationTests/CqrsRouteMapperTests.cs
+++ b/test/Cnblogs.Architecture.IntegrationTests/CqrsRouteMapperTests.cs
@@ -3,7 +3,6 @@
using Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
using Cnblogs.Architecture.IntegrationTestProject;
using Cnblogs.Architecture.IntegrationTestProject.Application.Commands;
-using FluentAssertions;
using Microsoft.AspNetCore.Mvc.Testing;
namespace Cnblogs.Architecture.IntegrationTests;
@@ -21,8 +20,8 @@ public async Task GetItem_SuccessAsync()
var content = await response.Content.ReadAsStringAsync();
// Assert
- response.Should().BeSuccessful();
- content.Should().NotBeNullOrEmpty();
+ Assert.True(response.IsSuccessStatusCode);
+ Assert.False(string.IsNullOrEmpty(content));
}
[Fact]
@@ -35,7 +34,7 @@ public async Task GetItem_NotFondAsync()
var response = await builder.CreateClient().GetAsync("/api/v1/strings/1?found=false");
// Assert
- response.StatusCode.Should().Be(HttpStatusCode.NotFound);
+ Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
}
[Fact]
@@ -49,9 +48,9 @@ public async Task ListItems_SuccessAsync()
var content = await response.Content.ReadFromJsonAsync>();
// Assert
- response.Should().BeSuccessful();
- content.Should().NotBeNull();
- content.Items.Should().NotBeNullOrEmpty();
+ Assert.True(response.IsSuccessStatusCode);
+ Assert.NotNull(content);
+ Assert.NotEmpty(content.Items);
}
[Fact]
@@ -64,7 +63,7 @@ public async Task CreateItems_SuccessAsync()
var response = await builder.CreateClient().PostAsJsonAsync("/api/v1/strings", new { NeedError = false });
// Assert
- response.Should().BeSuccessful();
+ Assert.True(response.IsSuccessStatusCode);
}
[Fact]
@@ -77,7 +76,7 @@ public async Task UpdateItem_SuccessAsync()
var response = await builder.CreateClient().PutAsJsonAsync("/api/v1/strings/1", new { NeedError = false });
// Assert
- response.Should().BeSuccessful();
+ Assert.True(response.IsSuccessStatusCode);
}
[Fact]
@@ -90,7 +89,7 @@ public async Task DeleteItem_SuccessAsync()
var response = await builder.CreateClient().DeleteAsync("/api/v1/strings/1?needError=false");
// Assert
- response.Should().BeSuccessful();
+ Assert.True(response.IsSuccessStatusCode);
}
[Fact]
@@ -109,7 +108,7 @@ await builder.CreateClient().GetAsync("/api/v1/apps/someApp/strings/1/value")
};
// Assert
- responses.Should().Match(x => x.All(y => y.IsSuccessStatusCode));
+ Assert.All(responses, r => Assert.True(r.IsSuccessStatusCode));
}
[Fact]
@@ -130,7 +129,7 @@ public async Task GetItem_MapHeadAndGet_SuccessAsync()
}
// Assert
- responses.Should().Match(x => x.All(y => y.IsSuccessStatusCode));
+ Assert.All(responses, r => Assert.True(r.IsSuccessStatusCode));
}
[Fact]
@@ -145,7 +144,7 @@ public async Task PostItem_GenericMap_SuccessAsync()
new CreateCommand(false, "data"));
// Assert
- response.Should().BeSuccessful();
+ Assert.True(response.IsSuccessStatusCode);
}
[Fact]
@@ -160,7 +159,7 @@ public async Task PutItem_GenericMap_SuccessAsync()
new UpdateCommand(1, false, false));
// Assert
- response.Should().BeSuccessful();
+ Assert.True(response.IsSuccessStatusCode);
}
[Fact]
@@ -174,6 +173,6 @@ public async Task DeleteCommand_GenericMap_SuccessAsync()
var response = await builder.CreateClient().DeleteAsync("/api/v1/generic-map/strings/1" + queryBuilder.Build());
// Assert
- response.Should().BeSuccessful();
+ Assert.True(response.IsSuccessStatusCode);
}
}
diff --git a/test/Cnblogs.Architecture.IntegrationTests/CustomJsonConverterTests.cs b/test/Cnblogs.Architecture.IntegrationTests/CustomJsonConverterTests.cs
index dd7aa41..f331a56 100644
--- a/test/Cnblogs.Architecture.IntegrationTests/CustomJsonConverterTests.cs
+++ b/test/Cnblogs.Architecture.IntegrationTests/CustomJsonConverterTests.cs
@@ -3,7 +3,6 @@
using System.Text.Json;
using Cnblogs.Architecture.IntegrationTestProject;
using Cnblogs.Architecture.IntegrationTestProject.Models;
-using FluentAssertions;
using Microsoft.AspNetCore.Mvc.Testing;
namespace Cnblogs.Architecture.IntegrationTests;
@@ -26,7 +25,7 @@ public async Task LongToJson_WriteLongToString_CanBeParsedByServerAsync(string b
var serverObject = await response.Content.ReadFromJsonAsync(WebDefaults);
// Assert
- serverObject.Should().BeEquivalentTo(new LongToStringModel() { Id = id });
+ Assert.Equivalent(new LongToStringModel() { Id = id }, serverObject);
}
[Theory]
@@ -43,7 +42,7 @@ public async Task LongToJson_WriteLongToString_IsStringInJsonAsync(string baseUr
var browserObject = await response.Content.ReadFromJsonAsync(WebDefaults);
// Assert
- browserObject.EnumerateObject().First().Value.GetString().Should().Be(id.ToString());
+ Assert.Equal(id.ToString(), browserObject.EnumerateObject().First().Value.GetString());
}
[Theory]
@@ -67,7 +66,7 @@ public async Task LongToJson_ReadLongFromString_SuccessAsync(string url)
var model = await response.Content.ReadFromJsonAsync(WebDefaults);
// Assert
- model.EnumerateObject().First().Value.GetString().Should().Be("202410267558024668");
+ Assert.Equal("202410267558024668", model.EnumerateObject().First().Value.GetString());
}
[Theory]
@@ -91,6 +90,6 @@ public async Task LongToJson_ReadLongFromNumber_SuccessAsync(string url)
var model = await response.Content.ReadFromJsonAsync(WebDefaults);
// Assert
- model.EnumerateObject().First().Value.GetString().Should().Be("202410267558024668");
+ Assert.Equal("202410267558024668", model.EnumerateObject().First().Value.GetString());
}
}
diff --git a/test/Cnblogs.Architecture.IntegrationTests/CustomModelBinderTests.cs b/test/Cnblogs.Architecture.IntegrationTests/CustomModelBinderTests.cs
index b8b79c5..b647e8d 100644
--- a/test/Cnblogs.Architecture.IntegrationTests/CustomModelBinderTests.cs
+++ b/test/Cnblogs.Architecture.IntegrationTests/CustomModelBinderTests.cs
@@ -2,7 +2,6 @@
using System.Net.Http.Json;
using Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
using Cnblogs.Architecture.IntegrationTestProject;
-using FluentAssertions;
using Microsoft.AspNetCore.Mvc.Testing;
@@ -21,7 +20,7 @@ public async Task PagingParamsModelBinder_Normal_NotNullAsync()
.GetFromJsonAsync("/api/v1/mvc/paging?pageIndex=1&pageSize=30");
// Assert
- response.Should().BeEquivalentTo(new PagingParams(1, 30));
+ Assert.Equivalent(new PagingParams(1, 30), response);
}
[Theory]
@@ -37,7 +36,7 @@ public async Task PagingParamsModelBinder_NoPageIndexOrPageSize_NullAsync(string
var response = await builder.CreateClient().GetAsync($"/api/v1/mvc/paging{query}");
// Assert
- response.StatusCode.Should().Be(HttpStatusCode.NoContent);
+ Assert.Equal(HttpStatusCode.NoContent, response.StatusCode);
}
[Theory]
@@ -52,7 +51,7 @@ public async Task PagingParamsModelBinder_PageIndexInvalid_FailAsync(string page
var response = await builder.CreateClient().GetAsync($"/api/v1/mvc/paging?pageIndex={pageIndex}&pageSize=10");
// Assert
- response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
}
[Theory]
@@ -67,6 +66,6 @@ public async Task PagingParamsModelBinder_PageSizeInvalid_FailAsync(string pageS
var response = await builder.CreateClient().GetAsync($"/api/v1/mvc/paging?pageIndex=1&pageSize={pageSize}");
// Assert
- response.StatusCode.Should().Be(HttpStatusCode.BadRequest);
+ Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
}
-}
\ No newline at end of file
+}
diff --git a/test/Cnblogs.Architecture.IntegrationTests/DaprTests.cs b/test/Cnblogs.Architecture.IntegrationTests/DaprTests.cs
index 8930ffd..6b84c7a 100644
--- a/test/Cnblogs.Architecture.IntegrationTests/DaprTests.cs
+++ b/test/Cnblogs.Architecture.IntegrationTests/DaprTests.cs
@@ -3,7 +3,6 @@
using Cnblogs.Architecture.Ddd.EventBus.Dapr;
using Cnblogs.Architecture.IntegrationTestProject.EventHandlers;
using Cnblogs.Architecture.TestIntegrationEvents;
-using FluentAssertions;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.TestHost;
using Microsoft.Extensions.DependencyInjection;
@@ -40,12 +39,12 @@ public async Task Dapr_SubscribeEndpoint_OkAsync(SubscribeType subscribeType)
// Act
var response = await httpClient.GetAsync("/dapr/subscribe");
+ var responseText = await response.Content.ReadAsStringAsync();
// Assert
- response.Should().BeSuccessful();
- var responseText = await response.Content.ReadAsStringAsync();
- responseText.Should().Contain(nameof(TestIntegrationEvent));
- responseText.Should().Contain(nameof(BlogPostCreatedIntegrationEvent));
+ Assert.True(response.IsSuccessStatusCode);
+ Assert.Contains(nameof(TestIntegrationEvent), responseText);
+ Assert.Contains(nameof(BlogPostCreatedIntegrationEvent), responseText);
}
[Fact]
@@ -65,7 +64,7 @@ public async Task Dapr_SubscribeWithoutAnyAssembly_OkAsync()
var response = await httpClient.GetAsync("/dapr/subscribe");
// Assert
- response.StatusCode.Should().Be(HttpStatusCode.OK);
+ Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
[Fact]
@@ -85,6 +84,6 @@ public async Task Dapr_MapSubscribeHandler_OkAsync()
var response = await httpClient.GetAsync("/dapr/subscribe");
// Assert
- response.StatusCode.Should().Be(HttpStatusCode.OK);
+ Assert.Equal(HttpStatusCode.OK, response.StatusCode);
}
}
diff --git a/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventHandlerTests.cs b/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventHandlerTests.cs
index f078764..2448b2e 100644
--- a/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventHandlerTests.cs
+++ b/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventHandlerTests.cs
@@ -3,27 +3,19 @@
using Cnblogs.Architecture.Ddd.EventBus.Dapr;
using Cnblogs.Architecture.IntegrationTestProject.EventHandlers;
using Cnblogs.Architecture.TestIntegrationEvents;
-using FluentAssertions;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.TestHost;
using Microsoft.Extensions.Logging;
using Serilog;
+using Serilog.Events;
using Serilog.Sinks.InMemory;
-using Serilog.Sinks.InMemory.Assertions;
using Xunit.Abstractions;
using static Cnblogs.Architecture.IntegrationTestProject.Constants;
namespace Cnblogs.Architecture.IntegrationTests;
-public class IntegrationEventHandlerTests
+public class IntegrationEventHandlerTests(ITestOutputHelper testOutputHelper)
{
- private readonly ITestOutputHelper _testOutputHelper;
-
- public IntegrationEventHandlerTests(ITestOutputHelper testOutputHelper)
- {
- _testOutputHelper = testOutputHelper;
- }
-
[Fact]
public async Task IntegrationEventHandler_TestIntegrationEvent_SuccessAsync()
{
@@ -44,12 +36,17 @@ public async Task IntegrationEventHandler_TestIntegrationEvent_SuccessAsync()
var subscriptions = await client.GetFromJsonAsync("/dapr/subscribe");
var sub = subscriptions!.First(x => x.Route.Contains(nameof(TestIntegrationEvent)));
var response = await client.PostAsJsonAsync(sub.Route, @event);
- _testOutputHelper.WriteLine("Subscription Route: " + sub.Route);
+ testOutputHelper.WriteLine("Subscription Route: " + sub.Route);
// Assert
- response.Should().BeSuccessful();
- InMemorySink.Instance
- .Should().HaveMessage(LogTemplates.HandledIntegratonEvent).Appearing().Once()
- .WithProperty("event").HavingADestructuredObject().WithProperty("Id").WithValue(@event.Id);
+ Assert.True(response.IsSuccessStatusCode);
+ var messages =
+ InMemorySink.Instance.LogEvents
+ .Where(x => x.MessageTemplate.Text == LogTemplates.HandledIntegratonEvent)
+ .ToList();
+ var msg = Assert.Single(messages)!;
+ var value = msg.Properties["event"] as StructureValue;
+ Assert.NotNull(value);
+ Assert.Contains(value.Properties, prop => prop.Name == "Id" && prop.Value.ToString() == @event.Id.ToString());
}
}
diff --git a/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventPublishTests.cs b/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventPublishTests.cs
index 8fbb04c..a5e8874 100644
--- a/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventPublishTests.cs
+++ b/test/Cnblogs.Architecture.IntegrationTests/IntegrationEventPublishTests.cs
@@ -4,7 +4,6 @@
using Cnblogs.Architecture.IntegrationTestProject;
using Cnblogs.Architecture.IntegrationTestProject.Payloads;
using Cnblogs.Architecture.TestIntegrationEvents;
-using FluentAssertions;
using Microsoft.AspNetCore.Mvc.Testing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
@@ -38,8 +37,8 @@ public async Task EventBus_PublishEvent_SuccessAsync()
await Task.Delay(1500);
// Assert
- response.Should().BeSuccessful();
- content.Should().NotBeNullOrEmpty();
+ Assert.True(response.IsSuccessStatusCode);
+ Assert.False(string.IsNullOrEmpty(content));
await eventBusMock.Received(1).PublishAsync(
Arg.Any(),
Arg.Is(t => t.Message == data));
@@ -76,8 +75,8 @@ public async Task EventBus_Downgrading_DowngradeAsync()
await Task.Delay(3000); // hit at 1000ms and 3000ms
// Assert
- response.Should().BeSuccessful();
- content.Should().NotBeNullOrEmpty();
+ Assert.True(response.IsSuccessStatusCode);
+ Assert.False(string.IsNullOrEmpty(content));
await eventBusMock.Received(2).PublishAsync(
Arg.Any(),
Arg.Is(t => t.Message == data));
@@ -115,7 +114,7 @@ await client.PostAsJsonAsync(
var response = await client.PostAsJsonAsync("/api/v1/strings", new CreatePayload(false, data));
// Assert
- response.Should().HaveStatusCode(HttpStatusCode.InternalServerError);
+ Assert.Equal(HttpStatusCode.InternalServerError, response.StatusCode);
}
[Fact]
diff --git a/test/Cnblogs.Architecture.TestShared/Cnblogs.Architecture.TestShared.csproj b/test/Cnblogs.Architecture.TestShared/Cnblogs.Architecture.TestShared.csproj
index f78e6e2..edcb1ea 100644
--- a/test/Cnblogs.Architecture.TestShared/Cnblogs.Architecture.TestShared.csproj
+++ b/test/Cnblogs.Architecture.TestShared/Cnblogs.Architecture.TestShared.csproj
@@ -1,16 +1,6 @@
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/test/Cnblogs.Architecture.TestShared/EntityGenerator.cs b/test/Cnblogs.Architecture.TestShared/EntityGenerator.cs
index 1c4af45..e1f213b 100644
--- a/test/Cnblogs.Architecture.TestShared/EntityGenerator.cs
+++ b/test/Cnblogs.Architecture.TestShared/EntityGenerator.cs
@@ -8,8 +8,8 @@ namespace Cnblogs.Architecture.TestShared;
/// Entity type to generate.
public partial class EntityGenerator
{
- private readonly List _template = new();
- private readonly List> _customCloneSetups = new();
+ private readonly List _template = [];
+ private readonly List> _customCloneSetups = [];
///
/// Create entity based on given template.
diff --git a/test/Cnblogs.Architecture.UnitTests/Cnblogs.Architecture.UnitTests.csproj b/test/Cnblogs.Architecture.UnitTests/Cnblogs.Architecture.UnitTests.csproj
index 13c1ac6..1f86a30 100644
--- a/test/Cnblogs.Architecture.UnitTests/Cnblogs.Architecture.UnitTests.csproj
+++ b/test/Cnblogs.Architecture.UnitTests/Cnblogs.Architecture.UnitTests.csproj
@@ -1,22 +1,24 @@
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/test/Cnblogs.Architecture.UnitTests/Cqrs/Behaviors/CacheBehaviorTests.cs b/test/Cnblogs.Architecture.UnitTests/Cqrs/Behaviors/CacheBehaviorTests.cs
index 82f6644..92670f4 100644
--- a/test/Cnblogs.Architecture.UnitTests/Cqrs/Behaviors/CacheBehaviorTests.cs
+++ b/test/Cnblogs.Architecture.UnitTests/Cqrs/Behaviors/CacheBehaviorTests.cs
@@ -3,8 +3,6 @@
using Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
using Cnblogs.Architecture.UnitTests.Cqrs.FakeObjects;
-using FluentAssertions;
-
using MediatR;
using Microsoft.Extensions.Logging.Abstractions;
@@ -37,7 +35,7 @@ public async Task CacheBehavior_DisableCache_NotCacheAsync()
CancellationToken.None);
// Assert
- result.Should().Be("noCache");
+ Assert.Equal("noCache", result);
}
[Fact]
@@ -59,7 +57,7 @@ public async Task CacheBehavior_EnableLocal_NoCache_UpdateAsync()
CancellationToken.None);
// Assert
- result.Should().Be("noCache");
+ Assert.Equal("noCache", result);
await local.Received(1).UpdateAsync(Arg.Any(), Arg.Any(), Arg.Any());
}
@@ -84,7 +82,7 @@ public async Task CacheBehavior_EnableLocal_HasCache_UseCacheAsync()
CancellationToken.None);
// Assert
- result.Should().Be("cacheValue");
+ Assert.Equal("cacheValue", result);
await local.Received(0).UpdateAsync(Arg.Any(), Arg.Any(), Arg.Any());
await remote.Received(0).GetAsync(Arg.Any());
}
@@ -109,7 +107,7 @@ public async Task CacheBehavior_EnableRemote_NoCache_UpdateAsync()
CancellationToken.None);
// Assert
- result.Should().Be("noCache");
+ Assert.Equal("noCache", result);
await local.Received(0).UpdateAsync(Arg.Any(), Arg.Any(), Arg.Any());
await remote.Received(1).UpdateAsync(Arg.Any(), Arg.Any(), Arg.Any());
}
@@ -134,7 +132,7 @@ public async Task CacheBehavior_EnableRemote_HasCache_UseCacheAsync()
CancellationToken.None);
// Assert
- result.Should().Be("cacheValue");
+ Assert.Equal("cacheValue", result);
await local.Received(0).GetAsync(Arg.Any());
}
@@ -160,7 +158,7 @@ public async Task CacheBehavior_ThrowOnGet_ThrowAsync()
CancellationToken.None);
// Assert
- await act.Should().ThrowAsync();
+ await Assert.ThrowsAsync(act);
}
[Fact]
@@ -185,7 +183,7 @@ public async Task CacheBehavior_ThrowOnGet_NoThrowAsync()
CancellationToken.None);
// Assert
- result.Should().Be("noCache");
+ Assert.Equal("noCache", result);
}
[Fact]
@@ -211,7 +209,7 @@ public async Task CacheBehavior_ThrowOnUpdate_ThrowAsync()
CancellationToken.None);
// Assert
- await act.Should().ThrowAsync();
+ await Assert.ThrowsAsync(act);
}
[Fact]
@@ -226,7 +224,7 @@ public async Task CacheBehavior_NotThrowOnUpdate_NotThrowAsync()
o => o.ThrowIfFailedOnUpdate = false);
// Act
- var act = async () => await behavior.Handle(
+ var res = await behavior.Handle(
new FakeQuery(null, "cacheKey")
{
LocalCacheBehavior = CacheBehavior.DisabledCache,
@@ -237,7 +235,7 @@ public async Task CacheBehavior_NotThrowOnUpdate_NotThrowAsync()
CancellationToken.None);
// Assert
- await act.Should().NotThrowAsync();
+ Assert.NotNull(res);
}
[Fact]
@@ -247,7 +245,7 @@ public void CacheBehavior_NoProvider_Throw()
var act = () => GetBehavior, string>([]);
// Assert
- act.Should().Throw();
+ Assert.Throws(act);
}
private static CacheableRequestBehavior GetBehavior(
diff --git a/test/Cnblogs.Architecture.UnitTests/Cqrs/Behaviors/ValidationBehaviorTests.cs b/test/Cnblogs.Architecture.UnitTests/Cqrs/Behaviors/ValidationBehaviorTests.cs
index 841117c..d0b3dd5 100644
--- a/test/Cnblogs.Architecture.UnitTests/Cqrs/Behaviors/ValidationBehaviorTests.cs
+++ b/test/Cnblogs.Architecture.UnitTests/Cqrs/Behaviors/ValidationBehaviorTests.cs
@@ -1,6 +1,5 @@
using Cnblogs.Architecture.Ddd.Cqrs.Abstractions;
using Cnblogs.Architecture.UnitTests.Cqrs.FakeObjects;
-using FluentAssertions;
using Microsoft.Extensions.Logging.Abstractions;
namespace Cnblogs.Architecture.UnitTests.Cqrs.Behaviors;
@@ -21,7 +20,7 @@ public async Task ValidationBehavior_ValidationFailed_ReturnObjectAsync()
// Assert
var errors = new ValidationErrors { error };
- result.Should().BeEquivalentTo(new { IsValidationError = true, ValidationErrors = errors });
+ Assert.Equivalent(new { IsValidationError = true, ValidationErrors = errors }, result);
}
[Fact]
@@ -36,6 +35,6 @@ public async Task ValidationBehavior_ValidationSuccess_ReturnNextAsync()
var result = await behavior.Handle(request, _ => Task.FromResult(new FakeResponse()), CancellationToken.None);
// Assert
- result.Should().BeEquivalentTo(new { IsValidationError = false, ValidationErrors = new ValidationErrors() });
+ Assert.Equivalent(new { IsValidationError = false, ValidationErrors = new ValidationErrors() }, result);
}
}
diff --git a/test/Cnblogs.Architecture.UnitTests/Cqrs/FakeObjects/FakeQuery.cs b/test/Cnblogs.Architecture.UnitTests/Cqrs/FakeObjects/FakeQuery.cs
index e9c3ddd..485babc 100644
--- a/test/Cnblogs.Architecture.UnitTests/Cqrs/FakeObjects/FakeQuery.cs
+++ b/test/Cnblogs.Architecture.UnitTests/Cqrs/FakeObjects/FakeQuery.cs
@@ -51,7 +51,7 @@ public FakeQuery(string? cacheGroupKey, string cacheKey)
///
public object?[] GetCacheKeyParameters()
{
- return new object?[] { _cacheKey };
+ return [_cacheKey];
}
///
diff --git a/test/Cnblogs.Architecture.UnitTests/Cqrs/FakeObjects/FakeResponse.cs b/test/Cnblogs.Architecture.UnitTests/Cqrs/FakeObjects/FakeResponse.cs
index 7f9e565..aca69bc 100644
--- a/test/Cnblogs.Architecture.UnitTests/Cqrs/FakeObjects/FakeResponse.cs
+++ b/test/Cnblogs.Architecture.UnitTests/Cqrs/FakeObjects/FakeResponse.cs
@@ -11,5 +11,5 @@ public class FakeResponse : IValidationResponse
public string ErrorMessage { get; init; } = string.Empty;
///
- public ValidationErrors ValidationErrors { get; init; } = new();
+ public ValidationErrors ValidationErrors { get; init; } = [];
}
\ No newline at end of file
diff --git a/test/Cnblogs.Architecture.UnitTests/Cqrs/Handlers/InvalidCacheRequestHandlerTests.cs b/test/Cnblogs.Architecture.UnitTests/Cqrs/Handlers/InvalidCacheRequestHandlerTests.cs
index 9461e6c..ff98998 100644
--- a/test/Cnblogs.Architecture.UnitTests/Cqrs/Handlers/InvalidCacheRequestHandlerTests.cs
+++ b/test/Cnblogs.Architecture.UnitTests/Cqrs/Handlers/InvalidCacheRequestHandlerTests.cs
@@ -2,9 +2,6 @@
using Cnblogs.Architecture.Ddd.Domain.Abstractions;
using Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
using Cnblogs.Architecture.UnitTests.Cqrs.FakeObjects;
-
-using FluentAssertions;
-
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using NSubstitute;
@@ -15,14 +12,14 @@ namespace Cnblogs.Architecture.UnitTests.Cqrs.Handlers;
public class InvalidCacheRequestHandlerTests
{
[Fact]
- public Task InvalidCache_ThrowOnRemove_ThrowAsync()
+ public async Task InvalidCache_ThrowOnRemove_ThrowAsync()
{
// Arrange
var provider = Substitute.For();
provider.RemoveAsync(Arg.Any())
.ThrowsAsync(new InvalidOperationException());
var handler = CreateInvalidCacheRequestHandler(
- new List() { provider },
+ [provider],
o => o.ThrowIfFailedOnRemove = true);
// Act
@@ -31,47 +28,45 @@ public Task InvalidCache_ThrowOnRemove_ThrowAsync()
CancellationToken.None);
// Assert
- return act.Should().ThrowAsync();
+ await Assert.ThrowsAsync(act);
}
[Fact]
- public Task InvalidCache_ThrowOnRemove_NotThrowAsync()
+ public async Task InvalidCache_ThrowOnRemove_NotThrowAsync()
{
// Arrange
var provider = Substitute.For();
provider.RemoveAsync(Arg.Any())
.ThrowsAsync(new InvalidOperationException());
var handler = CreateInvalidCacheRequestHandler(
- new List() { provider },
+ [provider],
o => o.ThrowIfFailedOnRemove = false);
// Act
- var act = async () => await handler.Handle(
+ await handler.Handle(
new InvalidCacheRequest(new FakeQuery()),
CancellationToken.None);
- // Assert
- return act.Should().NotThrowAsync();
+ // Assert-Not throws.
}
[Fact]
- public Task InvalidCache_ThrowOnRemove_OverrideByRequest_NotThrowAsync()
+ public async Task InvalidCache_ThrowOnRemove_OverrideByRequest_NotThrowAsync()
{
// Arrange
var provider = Substitute.For();
provider.RemoveAsync(Arg.Any())
.ThrowsAsync(new InvalidOperationException());
var handler = CreateInvalidCacheRequestHandler(
- new List() { provider },
+ [provider],
o => o.ThrowIfFailedOnRemove = true);
// Act
- var act = async () => await handler.Handle(
+ await handler.Handle(
new InvalidCacheRequest(new FakeQuery(), false, false),
CancellationToken.None);
- // Assert
- return act.Should().NotThrowAsync();
+ // Assert-Not throws
}
[Fact]
@@ -81,7 +76,7 @@ public async Task InvalidCache_RemoveCacheAsync()
var remote = Substitute.For();
var local = Substitute.For();
var handler = CreateInvalidCacheRequestHandler(
- new List() { remote, local },
+ [remote, local],
o => o.ThrowIfFailedOnRemove = false);
// Act
@@ -101,7 +96,7 @@ public async Task InvalidCache_RemoveGroupCacheAsync()
var remote = Substitute.For();
var local = Substitute.For();
var handler = CreateInvalidCacheRequestHandler(
- new List() { remote, local },
+ [remote, local],
o => o.ThrowIfFailedOnRemove = false);
// Act
@@ -120,10 +115,10 @@ await handler.Handle(
public void InvalidCache_NoProvider_Throw()
{
// Act
- var act = () => CreateInvalidCacheRequestHandler(new List());
+ var act = () => CreateInvalidCacheRequestHandler([]);
// Assert
- act.Should().Throw();
+ Assert.Throws(act);
}
private InvalidCacheRequestHandler CreateInvalidCacheRequestHandler(
diff --git a/test/Cnblogs.Architecture.UnitTests/EventBus/AssemblyAttributeTests.cs b/test/Cnblogs.Architecture.UnitTests/EventBus/AssemblyAttributeTests.cs
index 47325a3..9fe519e 100644
--- a/test/Cnblogs.Architecture.UnitTests/EventBus/AssemblyAttributeTests.cs
+++ b/test/Cnblogs.Architecture.UnitTests/EventBus/AssemblyAttributeTests.cs
@@ -1,7 +1,6 @@
using Cnblogs.Architecture.Ddd.EventBus.Abstractions;
using Cnblogs.Architecture.Ddd.EventBus.Dapr;
using Cnblogs.Architecture.TestIntegrationEvents;
-using FluentAssertions;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
@@ -18,10 +17,9 @@ public void SubscribeByAssemblyMeta_Success()
var app = builder.Build();
// Act
- var act = () => app.Subscribe();
+ app.Subscribe();
- // Assert
- act.Should().NotThrow();
+ // Assert-Not throws
}
[Fact]
@@ -35,6 +33,6 @@ public void SubscribeByAssemblyMeta_Throw()
var act = () => app.Subscribe();
// Assert
- act.Should().Throw();
+ Assert.Throws(act);
}
}
diff --git a/test/Cnblogs.Architecture.UnitTests/Infrastructure/EntityFramework/BaseRepositoryTests.cs b/test/Cnblogs.Architecture.UnitTests/Infrastructure/EntityFramework/BaseRepositoryTests.cs
index bd412e1..703dc68 100644
--- a/test/Cnblogs.Architecture.UnitTests/Infrastructure/EntityFramework/BaseRepositoryTests.cs
+++ b/test/Cnblogs.Architecture.UnitTests/Infrastructure/EntityFramework/BaseRepositoryTests.cs
@@ -1,7 +1,6 @@
using Cnblogs.Architecture.Ddd.Domain.Abstractions;
using Cnblogs.Architecture.TestShared;
using Cnblogs.Architecture.UnitTests.Infrastructure.FakeObjects;
-using FluentAssertions;
using MediatR;
using Microsoft.EntityFrameworkCore;
using NSubstitute;
@@ -33,8 +32,8 @@ public async Task GetEntityAsync_Include_GetEntityAsync()
var got = await repository.GetAsync(entity.Id, e => e.Posts);
// Assert
- got.Should().NotBeNull();
- got.Posts.Should().BeEquivalentTo(entity.Posts);
+ Assert.NotNull(got);
+ Assert.Equivalent(entity.Posts, got.Posts);
}
[Fact]
@@ -59,8 +58,8 @@ public async Task GetEntityAsync_StringBasedInclude_NotNullAsync()
var got = await repository.GetAsync(entity.Id, new List() { nameof(entity.Posts) });
// Assert
- got.Should().NotBeNull();
- got.Posts.Should().BeEquivalentTo(entity.Posts);
+ Assert.NotNull(got);
+ Assert.Equivalent(entity.Posts, got.Posts);
}
[Fact]
@@ -86,8 +85,8 @@ public async Task GetEntityAsync_ThenInclude_NotNullAsync()
var got = await repository.GetAsync(entity.Id, new List() { "Posts.Tags" });
// Assert
- got.Should().NotBeNull();
- got.Posts.Should().BeEquivalentTo(entity.Posts);
+ Assert.NotNull(got);
+ Assert.Equivalent(entity.Posts, got.Posts);
}
[Fact]
@@ -114,8 +113,8 @@ public async Task SaveEntitiesAsync_CallBeforeUpdateForRelatedEntity_UpdateDateU
await repository.UpdateAsync(entity);
// Assert
- entity.DateUpdated.Should().BeAfter(DateTimeOffset.Now.AddDays(-1));
- entity.Posts.Should().AllSatisfy(x => x.DateUpdated.Should().BeAfter(DateTimeOffset.Now.AddDays(-1)));
+ Assert.True(entity.DateUpdated > DateTimeOffset.Now.AddDays(-1));
+ Assert.All(entity.Posts, post => Assert.True(post.DateUpdated > DateTimeOffset.Now.AddDays(-1)));
}
[Fact]
@@ -244,8 +243,8 @@ public async Task SaveEntitiesAsync_DispatchEntityDomainEventsWithMultipleExcept
// Assert
var eventCount = 1 + entity.Posts.Count;
- (await act.Should().ThrowAsync()).And.InnerExceptions.Should()
- .HaveCount(eventCount);
+ var exception = await Assert.ThrowsAsync(act);
+ Assert.Equal(eventCount, exception.InnerExceptions.Count);
await mediator.Received(1).Publish(
Arg.Is(d => ((FakeDomainEvent)d).Id != 0 && ((FakeDomainEvent)d).FakeValue == 1),
Arg.Any());
diff --git a/test/Cnblogs.Architecture.UnitTests/Infrastructure/MongoDb/MongoBaseRepositoryTests.cs b/test/Cnblogs.Architecture.UnitTests/Infrastructure/MongoDb/MongoBaseRepositoryTests.cs
index 736370c..a0735bd 100644
--- a/test/Cnblogs.Architecture.UnitTests/Infrastructure/MongoDb/MongoBaseRepositoryTests.cs
+++ b/test/Cnblogs.Architecture.UnitTests/Infrastructure/MongoDb/MongoBaseRepositoryTests.cs
@@ -1,6 +1,5 @@
using Cnblogs.Architecture.Ddd.Domain.Abstractions;
using Cnblogs.Architecture.UnitTests.Infrastructure.FakeObjects;
-using FluentAssertions;
using MongoDB.Driver;
using NSubstitute;
@@ -20,7 +19,7 @@ public async Task AddAsync_WithDomainEvent_SaveThenPublishAsync()
var response = await repository.AddAsync(blog);
// Assert
- response.Should().NotBeNull();
+ Assert.NotNull(response);
await repository.MongoDbContext.MongoDatabaseMock.GetCollection(string.Empty)
.Received(1)
.InsertOneAsync(
@@ -42,7 +41,7 @@ public async Task AddRangeAsync_WithDomainEvent_SaveThenPublishAsync()
var response = await repository.AddRangeAsync(blogs);
// Assert
- response.Should().HaveSameCount(blogs);
+ Assert.Equal(blogs.Count, response.Count);
await repository.MongoDbContext.MongoDatabaseMock.GetCollection(string.Empty)
.Received(1)
.InsertManyAsync(
@@ -65,7 +64,7 @@ public async Task DeleteAsync_WithDomainEvent_SaveThenPublishAsync()
var response = await repository.DeleteAsync(blog);
// Assert
- response.Should().NotBeNull();
+ Assert.NotNull(response);
await repository.MongoDbContext.MongoDatabaseMock.GetCollection(string.Empty)
.Received(1)
.DeleteOneAsync(Arg.Any>(), Arg.Any());
@@ -84,7 +83,7 @@ public async Task UpdateAsync_WithDomainEvent_SaveThenPublishAsync()
var response = await repository.UpdateAsync(blog);
// Assert
- response.Should().NotBeNull();
+ Assert.NotNull(response);
await repository.MongoDbContext.MongoDatabaseMock.GetCollection(string.Empty)
.Received(1)
.ReplaceOneAsync(
@@ -107,7 +106,7 @@ public async Task UpdateRangeAsync_WithDomainEvent_SaveThenPublishAsync()
var response = await repository.UpdateRangeAsync(blogs);
// Assert
- response.Should().HaveSameCount(blogs);
+ Assert.Equal(blogs.Count, response.Count());
await repository.MongoDbContext.MongoDatabaseMock.GetCollection(string.Empty).Received(1)
.BulkWriteAsync(
Arg.Any>>(),
@@ -131,7 +130,7 @@ public async Task Uow_Insert_CommitAsync()
var response = await uow.SaveEntitiesAsync();
// Assert
- response.Should().BeTrue();
+ Assert.True(response);
await repository.MongoDbContext.ClientSessionHandleMock.Received(1)
.CommitTransactionAsync(Arg.Any());
await repository.MongoDbContext.MongoDatabaseMock.GetCollection(string.Empty).Received(1)
@@ -158,7 +157,7 @@ public async Task Uow_InsertThenRemove_NoChangeAsync()
var response = await uow.SaveEntitiesAsync();
// Assert
- response.Should().BeTrue();
+ Assert.True(response);
await repository.MongoDbContext.MongoDatabaseMock.GetCollection(string.Empty).Received(0)
.BulkWriteAsync(
Arg.Any(),
@@ -183,7 +182,7 @@ public async Task Uow_DeleteThenInsert_UpdateAsync()
var response = await uow.SaveEntitiesAsync();
// Assert
- response.Should().BeTrue();
+ Assert.True(response);
await repository.MongoDbContext.MongoDatabaseMock.GetCollection(string.Empty).Received(1)
.BulkWriteAsync(
Arg.Any(),
@@ -207,7 +206,7 @@ public void Uow_DeleteThenUpdate_Throw()
var act = () => uow.Update(blog);
// Assert
- act.Should().Throw();
+ Assert.Throws(act);
}
[Fact]
@@ -224,7 +223,7 @@ public void Uow_UpdateThenInsert_Throw()
var act = () => uow.Add(blog);
// Assert
- act.Should().ThrowExactly();
+ Assert.Throws(act);
}
[Fact]
@@ -241,7 +240,7 @@ public async Task Uow_DeleteWithDomainEvent_CommitAsync()
var response = await uow.SaveEntitiesAsync();
// Assert
- response.Should().BeTrue();
+ Assert.True(response);
await repository.MongoDbContext.ClientSessionHandleMock.Received(1)
.CommitTransactionAsync(Arg.Any());
await repository.MongoDbContext.MongoDatabaseMock.GetCollection(string.Empty).Received(1)
diff --git a/test/Cnblogs.Architecture.UnitTests/Infrastructure/PagedListTests.cs b/test/Cnblogs.Architecture.UnitTests/Infrastructure/PagedListTests.cs
index 781f0fd..bbc2626 100644
--- a/test/Cnblogs.Architecture.UnitTests/Infrastructure/PagedListTests.cs
+++ b/test/Cnblogs.Architecture.UnitTests/Infrastructure/PagedListTests.cs
@@ -1,9 +1,5 @@
using System.Text.Json;
-
using Cnblogs.Architecture.Ddd.Infrastructure.Abstractions;
-
-using FluentAssertions;
-
using Mapster;
namespace Cnblogs.Architecture.UnitTests.Infrastructure;
@@ -20,24 +16,24 @@ public void PagedListSelfMappable()
var mapped = pagedList.Adapt>();
// Assert
- pagedList.Items.Select(a => a.Value).Should().BeEquivalentTo(mapped.Items.Select(b => b.Value));
+ Assert.Equivalent(mapped.Items.Select(b => b.Value), pagedList.Items.Select(s => s.Value));
}
[Fact]
public void PagedListSerializableToAndFromJson()
{
// Arrange
- PagedList pagedList = new(new[] { "a", "b", "c" });
+ PagedList pagedList = new(["a", "b", "c"]);
// Act
var json = JsonSerializer.Serialize(pagedList);
var deserialized = JsonSerializer.Deserialize>(json);
// Assert
- pagedList.Should().BeEquivalentTo(deserialized);
+ Assert.Equivalent(deserialized, pagedList);
}
private record ADto(string Value);
private record BDto(string Value);
-}
\ No newline at end of file
+}