diff options
| author | Aotrix <[email protected]> | 2026-01-28 21:55:35 +0100 |
|---|---|---|
| committer | Aotrix <[email protected]> | 2026-01-28 21:55:35 +0100 |
| commit | 40d7391fcbc057823d423ddd0f0c6d532d7cf4eb (patch) | |
| tree | 5527399505980e6c78f5747f07b66a74f44c3143 | |
| parent | ab280e7beef86d95335d0538fa1f6a6dfdd1125b (diff) | |
removed disgraceful [0] used for json objects
| -rw-r--r-- | battleNetApi/include/apiUrl.hpp | 1 | ||||
| -rw-r--r-- | battleNetApi/src/apiUrl.cpp | 5 | ||||
| -rw-r--r-- | battleNetApi/tests/tests.cpp | 59 |
3 files changed, 50 insertions, 15 deletions
diff --git a/battleNetApi/include/apiUrl.hpp b/battleNetApi/include/apiUrl.hpp index 509b248..29851eb 100644 --- a/battleNetApi/include/apiUrl.hpp +++ b/battleNetApi/include/apiUrl.hpp @@ -9,6 +9,7 @@ class ApiUrl { void setRegion(const std::string &iRegion); void setLocale(const std::string &iLocale); void setGameMode(const std::string &iGameMode); + void setPage(const std::string &iPage); void setPageSize(const std::string &iPageSize); std::string operator()() const; diff --git a/battleNetApi/src/apiUrl.cpp b/battleNetApi/src/apiUrl.cpp index 3de13cd..7c05720 100644 --- a/battleNetApi/src/apiUrl.cpp +++ b/battleNetApi/src/apiUrl.cpp @@ -21,6 +21,11 @@ void ApiUrl::setGameMode(const std::string &iGameMode) { //!< @see https://community.developer.battle.net/documentation/hearthstone/guides/game-modes } } +void ApiUrl::setPage(const std::string &iPage) { + if (not iPage.empty()) { + aParameters["page"] = iPage; //!< The page to retrieve, e.g. "9" + } +} void ApiUrl::setPageSize(const std::string &iPageSize) { if (not iPageSize.empty()) { aParameters["pageSize"] = iPageSize; //!< The number of results to choose per page, e.g. "40" diff --git a/battleNetApi/tests/tests.cpp b/battleNetApi/tests/tests.cpp index 611cf83..062608e 100644 --- a/battleNetApi/tests/tests.cpp +++ b/battleNetApi/tests/tests.cpp @@ -1,8 +1,10 @@ #include "apiUrl.hpp" #include "hearthstoneApi.hpp" #include <catch2/catch_test_macros.hpp> +#include <cstdint> #include <iostream> #include <nlohmann/json.hpp> +#include <string> TEST_CASE("Retrieve API Token", "[generateApiToken]") { const std::string kCredentialsFile{"tests/resources/credentials.json"}; @@ -13,7 +15,7 @@ TEST_CASE("Retrieve API Token", "[generateApiToken]") { REQUIRE(kTokenSize <= 40); } -TEST_CASE("Retrieve number of cards", "[getCardsCount]") { +TEST_CASE("Retrieve number of cards", "[countCards]") { const std::string kCredentialsFile{"tests/resources/credentials.json"}; Token aToken(kCredentialsFile); HearthstoneApi aHearthstoneApi(aToken); @@ -23,21 +25,48 @@ TEST_CASE("Retrieve number of cards", "[getCardsCount]") { aApiUrl.setLocale("fr_FR"); aApiUrl.setGameMode("constructed"); aApiUrl.setPageSize("1"); - const json kResponse{aHearthstoneApi.makeApiRequest(aApiUrl())}; + const json kResponse = aHearthstoneApi.makeApiRequest(aApiUrl()); REQUIRE(kResponse.size() > 0); - REQUIRE(kResponse[0].contains("pageCount")); - std::uint64_t kNumberOfCards{kResponse[0]["pageCount"]}; + REQUIRE(kResponse.contains("pageCount")); + std::uint64_t kNumberOfCards{kResponse["pageCount"]}; REQUIRE(kNumberOfCards == 6033); } -// TEST_CASE("Retrieve cards", "[retrieveCards]") { -// HearthstoneApiMock aHearthstoneApi; -// const std::string kContentType{"cards"}; -// const std::string kRegion{"eu"}; -// ApiUrl aApiUrl(kContentType, kRegion); -// aApiUrl.setLocale("fr_FR"); -// aApiUrl.setGameMode("constructed"); -// aApiUrl.setPageSize("10"); -// const std::string kApiResponse{aHearthstoneApi.makeApiRequest(aApiUrl())}; -// REQUIRE(kApiResponse.size() > 5000); -// } +TEST_CASE("Retrieve cards", "[retrieveCardsOnce]") { + const std::string kCredentialsFile{"tests/resources/credentials.json"}; + Token aToken(kCredentialsFile); + HearthstoneApi aHearthstoneApi(aToken); + const std::string kContentType{"cards"}; + const std::string kRegion{"eu"}; + ApiUrl aApiUrl(kContentType, kRegion); + aApiUrl.setLocale("fr_FR"); + aApiUrl.setGameMode("constructed"); + aApiUrl.setPageSize("16"); + const json kApiResponse = aHearthstoneApi.makeApiRequest(aApiUrl()); + REQUIRE(kApiResponse["cards"].size() == 16); +} + +TEST_CASE("Retrieve cards", "[retrieveCardsFourTimes]") { + const std::string kCredentialsFile{"tests/resources/credentials.json"}; + Token aToken(kCredentialsFile); + HearthstoneApi aHearthstoneApi(aToken); + const std::string kContentType{"cards"}; + const std::string kRegion{"eu"}; + ApiUrl aApiUrl(kContentType, kRegion); + aApiUrl.setLocale("fr_FR"); + aApiUrl.setGameMode("constructed"); + aApiUrl.setPageSize("16"); + aApiUrl.setPage("1"); + json kApiResponse = aHearthstoneApi.makeApiRequest(aApiUrl()); + + // Retrieve number of pages + const int kNumberOfPages{kApiResponse["pageCount"]}; + REQUIRE(kNumberOfPages >= 4); + for (int i{1}; i < 4; ++i) { + REQUIRE(kApiResponse["cards"].size() == 16); + aApiUrl.setPage(std::to_string(i + 1)); + kApiResponse = aHearthstoneApi.makeApiRequest(aApiUrl()); + } + REQUIRE(kApiResponse["cards"].size() >= 1); + REQUIRE(kApiResponse["cards"].size() <= 16); +} |
