Перевести FakeAiClassifier на NSubstitute
ci / build-test (push) Canceled after 0s

Хелпер Support/TestAiClassifier: вся поверхность фейка (FilterResult/ClassifyResult/
Throws-флаги/счётчики) сохранена, сервисы получают NSubstitute-подставку
(.Classifier), поведение читает состояние на момент вызова, счётчики через
When/Do. Потребители (5 файлов), фейк удалён, тесты 1340.
This commit is contained in:
Rustam Khalimov
2026-09-12 20:31:15 +03:00
parent 76a705a1d8
commit b8c3f3e9aa
7 changed files with 94 additions and 80 deletions
@@ -6,6 +6,7 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.SharedKernel.Tenants.Models;
using Deal.Tests.Unit.Modules.Settings;
using Deal.Tests.Unit.Modules.Tenants;
using Deal.Tests.Unit.Support;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Contracts.Integrations.Abstractions;
using Deal.SharedKernel.Tenants.Abstractions;
@@ -150,7 +151,7 @@ public sealed class BudgetedAiClassifierTests
// Settings: KV-настройки тенанта (маркеры LocalFieldsParser).
private sealed record Context(
IAiClassifier Decorator,
FakeAiClassifier Paid,
TestAiClassifier Paid,
FakeSettingsStore Settings);
// Собирает контекст: платный фейк + реальный Local-классификатор + фейк лимитов и tenant-контекст
@@ -164,9 +165,9 @@ public sealed class BudgetedAiClassifierTests
configure?.Invoke(limits);
ITenantContext tenantContext = new TenantContext();
tenantContext.SetTenant(new TenantId(TenantIdValue));
var paid = new FakeAiClassifier();
var paid = new TestAiClassifier();
IAiClassifier decorator = new BudgetedAiClassifier(
paid,
paid.Classifier,
new LocalAiClassifier(new LocalFieldsParser(settings)),
limits,
tenantContext,