mirror of
https://github.com/sebastiandine/Card-Collection-Manager-3.git
synced 2026-08-29 01:08:49 +00:00
patch: Patch/ygo set 25th (#13)
This commit is contained in:
@@ -29,9 +29,18 @@ TEST_SUITE("YuGiOhSetSource::parseResponse") {
|
||||
])";
|
||||
const auto out = YuGiOhSetSource::parseResponse(json);
|
||||
REQUIRE(out.isOk());
|
||||
REQUIRE(out.value().size() == 2);
|
||||
CHECK(out.value()[0].id == "AAA");
|
||||
CHECK(out.value()[0].releaseDate == "2020/01/01");
|
||||
bool foundA = false;
|
||||
bool foundB = false;
|
||||
for (const auto& set : out.value()) {
|
||||
if (set.id == "AAA" && set.name == "Set A" && set.releaseDate == "2020/01/01") {
|
||||
foundA = true;
|
||||
}
|
||||
if (set.id == "BBB" && set.name == "Set B" && set.releaseDate == "2021/02/03") {
|
||||
foundB = true;
|
||||
}
|
||||
}
|
||||
CHECK(foundA);
|
||||
CHECK(foundB);
|
||||
}
|
||||
|
||||
TEST_CASE("sorts by release date ascending") {
|
||||
@@ -47,6 +56,48 @@ TEST_SUITE("YuGiOhSetSource::parseResponse") {
|
||||
TEST_CASE("missing array returns error") {
|
||||
CHECK(YuGiOhSetSource::parseResponse(R"({"data":[]})").isErr());
|
||||
}
|
||||
|
||||
TEST_CASE("adds 25th Anniversary aliases when upstream list misses them") {
|
||||
const auto out = YuGiOhSetSource::parseResponse(R"([
|
||||
{"set_name":"Legend of Blue Eyes White Dragon","set_code":"LOB","tcg_date":"2002-03-08"}
|
||||
])");
|
||||
REQUIRE(out.isOk());
|
||||
|
||||
bool foundLob25th = false;
|
||||
bool foundIoc25th = false;
|
||||
for (const auto& set : out.value()) {
|
||||
if (set.name == "Legend of Blue Eyes White Dragon (25th Anniversary Edition)"
|
||||
&& set.id == "LOB-25TH") {
|
||||
foundLob25th = true;
|
||||
}
|
||||
if (set.name == "Invasion of Chaos (25th Anniversary Edition)" && set.id == "IOC-25TH") {
|
||||
foundIoc25th = true;
|
||||
}
|
||||
}
|
||||
CHECK(foundLob25th);
|
||||
CHECK(foundIoc25th);
|
||||
}
|
||||
|
||||
TEST_CASE("does not duplicate aliases that already exist by name") {
|
||||
const auto out = YuGiOhSetSource::parseResponse(R"json([
|
||||
{"set_name":"Legend of Blue Eyes White Dragon (25th Anniversary Edition)","set_code":"LOB-25TH","tcg_date":"2023-04-20"}
|
||||
])json");
|
||||
REQUIRE(out.isOk());
|
||||
|
||||
int aliasCount = 0;
|
||||
for (const auto& set : out.value()) {
|
||||
if (set.name == "Legend of Blue Eyes White Dragon (25th Anniversary Edition)") {
|
||||
++aliasCount;
|
||||
}
|
||||
}
|
||||
CHECK(aliasCount == 1);
|
||||
}
|
||||
|
||||
TEST_CASE("malformed json returns parse error") {
|
||||
const auto out = YuGiOhSetSource::parseResponse("{bad json");
|
||||
REQUIRE(out.isErr());
|
||||
CHECK(out.error().find("YGOPRODeck set parse error:") != std::string::npos);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_SUITE("YuGiOhSetSource::fetchAll") {
|
||||
@@ -59,4 +110,13 @@ TEST_SUITE("YuGiOhSetSource::fetchAll") {
|
||||
CHECK(out.value().front().id == "X");
|
||||
CHECK(http.lastUrl == "https://db.ygoprodeck.com/api/v7/cardsets.php");
|
||||
}
|
||||
|
||||
TEST_CASE("network error is propagated") {
|
||||
FixedHttpClient http;
|
||||
http.ok = false;
|
||||
YuGiOhSetSource src{http};
|
||||
const auto out = src.fetchAll();
|
||||
REQUIRE(out.isErr());
|
||||
CHECK(out.error() == "offline");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user