Validates search functionality by testing API results against manual filtering.

Comprehensive search validation that samples entities from a complete dataset, extracts search values, applies manual filtering, calls the search API, and compares results. Validates that search APIs return the correct subset of data matching the search criteria.

  // Test article search functionality
const allArticles = await db.articles.findAll();
const searchValidator = TestValidator.search("article search API")(
(req) => api.searchArticles(req)
)(allArticles, 5); // test with 5 random samples

await searchValidator({
fields: ["title", "content"],
values: (article) => [article.title.split(" ")[0]], // first word
filter: (article, [keyword]) =>
article.title.includes(keyword) || article.content.includes(keyword),
request: ([keyword]) => ({ q: keyword })
});

// Test user search with multiple criteria
await TestValidator.search("user search with filters")(
(req) => api.getUsers(req)
)(allUsers, 3)({
fields: ["status", "role"],
values: (user) => [user.status, user.role],
filter: (user, [status, role]) =>
user.status === status && user.role === role,
request: ([status, role]) => ({ status, role })
});

Error when API search results don't match manual filtering results