Обновить тест статуса Telegram под новую семантику
ci / build-test (pull_request) Successful in 2m50s

connected = phase ready; живой account приоритетнее KV tgAccount.
This commit is contained in:
2026-09-13 16:27:19 +03:00
parent a9f2b3a1ef
commit 13d7994511
@@ -67,21 +67,22 @@ public sealed class TgStatusServiceTests
/// Готовый аккаунт /// Готовый аккаунт
/// </summary> /// </summary>
[Fact] [Fact]
public async Task GetAsync_ReadyGateway_ComposesLiveFieldsWithKvAccountMonitoredAndKeys() public async Task GetAsync_ReadyGateway_PrefersLiveAccountOverKvAndComputesConnected()
{ {
(TgStatusService service, TestTelegramStore store, TestSettingsStore settings, TestTelegramGateway gateway, _, TestGlobalSettingsStore globalSettings) = Create(); (TgStatusService service, TestTelegramStore store, TestSettingsStore settings, TestTelegramGateway gateway, _, TestGlobalSettingsStore globalSettings) = Create();
store.Seed(Dialog("d_1", "Канал", "channel", Monitor: true)); store.Seed(Dialog("d_1", "Канал", "channel", Monitor: true));
settings.Preload(SettingsKeys.TgAccount, "\"@realuser\""); settings.Preload(SettingsKeys.TgAccount, "\"@realuser\"");
PreloadKeys(globalSettings, "123456", "abcdefghijklmnop"); PreloadKeys(globalSettings, "123456", "abcdefghijklmnop");
// Транспортный Connected=false, но phase ready → UI должен считать аккаунт подключённым.
gateway.Status = new TelegramAccountStatusDto( gateway.Status = new TelegramAccountStatusDto(
Phase: "ready", Connected: true, Listener: true, Account: "gateway-account", Error: null, QrUrl: null); Phase: "ready", Connected: false, Listener: true, Account: "@liveuser", Error: null, QrUrl: null);
TgStatusDto status = await service.GetAsync(CancellationToken.None); TgStatusDto status = await service.GetAsync(CancellationToken.None);
Assert.Equal("ready", status.Phase); Assert.Equal("ready", status.Phase);
Assert.True(status.Connected); Assert.True(status.Connected); // connected = авторизация (phase ready), не транспорт
Assert.True(status.Listener); Assert.True(status.Listener);
Assert.Equal("@realuser", status.Account); // KV tgAccount перекрывает справочное поле гейта (Ruling 8) Assert.Equal("@liveuser", status.Account); // живой account приоритетнее KV
Assert.Equal(1, status.Monitored); Assert.Equal(1, status.Monitored);
Assert.True(status.KeysSet); Assert.True(status.KeysSet);
} }