test: add app-level smoke baselines and mobile CI test jobs

Co-authored-by: Velik <hongochai10@users.noreply.github.com>
This commit is contained in:
Cursor Agent
2026-02-23 13:15:02 +00:00
parent 969aa81ea2
commit d808f1d4e1
12 changed files with 432 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
using FluentAssertions;
using WebClientBase.Shared;
using Xunit;
namespace WebClientBase.SmokeTests;
/// <summary>
/// EN: Smoke tests for shared API response contracts.
/// VI: Smoke tests cho contract API response dùng chung.
/// </summary>
public class ApiResponseTests
{
[Fact]
public void Ok_ShouldReturnSuccessWithPayload()
{
// Act
var response = ApiResponse<string>.Ok("healthy");
// Assert
response.Success.Should().BeTrue();
response.Data.Should().Be("healthy");
response.Error.Should().BeNull();
}
[Fact]
public void Fail_ShouldReturnErrorWithoutPayload()
{
// Act
var response = ApiResponse<string>.Fail("bad-request");
// Assert
response.Success.Should().BeFalse();
response.Data.Should().BeNull();
response.Error.Should().Be("bad-request");
}
}

View File

@@ -0,0 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<AssemblyName>WebClientBase.SmokeTests</AssemblyName>
<RootNamespace>WebClientBase.SmokeTests</RootNamespace>
<TargetFramework>net10.0</TargetFramework>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<!-- EN: Test framework dependencies / VI: Phụ thuộc framework test -->
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageReference Include="xunit" Version="2.9.2" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="FluentAssertions" Version="6.12.2" />
<PackageReference Include="coverlet.collector" Version="6.0.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\WebClientBase.Shared\WebClientBase.Shared.csproj" />
</ItemGroup>
</Project>