заработало

This commit is contained in:
gorbenko.pavel
2026-08-12 17:07:21 +05:00
parent 0b2a05cd94
commit 6daecd2e18
6 changed files with 17 additions and 277 deletions
@@ -77,28 +77,15 @@ public sealed class ReminderServiceTests : IClassFixture<PostgresDatabaseFixture
.Setup(x => x.GetListTitleAsync(SiteUrl, listUrl, It.IsAny<CancellationToken>()))
.ReturnsAsync(DataListTitle);
sharePoint
.Setup(x => x.GetListServerRelativeUrlAsync(SiteUrl, ApprovalListTitle, It.IsAny<CancellationToken>()))
.ReturnsAsync("/sites/requests/Lists/ApprovalListRelUrl");
// Search сужает набор до активных строк (На согласовании/На исполнении) —
// мок отвечает так же, как реальный Search: по статусу строки, не по дате.
// Активные строки сервис отбирает прямым $filter по ApprovalStatus — мок
// отвечает так же: по значению статуса, а не по признаку решённости.
var activeRows = allRows
.Where(r => (string)r.GetType().GetProperty("ApprovalStatus")!.GetValue(r)! is
"На согласовании" or "На исполнении")
.ToList();
sharePoint
.Setup(x => x.SearchListItemIdsAsync(
SiteUrl, It.Is<string>(q => q.Contains("ApprovalStatusOWSCHCS")), It.IsAny<int>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(activeRows.Select(r => (int)r.GetType().GetProperty("Id")!.GetValue(r)!).ToList());
// Дочитывание полных полей найденных Search'ем строк — по Id. Матчер ищет
// "filter=Id eq", а не просто "Id eq" — иначе он совпал бы и с
// "TicketId eq" (та подстрока в нём есть буквально), и два setup'а
// конфликтовали бы между собой.
sharePoint
.Setup(x => x.GetItemsByListTitleAsync(
SiteUrl, ApprovalListTitle, It.Is<string>(q => q.Contains("filter=Id eq")), It.IsAny<CancellationToken>()))
SiteUrl, ApprovalListTitle, It.Is<string>(q => q.Contains("ApprovalStatus eq")), It.IsAny<CancellationToken>()))
.ReturnsAsync(activeRows.Select(Json).ToList());
sharePoint