Сгруппировать тестовые проекты по областям

Deal.Tests.Unit, Deal.Telegram.Tests, Deal.Ai.Tests, Deal.Ml.Tests
разложены по областям (Modules/<X>, Api, Infrastructure, Contracts,
Grpc, ...), общие хелперы -> Support; namespace = папка, using
между областями добавлены итеративно по ошибкам сборки.
This commit is contained in:
Rustam Khalimov
2026-09-11 13:28:26 +03:00
parent e3a2692507
commit 5bfa92a4ac
212 changed files with 1982 additions and 1686 deletions
@@ -4,8 +4,9 @@ using Grpc.Core;
using Grpc.Net.Client;
using Microsoft.Extensions.DependencyInjection;
using System.Text.Json.Nodes;
using Deal.Ai.Tests.Support;
namespace Deal.Ai.Tests;
namespace Deal.Ai.Tests.Ai;
/// <summary>
/// In-proc gRPC-тесты AiService поверх фейк-провайдера (план Task 8, Acceptance): все 4 RPC
@@ -7,8 +7,9 @@ using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using System.Net;
using System.Net.Sockets;
using Deal.Ai.Tests.Support;
namespace Deal.Ai.Tests;
namespace Deal.Ai.Tests.Ai;
// Общий харнесс in-proc gRPC-тестов ai-service (план Task 8): поднимает хост (AiServiceHost.Create)
// в процессе теста на эфемерном порту и через configureServices-хук подменяет LLM-фасад фейком
@@ -1,6 +1,7 @@
using Deal.Ai.Llm;
using Deal.Ai.Tests.Support;
namespace Deal.Ai.Tests;
namespace Deal.Ai.Tests.Ai;
// Зафиксированный вызов фейк-провайдера (для проверки собранных RPC промптов).
// SystemPrompt: Системный промпт вызова.
@@ -1,7 +1,8 @@
using Deal.Ai.Llm;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Ai.Tests.Support;
namespace Deal.Ai.Tests;
namespace Deal.Ai.Tests.Ai;
/// <summary>
/// Unit-тесты оркестратора вызовов модели (план Task 7; ProviderCaller, 1:1 chat_json ai.py L80117):
@@ -1,6 +1,7 @@
using Deal.Ai.Llm;
using Deal.Ai.Tests.Support;
namespace Deal.Ai.Tests;
namespace Deal.Ai.Tests.Ai;
/// <summary>
/// Unit-тесты оценки токенов (план Task 7; TokenEstimator, Ruling 5): usage API-ответа провайдера
@@ -7,8 +7,9 @@ using Grpc.Net.Client;
using System.Net;
using System.Net.Sockets;
using Xunit;
using Deal.Ai.Tests.Support;
namespace Deal.Ai.Tests;
namespace Deal.Ai.Tests.Grpc;
/// <summary>
/// Интеграционные тесты хоста ai-service (каркас Task 4 + логика Task 8).
@@ -1,7 +1,7 @@
using System.Text.Json.Nodes;
using Deal.Ai.Llm;
namespace Deal.Ai.Tests;
namespace Deal.Ai.Tests.Support;
/// <summary>
/// Unit-тесты извлечения JSON из ответа модели (план Task 7; JsonExtractor, 1:1 extract_json
@@ -2,7 +2,7 @@ using System.Net;
using System.Text.Json.Nodes;
using Deal.Ai.Llm;
namespace Deal.Ai.Tests;
namespace Deal.Ai.Tests.Support;
/// <summary>
/// HTTP-тесты LlmHttpClient на заглушке HttpMessageHandler (план Task 7 Acceptance; без сети):
@@ -3,7 +3,7 @@ using System.Text;
using System.Text.Json.Nodes;
using Deal.Ai.Llm;
namespace Deal.Ai.Tests;
namespace Deal.Ai.Tests.Support;
// Снимок HTTP-запроса, записанный заглушкой обработчика (для проверок wire-контракта).
// Url: Полный URL запроса.
@@ -7,8 +7,10 @@ using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Tenants;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты логики прохода <see cref="DataRetentionScheduler"/> (этап 12, пакет B): авто-очистка
@@ -1,6 +1,7 @@
using Deal.Api.Endpoints;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты чистых хелперов эндпоинтов /api/discovery (план Task 19, Ruling 11): очистка ключей
@@ -21,8 +21,13 @@ using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
using Deal.Tests.Unit.Modules.Discovery;
using Deal.Tests.Unit.Contracts;
using Deal.Tests.Unit.Modules.Tenants;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты DiscoveryWorkerScheduler — фоновый цикл воркера Discovery (план Task 18, Ruling 10; эталон
@@ -14,8 +14,11 @@ using Grpc.Core;
using Grpc.Health.V1;
using Grpc.Net.Client;
using Microsoft.Extensions.DependencyInjection;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Tenants;
using Deal.Tests.Unit.Modules.Kanban;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// In-proc gRPC-тесты IngressRateLimitInterceptor (план Task 11, Ruling 5): фиксированное окно
@@ -2,8 +2,10 @@ using Deal.Api.Configuration;
using Deal.Api.Extensions;
using Deal.Api.Models;
using Deal.Api.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Tenants;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Unit-тесты LoginAttemptGuard (план Task 11, Ruling 5; этап 12, пакет B — хранилище Postgres):
@@ -26,8 +26,13 @@ using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Kanban;
using Deal.Tests.Unit.Grpc;
using Deal.Tests.Unit.Modules.Tenants;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты MlOutboxFlushScheduler — логика прохода цикла выгрузки обучения ML (план Task 16, Ruling 6;
@@ -4,8 +4,9 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты хелпера фильтров эндпоинта GET /api/operator/audit (Task 4, Ruling 4): нормализация limit.
@@ -9,8 +9,10 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Tenants;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты hosted-шага bootstrap оператора (Task 3, Ruling 1): env DEAL_OPERATOR_* → EnsureOperatorAsync
@@ -4,8 +4,9 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Юнит-тесты <see cref="OperatorCookieOptions"/>: имя операторской куки не пересекается с тенантной
@@ -1,6 +1,7 @@
using Deal.Api.Endpoints;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты хелперов операторских ручек лимитов (план Task 10): процент расхода бюджета (0..100).
@@ -1,8 +1,9 @@
using Deal.Api;
using Deal.Api.Dtos;
using Deal.Api.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты PipelinePumpGate — общий воркер-гейт pump тенанта (план Task 11, Ruling 8; аналог
@@ -20,8 +20,12 @@ using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Kanban;
using Deal.Tests.Unit.Modules.Tenants;
using Deal.Tests.Unit.Contracts;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты сборщика глубин очередей/сессий (§10.2): агрегат по тенантам через существующие сервисы.
@@ -1,7 +1,8 @@
using Deal.Api.Endpoints;
using Grpc.Core;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты чистых хелперов эндпоинтов /api/tg (план Task 14): RU-маппинг типа диалога на границе
@@ -3,8 +3,10 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты сервиса глобальных ключей Telegram (ТЗ §4.1/§8.1): шифрование/маскирование, валидация,
@@ -8,8 +8,11 @@ using Deal.Modules.Telegram.Application;
using Deal.Modules.Telegram.Application.Models;
using Grpc.Core;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Contracts;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Api;
/// <summary>
/// Тесты сборки статуса вкладки Telegram — GET /api/tg/status (Ruling 8, api-map §4.9; план Task 14).
@@ -20,8 +20,11 @@ using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Tenants;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты декоратора бюджетного гейта <see cref="BudgetedAiClassifier"/> (план Task 9, Ruling 3): перед
@@ -15,8 +15,10 @@ using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Tenants;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты декоратора бюджетного гейта <see cref="BudgetedAiTools"/> (план Task 9, Ruling 3): при запрете
@@ -12,8 +12,11 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты композитора карточки CardComposer (план Task 7 L403406, Ruling 4; python _store_lead L433514).
@@ -5,8 +5,11 @@ using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
using Deal.Modules.Kanban.Application.ColumnRules;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты CardsService — карточки: чтение, переносы, архив/корзина, комментарии, counts, поиск
@@ -8,8 +8,10 @@ using Deal.Modules.Telegram.Application;
using Deal.Modules.Telegram.Application.Models;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты DialogsService — каталог диалогов/каналов и зеркало мониторинга ядра (Ruling 7, план Task 13).
@@ -9,8 +9,10 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты DiscoveryEvaluator — каскад оценки сообщения и агрегаты выборки (план Task 18, 1:1
@@ -10,8 +10,11 @@ using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Grpc.Core;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Discovery;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты DiscoveryWorkerService — один шаг за тик (план Task 18, 1:1 discovery_worker.py целиком,
@@ -1,7 +1,8 @@
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// In-memory реализация <see cref="IAiClassifier"/> для unit-тестов воркера pump (план Task 8 L423:
@@ -1,7 +1,8 @@
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Фейковая реализация <see cref="IAiTools"/> для тестов Discovery-воркера/оценки (план Task 18).
@@ -1,7 +1,8 @@
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Фейковый <see cref="ITelegramGateway"/> для тестов Discovery-воркера (план Task 18): поиск/инфо/чтение
@@ -1,7 +1,8 @@
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// In-memory реализация <see cref="IFileStorage"/> для unit-тестов файлов карточки (CardsService.Files).
@@ -1,7 +1,8 @@
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// In-memory реализация <see cref="IMlClient"/> для unit-тестов CardsService (план Task 7) и воркера pump
@@ -1,8 +1,9 @@
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Grpc.Core;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// In-memory реализация <see cref="ITelegramGateway"/> для юнит-тестов модуля Telegram/ингресса (Task 13/14).
@@ -1,8 +1,9 @@
using Deal.Contracts.Integrations.Models;
using Deal.Modules.Telegram.Application;
using Deal.Modules.Telegram.Application.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// In-memory реализация <see cref="ITelegramStore"/> для юнит-тестов DialogsService/ингресса (Task 13).
@@ -20,8 +20,12 @@ using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
using Deal.Tests.Unit.Modules.Tenants;
using Deal.Tests.Unit.Grpc;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты gRPC-адаптера IAiTools к ai-service (Ruling 9, план Task 15): маппинг GenerateKeywords/
@@ -20,8 +20,13 @@ using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
using Deal.Tests.Unit.Modules.Kanban;
using Deal.Tests.Unit.Grpc;
using Deal.Tests.Unit.Modules.Tenants;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты gRPC-адаптера IMlClient/IMlTrainClient к ml-service (план Task 16, Ruling 6; Acceptance L449).
@@ -12,8 +12,10 @@ using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Grpc.Core;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Grpc;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// In-proc тесты gRPC-адаптера гейта GrpcTelegramClient «по проводу» (план Task 14, Ruling 1/2/7).
@@ -30,8 +30,13 @@ using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.DependencyInjection;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Modules.Kanban;
using Deal.Tests.Unit.Modules.Tenants;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты выбора реализации портов интеграций по флагам Services:Ml|Ai|Telegram:UseLocal (Ruling 6, планы Task
@@ -11,8 +11,10 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты детерминированного ИИ-классификатора <see cref="LocalAiClassifier"/> (Ruling 5, план Task 6 L382384).
@@ -6,8 +6,9 @@ using Deal.Infrastructure.Integrations.Extensions;
using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты Local-реализации порта ИИ-инструментов <see cref="LocalAiTools"/> (Ruling 9, план Task 15):
@@ -8,8 +8,12 @@ using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Modules.Kanban;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Тесты обёртки создания карточки PipelineCardWriter (план Task 7 L400402, Ruling 3/4;
@@ -30,8 +30,14 @@ using Deal.Modules.Tenants.Application.Services;
using Deal.SharedKernel.Tenants.Abstractions;
using Deal.SharedKernel.Tenants.Models;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Tenants;
using Deal.Tests.Unit.Modules.Kanban;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Modules.Settings;
using Deal.Tests.Unit.Grpc;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Сквозной тест воркера pump с gRPC-классификатором ai-service (план Task 15, Acceptance L433434:
@@ -1,7 +1,8 @@
using Deal.Contracts.Integrations.Abstractions;
using Deal.Contracts.Integrations.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Contracts;
/// <summary>
/// Порт-контракт гейта telegram-service: набор методов 1:1 со списком Ruling 7 (план Task 13).
@@ -1,7 +1,8 @@
using Deal.Grpc.Ai;
using Grpc.Core;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Grpc;
/// <summary>
/// In-proc фейк ai-service для тестов gRPC-адаптеров ядра (план Task 15): Recording-сервер AiService.
@@ -1,7 +1,8 @@
using Deal.Grpc.Ml;
using Grpc.Core;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Grpc;
/// <summary>
/// In-proc фейк ml-service для тестов gRPC-клиента ядра (план Task 16): Recording-сервер MlService.
@@ -1,7 +1,8 @@
using Deal.Grpc.Telegram;
using Grpc.Core;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Grpc;
/// <summary>
/// Фейк-сервер TelegramService (telegram.proto) для in-proc тестов GrpcTelegramClient (план Task 14).
@@ -7,8 +7,9 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.EntityFrameworkCore;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Юнит-тесты EF-адаптера <see cref="AuditLogStore"/> на InMemory-провайдере: маппинг DTO↔сущности,
@@ -7,8 +7,9 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.EntityFrameworkCore;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Юнит-тесты EF-адаптера <see cref="AuthStore"/> на InMemory-провайдере: список пользователей тенанта
@@ -7,8 +7,12 @@ using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Modules.Settings;
using Deal.Tests.Unit.Contracts;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Тесты единой точки перехода карточки <see cref="CardMover"/> (R4 этапа 9): маршрутизация цели
@@ -6,8 +6,9 @@ using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Microsoft.EntityFrameworkCore;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Юнит-тесты EF-адаптера <see cref="GlobalSettingsStore"/> на InMemory-провайдере (ТЗ §4.1/§8.1):
@@ -7,8 +7,9 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.EntityFrameworkCore;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Юнит-тесты EF-адаптера <see cref="InviteStore"/> на InMemory-провайдере: маппинг DTO↔сущности и статусные операции.
@@ -5,8 +5,9 @@ using Deal.Infrastructure.Integrations.Models;
using Deal.Infrastructure.Integrations.Options;
using Deal.Infrastructure.Integrations.Services;
using Microsoft.Extensions.Configuration;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Тесты конфиг-парсинга mTLS (план Task 13, Ruling 6): env DEAL_MTLS_* — флаг и пути/пароли;
@@ -3,8 +3,9 @@ using Deal.Infrastructure.Persistence.Configurations;
using Deal.Infrastructure.Persistence.Repositories;
using Deal.Modules.Tenants.Application.Models;
using Microsoft.EntityFrameworkCore;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Юнит-тесты EF-адаптера <see cref="OperatorAuthStore"/> на InMemory-провайдере: маппинг DTO↔сущности (минимально).
@@ -2,8 +2,9 @@ using Deal.Infrastructure.Persistence;
using Deal.Infrastructure.Persistence.Configurations;
using Deal.Infrastructure.Persistence.Repositories;
using Microsoft.EntityFrameworkCore;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Юнит-тесты EF-адаптера <see cref="RateLimitCounterStore"/> на InMemory-провайдере (этап 12,
@@ -3,8 +3,9 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Тесты AES-256-GCM-шифра секретов: roundtrip, nonce, устойчивость к повреждению (Task 1, Ruling 2).
@@ -1,6 +1,7 @@
using Deal.Infrastructure.Persistence.Entities;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
public sealed class TenantEntityTests
{
@@ -8,8 +8,9 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.EntityFrameworkCore;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Юнит-тесты EF-адаптера <see cref="TenantLimitStore"/> на InMemory-провайдере (Task 8, Ruling 3 этапа 7):
@@ -7,8 +7,9 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.EntityFrameworkCore;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Юнит-тесты EF-адаптера <see cref="TenantRepository"/> на InMemory-провайдере: смена статуса (Task 7).
@@ -5,8 +5,10 @@ using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Microsoft.Extensions.Logging.Abstractions;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Tenants;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Тесты пакетной миграции схем тенантов (этап 12, пакет C): провижининг всех схем реестра, отказ одной
@@ -1,6 +1,7 @@
using Deal.Infrastructure.Migrations;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
public sealed class TenantSchemaMigratorTests
{
@@ -1,6 +1,7 @@
using Deal.Infrastructure.Persistence.Entities;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Infrastructure;
/// <summary>
/// Лёгкий тест сущности настройки тенанта (EF-адаптер SettingsStore работает с TenantSettingEntity).
@@ -2,8 +2,9 @@ using Deal.Modules.Cards;
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Cards;
/// <summary>
/// Тесты каркаса единой карточки (T1): маркер модуля, реестры id/контейнеров, агрегат Card.
@@ -6,8 +6,9 @@ using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Cards;
/// <summary>
/// In-memory реализация <see cref="ICardStore"/> для unit-тестов сервисов единого домена карточки.
@@ -1,8 +1,9 @@
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Cards;
// Тестовая реализация локального источника (каркас T1; боевая — в T2/T3).
internal sealed class LocalSourceStub(string authorId) : ILocalSource
@@ -1,8 +1,9 @@
using Deal.Modules.Cards.Application.Abstractions;
using Deal.Modules.Cards.Application.Dtos;
using Deal.Modules.Cards.Application.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Cards;
// Тестовая реализация Telegram-источника (каркас T1; боевая — в T2/T3).
internal sealed class TelegramSourceStub(string dialogId, long messageId, string? peerHandle, string peerName, string? topicId)
@@ -8,8 +8,10 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Discovery;
/// <summary>
/// Тесты DiscoveryBanGuard — суточный лимит авто-вступлений, flood-день, стоп-кран (план Task 18,
@@ -4,8 +4,9 @@ using Deal.Modules.Discovery.Application.Extensions;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Registrars;
using Deal.Modules.Discovery.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Discovery;
/// <summary>
/// Тесты DiscoveryBlacklistService — добавление с upsert-перезаписью, снятие, список (план Task 17, 1:1 L568589).
@@ -4,8 +4,9 @@ using Deal.Modules.Discovery.Application.Extensions;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Registrars;
using Deal.Modules.Discovery.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Discovery;
/// <summary>
/// Тесты DiscoveryCandidatesService — add с исключениями, set_candidate, review, mark_joined/rejected (план Task 17, 1:1 discovery.py L385563).
@@ -4,8 +4,9 @@ using Deal.Modules.Discovery.Application.Extensions;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Registrars;
using Deal.Modules.Discovery.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Discovery;
/// <summary>
/// Тесты DiscoveryLangDetector — доля кириллицы в выборке (1:1 discovery_eval.detect_lang_ru L6283,
@@ -4,8 +4,9 @@ using Deal.Modules.Discovery.Application.Extensions;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Registrars;
using Deal.Modules.Discovery.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Discovery;
/// <summary>
/// Тесты DiscoveryLogService — запись событий и чтение истории (план Task 17, 1:1 add_log/task_log L594608).
@@ -4,8 +4,9 @@ using Deal.Modules.Discovery.Application.Extensions;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Registrars;
using Deal.Modules.Discovery.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Discovery;
/// <summary>
/// Тесты <see cref="DiscoverySearchErrorCounter"/> — инкремент/сброс ошибок ключа поиска и TTL-эвикция
@@ -4,8 +4,10 @@ using Deal.Modules.Discovery.Application.Extensions;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Registrars;
using Deal.Modules.Discovery.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Discovery;
/// <summary>
/// Тесты DiscoveryTasksService — создание/патч/удаление/start/pause и план-бюджет (план Task 17, 1:1 discovery.py L234381).
@@ -4,8 +4,9 @@ using Deal.Modules.Discovery.Application.Extensions;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Registrars;
using Deal.Modules.Discovery.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Discovery;
/// <summary>
/// Фейковый <see cref="IDiscoveryPacer"/> для тестов воркера Discovery (план Task 18): паузы мгновенные,
@@ -4,8 +4,9 @@ using Deal.Modules.Discovery.Application.Extensions;
using Deal.Modules.Discovery.Application.Models;
using Deal.Modules.Discovery.Application.Registrars;
using Deal.Modules.Discovery.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Discovery;
/// <summary>
/// In-memory реализация <see cref="IDiscoveryStore"/> для unit-тестов Discovery (план Task 17).
@@ -7,8 +7,11 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// Тесты контекст-билдера ИИ-классификации <see cref="AiClassifyContextBuilder"/> (план Task 15, Ruling 5;
@@ -1,6 +1,7 @@
using Deal.Modules.Kanban.Application.ColumnRules;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// Тесты парсера сумм — AmountParser (план Task 3 L234235, L244246; rules.py extract_amounts L93144).
@@ -3,8 +3,9 @@ using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// Тесты нормализации бюджета — BudgetNormalizer (план Task 3 L241246, Ruling 7; ai.py clean_budget L316326,
@@ -7,8 +7,12 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Modules.Settings;
using Deal.Tests.Unit.Contracts;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// Тесты напоминаний «Отложено» — <see cref="CardsService"/> (единый домен карточки, этап 9): set
@@ -1,7 +1,8 @@
using Deal.Modules.Kanban.Application.ColumnRules;
using Deal.Modules.Kanban.Application.Models;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// Тесты чистых правил колонок — ColumnRules (план Task 3 L231250, Ruling 2; rules.py match_text L176209,
@@ -3,8 +3,9 @@ using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// In-memory реализация <see cref="IMlLearningStore"/> для unit-тестов ML-интеграции (Tasks 5/16).
@@ -7,8 +7,9 @@ using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// In-memory реализация <see cref="IPipelineStore"/> для unit-тестов PipelineIngestService/PipelineProcessingService (план Task 5).
@@ -3,8 +3,9 @@ using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// Тесты FileKindDetector — категории вложений по MIME/расширению (план Task 6 L333334; files.py KIND_BY_EXT/KIND_LABELS L1328, detect L3145; Ruling 4).
@@ -1,7 +1,8 @@
using Deal.Modules.Kanban;
using Deal.Modules.Pipeline;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
public sealed class MarkerTests
{
@@ -7,8 +7,12 @@ using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Contracts;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// Тесты ручной проверки/разметки ML (§8): кандидаты канала/выборки и применение решения.
@@ -7,8 +7,11 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Cards;
using Deal.Tests.Unit.Modules.Settings;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// Тесты StorageTickService — тик правил хранения (Ruling 8, план Task 10 L395; leads.py tick_storage L454493).
@@ -3,8 +3,9 @@ using Deal.Modules.Kanban.Application.Extensions;
using Deal.Modules.Kanban.Application.Models;
using Deal.Modules.Kanban.Application.Registrars;
using Deal.Modules.Kanban.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Kanban;
/// <summary>
/// Тесты чистого ядра ИИ-предложений <see cref="SuggestHeuristics"/> (Ruling 3, план Task 14 L467471).
@@ -2,8 +2,9 @@ using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Pipeline;
/// <summary>
/// Тесты глобальных исключений (§5.14): слова/локации/типы/бюджет — чистая проверка до ML/ИИ.
@@ -2,8 +2,10 @@ using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Kanban;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Pipeline;
/// <summary>
/// Тесты приёма входящих сообщений — PipelineIngestService (план Task 5 L353354, Ruling 2; pipeline.py enqueue L5385).
@@ -2,8 +2,11 @@ using Deal.Modules.Pipeline.Application.Abstractions;
using Deal.Modules.Pipeline.Application.Models;
using Deal.Modules.Pipeline.Application.Registrars;
using Deal.Modules.Pipeline.Application.Services;
using Deal.Tests.Unit.Support;
using Deal.Tests.Unit.Modules.Kanban;
using Deal.Tests.Unit.Contracts;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Pipeline;
/// <summary>
/// Тесты обслуживания пайплайна — PipelineProcessingService (план Task 5 L355361, Ruling 8/10;
@@ -2,8 +2,9 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Settings;
/// <summary>
/// In-memory реализация <see cref="IGlobalSettingsStore"/> для юнит-тестов глобальных настроек.
@@ -2,8 +2,9 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Settings;
/// <summary>
/// In-memory реализация <see cref="IRatesChangedListener"/> для тестов триггеров пересчёта (Task 12).
@@ -2,8 +2,9 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Settings;
/// <summary>
/// Фейковый источник курсов для тестов RatesService (Task 8, Ruling 6).
@@ -2,8 +2,9 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Settings;
/// <summary>
/// In-memory реализация <see cref="ISettingsStore"/> для юнит-тестов SettingsService (Task 3).
@@ -2,8 +2,9 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Settings;
/// <summary>
/// Тесты границы промптов с фронтом: дефолтные тексты 1:1 с ресурсами фронта и подстановка PromptFiller (Task 7).
@@ -2,8 +2,9 @@ using Deal.Modules.Settings.Application.Abstractions;
using Deal.Modules.Settings.Application.Models;
using Deal.Modules.Settings.Application.Registrars;
using Deal.Modules.Settings.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Settings;
/// <summary>
/// Тесты каталога ключей настроек, дефолтов и провайдеров (Task 2, Ruling 1/3).
@@ -3,8 +3,9 @@ using Deal.Modules.Tenants.Application.Extensions;
using Deal.Modules.Tenants.Application.Models;
using Deal.Modules.Tenants.Application.Registrars;
using Deal.Modules.Tenants.Application.Services;
using Deal.Tests.Unit.Support;
namespace Deal.Tests.Unit;
namespace Deal.Tests.Unit.Modules.Tenants;
/// <summary>
/// Стабильность каталога типов событий аудита (Ruling 4 этапа 7; расширение этапа 10, T1).

Some files were not shown because too many files have changed in this diff Show More