elfisa-pharmacy/tests/Elfisa.Tests/DtoTests.cs
Exest 3d89fac6e0
Some checks failed
Desktop tests / test (push) Has been cancelled
тесты: автотесты десктопа (xUnit) + CI
- проект tests/Elfisa.Tests: 56 юнит-тестов на Elfisa.Core + Elfisa.Avalonia:
  версии апдейтера, срок JWT-сессии, ApiClient (URL/ошибки/ретраи/парсинг),
  DTO-контракты, черновики, корзина, дрилдаун прайса (МГ/базовое имя)
- тест-швы: internal-методы через InternalsVisibleTo, ApiClient(HttpMessageHandler)
- CI .github/workflows/desktop-tests.yml — dotnet test при пуше (GitHub/Gitea Actions)
- README с описанием покрытия

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-17 11:51:50 +03:00

61 lines
2.1 KiB
C#

using System.Text.Json;
using Elfisa.Core;
using Xunit;
namespace Elfisa.Tests;
public class DtoTests
{
[Fact]
public void PriceItem_deserializes_snake_case()
{
var json = "{\"supplier_price_id\":\"sp1\",\"drug_name\":\"Аспирин\",\"barcode\":\"123\"," +
"\"price\":12.30,\"quantity\":5,\"es_code\":777,\"trade_name\":\"Асп\"}";
var it = JsonSerializer.Deserialize<PriceItem>(json)!;
Assert.Equal("sp1", it.SupplierPriceId);
Assert.Equal("Аспирин", it.DrugName);
Assert.Equal("123", it.Barcode);
Assert.Equal(12.30m, it.Price);
Assert.Equal(5m, it.Quantity);
Assert.Equal(777, it.EsCode);
Assert.Equal("Асп", it.TradeName);
}
[Fact]
public void BuyerOrderCreateRequest_serializes_snake_case()
{
var req = new BuyerOrderCreateRequest
{
LocationId = "loc1",
GlobalSign = "EX-1",
Items = { new BuyerOrderItemReq { SupplierPriceId = "sp1", Qty = 2, ItemName = "Товар", Barcode = "111" } }
};
var json = JsonSerializer.Serialize(req);
Assert.Contains("\"location_id\":\"loc1\"", json);
Assert.Contains("\"supplier_price_id\":\"sp1\"", json);
Assert.Contains("\"qty\":2", json);
}
[Fact]
public void LoginResponse_round_trip()
{
var r = JsonSerializer.Deserialize<LoginResponse>(
"{\"token\":\"t\",\"role\":\"manager\",\"redirect_url\":\"/x\"}")!;
Assert.Equal("t", r.Token);
Assert.Equal("manager", r.Role);
Assert.Equal("/x", r.RedirectUrl);
}
[Fact]
public void AppSettings_round_trip_preserves_fields()
{
var s = new AppSettings { ApiBaseUrl = "https://x", Theme = "Dark", FontFamily = "Arial", UiScale = 1.3, Username = "u" };
var back = JsonSerializer.Deserialize<AppSettings>(JsonSerializer.Serialize(s))!;
Assert.Equal("https://x", back.ApiBaseUrl);
Assert.Equal("Dark", back.Theme);
Assert.Equal("Arial", back.FontFamily);
Assert.Equal(1.3, back.UiScale);
Assert.Equal("u", back.Username);
}
}