|
Some checks failed
Desktop tests / test (push) Has been cancelled
- проект 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> |
||
|---|---|---|
| .. | ||
| ApiClientTests.cs | ||
| CartServiceTests.cs | ||
| DraftTests.cs | ||
| DtoTests.cs | ||
| Elfisa.Tests.csproj | ||
| PriceLogicTests.cs | ||
| README.md | ||
| SessionTests.cs | ||
| TestHelpers.cs | ||
| UpdateServiceTests.cs | ||
Тесты десктопа (Elfisa.Tests)
Автотесты для кросс-платформенного клиента ЭльФиСА (Elfisa.Core + Elfisa.Avalonia).
Запуск
dotnet test tests/Elfisa.Tests/Elfisa.Tests.csproj
или всё решение:
dotnet test Elfisa.sln
CI (.github/workflows/desktop-tests.yml) гоняет их автоматически при пуше в src/** или tests/**.
Что покрыто (56 тестов)
| Файл | Область |
|---|---|
UpdateServiceTests |
разбор версий тегов (v2.0.4→2.0.4.0), сравнение «новее», URL установщика |
SessionTests |
срок JWT-сессии (IsJwtExpired): будущий/просроченный/битый токен, запас 60с |
ApiClientTests |
сборка URL, маппинг ошибок (401/429), ретраи на транзиентных сбоях, парсинг сводного прайса, требование токена |
DtoTests |
JSON-контракты (snake_case) DTO: PriceItem, BuyerOrderCreateRequest, LoginResponse, AppSettings |
DraftTests |
суммы черновиков заказа (LineSum, Total, ItemsCount) |
CartServiceTests |
корзина: добавление, слияние по supplier_price_id, удаление, очистка, событие Changed |
PriceLogicTests |
дрилдаун прайса: извлечение дозировки (МГ) и базового наименования |
Как устроены моки
FakeHttpHandler(вTestHelpers.cs) — подменяет HTTP уApiClientчерез internal-конструкторApiClient(HttpMessageHandler, baseUrl). Позволяет тестировать ретраи/ошибки/парсинг без сети.Jwt.Make(exp)— генерирует JWT с нужнымexpдля тестов сессии.- Тестируемые внутренние методы открыты через
InternalsVisibleTo("Elfisa.Tests")(в csprojElfisa.CoreиElfisa.Avalonia).
Задел (не сделано)
Headless UI-тесты (рендер вьюх без экрана) — Avalonia.Headless.XUnit под Avalonia 12 требует xUnit v3, что конфликтует с текущим v2. Добавить после миграции тест-проекта на xUnit v3.