summaryrefslogtreecommitdiff
path: root/battleNetApi
diff options
context:
space:
mode:
authorAotrix <[email protected]>2026-01-28 21:55:35 +0100
committerAotrix <[email protected]>2026-01-28 21:55:35 +0100
commit40d7391fcbc057823d423ddd0f0c6d532d7cf4eb (patch)
tree5527399505980e6c78f5747f07b66a74f44c3143 /battleNetApi
parentab280e7beef86d95335d0538fa1f6a6dfdd1125b (diff)
removed disgraceful [0] used for json objects
Diffstat (limited to 'battleNetApi')
-rw-r--r--battleNetApi/include/apiUrl.hpp1
-rw-r--r--battleNetApi/src/apiUrl.cpp5
-rw-r--r--battleNetApi/tests/tests.cpp59
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);
+}