[Card] Search cards by Scryfall Tagger tag

This commit is contained in:
Lukas Brübach 2026-09-21 13:20:52 +02:00
parent 9f987513b1
commit 9f19512ff0
3 changed files with 63 additions and 1 deletions

View file

@ -184,6 +184,47 @@ TEST_F(CardQuery, SearchLanguageIsBoundPerInstance)
ASSERT_TRUE(germanQuery.check(localized));
}
CardInfoPtr taggedCard()
{
return CardInfo::newInstance("Tagged Card", "text", false, {{"tags", "ramp removal"}}, {}, {}, {}, {});
}
TEST_F(CardQuery, TagsMatchWholeSlugs)
{
const CardData tagged = taggedCard();
ASSERT_TRUE(FilterString("tags:ramp").check(tagged));
ASSERT_TRUE(FilterString("tags:removal").check(tagged));
ASSERT_TRUE(FilterString("tags:RAMP").check(tagged));
ASSERT_TRUE(FilterString("tag:ramp").check(tagged));
ASSERT_FALSE(FilterString("tags:squirrel").check(tagged));
}
TEST_F(CardQuery, TagQueryDoesNotMatchPartialSlugs)
{
const CardData tagged = taggedCard();
ASSERT_FALSE(FilterString("tags:ram").check(tagged));
ASSERT_FALSE(FilterString("tags:mov").check(tagged));
}
TEST_F(CardQuery, TagQueryCombinesWithAnd)
{
const CardData tagged = taggedCard();
ASSERT_TRUE(FilterString("tags:ramp tags:removal").check(tagged));
ASSERT_FALSE(FilterString("tags:ramp tags:squirrel").check(tagged));
}
TEST_F(CardQuery, TagQueryTreatsCommasAsPartOfTheSlug)
{
// Tag lists are not a thing: `tags:draw` and `tags:ramp` are separate terms.
const CardData tagged = taggedCard();
ASSERT_FALSE(FilterString("tags:ramp,removal").check(tagged));
}
TEST_F(CardQuery, TagQueryFalseWhenCardHasNoTags)
{
ASSERT_FALSE(FilterString("tags:ramp").check(cat));
}
} // namespace
class SetQuery : public ::testing::Test