заработало
This commit is contained in:
+3
-16
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user