#include "apiUrl.hpp" #include "hearthstoneApi.hpp" #include #include class TokenMock { public: TokenMock() : mTokenFilePath{"resources/token_info"}, mUsername{"2b50f1123b424d5e9c21971a110fdd04"}, mPassword{"MrMkhVMNdOeqPL4Q4XVQAsRPR14J7Yq6"}, mToken{mTokenFilePath, mUsername, mPassword} {} std::string toString() const { return mToken.toString(); } Token &getToken() { return mToken; } private: const std::string mTokenFilePath; const std::string mUsername; const std::string mPassword; Token mToken; }; class HearthstoneApiMock { public: HearthstoneApiMock() : mHearthstoneApi(std::move(mToken.getToken())) {}; std::string makeApiRequest(const std::string &iUrl) { return mHearthstoneApi.makeApiRequest(iUrl); } std::uint64_t numberOfCards(const std::string &iApiResponse) { return mHearthstoneApi.numberOfCards(iApiResponse); }; private: TokenMock mToken; const HearthstoneApi mHearthstoneApi; }; TEST_CASE("Retrieve API Token", "[getApiToken]") { TokenMock aToken; const std::string kTokenContent{aToken.toString()}; const std::string::size_type kTokenSize{kTokenContent.size()}; REQUIRE(kTokenSize >= 30); REQUIRE(kTokenSize <= 40); } TEST_CASE("Retrieve number of cards", "[getCardsCount]") { 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("1"); std::uint64_t kNumberOfCards{aHearthstoneApi.numberOfCards(aHearthstoneApi.makeApiRequest(aApiUrl()))}; REQUIRE(kNumberOfCards == 5992); } 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() > 6000); }