From 77f4e0894644d28dff48216cd3e4ca71c3701566 Mon Sep 17 00:00:00 2001 From: tiennm99 Date: Fri, 7 Nov 2025 23:11:16 +0700 Subject: [PATCH] Refactor config to Environment and add Table utility Replaces Config with Environment throughout the codebase for environment variable management. Introduces a Table utility class for formatting tabular data in bot commands, refactoring commands to use this for improved output formatting. Removes unused AppType enum. Updates test cases and build configuration for better IDE integration. --- build.gradle.kts | 8 +++ .../java/com/miti99/storescraperbot/Main.java | 15 +++--- .../bot/StoreScrapeBotTelegramClient.java | 4 +- .../bot/StoreScrapeBotUsernameSupplier.java | 4 +- .../bot/command/AddGroupCommand.java | 4 +- .../bot/command/CheckAppCommand.java | 22 ++++---- .../bot/command/CheckAppScoreCommand.java | 18 +++---- .../bot/command/DeleteGroupCommand.java | 4 +- .../bot/command/ListAppCommand.java | 21 ++++---- .../bot/command/ListGroupCommand.java | 4 +- .../storescraperbot/bot/table/Table.java | 53 +++++++++++++++++++ .../Config.java => env/Environment.java} | 4 +- .../repository/AbstractRepository.java | 4 +- .../miti99/storescraperbot/type/AppType.java | 6 --- .../storescraperbot/util/CouchbaseUtil.java | 8 +-- .../api/apple/AppStoreScraperTest.java | 13 +++-- .../api/google/GooglePlayScraperTest.java | 11 +++- 17 files changed, 134 insertions(+), 69 deletions(-) create mode 100644 src/main/java/com/miti99/storescraperbot/bot/table/Table.java rename src/main/java/com/miti99/storescraperbot/{config/Config.java => env/Environment.java} (95%) delete mode 100644 src/main/java/com/miti99/storescraperbot/type/AppType.java diff --git a/build.gradle.kts b/build.gradle.kts index 352d1e7..a3ab1f6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,6 @@ plugins { application + idea java id("com.gradleup.shadow") version "8.3.5" } @@ -37,6 +38,13 @@ dependencies { testRuntimeOnly("org.junit.platform:junit-platform-launcher") } +idea { + module { + isDownloadJavadoc = true + isDownloadSources = true + } +} + java { toolchain { languageVersion.set(JavaLanguageVersion.of(21)) diff --git a/src/main/java/com/miti99/storescraperbot/Main.java b/src/main/java/com/miti99/storescraperbot/Main.java index d97a0af..c8ade4e 100644 --- a/src/main/java/com/miti99/storescraperbot/Main.java +++ b/src/main/java/com/miti99/storescraperbot/Main.java @@ -1,12 +1,13 @@ package com.miti99.storescraperbot; -import static com.miti99.storescraperbot.config.Config.CREATOR_ID; -import static com.miti99.storescraperbot.config.Config.SOURCE_COMMIT; +import static com.miti99.storescraperbot.env.Environment.CREATOR_ID; +import static com.miti99.storescraperbot.env.Environment.SOURCE_COMMIT; import com.miti99.storescraperbot.bot.StoreScrapeBot; import com.miti99.storescraperbot.bot.StoreScrapeBotTelegramClient; -import com.miti99.storescraperbot.config.Config; +import com.miti99.storescraperbot.env.Environment; import com.miti99.storescraperbot.repository.AdminRepository; +import com.miti99.storescraperbot.type.Env; import lombok.extern.log4j.Log4j2; import org.telegram.telegrambots.longpolling.TelegramBotsLongPollingApplication; @@ -17,10 +18,12 @@ public class Main { AdminRepository.INSTANCE.init(); try (var botsApplication = new TelegramBotsLongPollingApplication()) { - botsApplication.registerBot(Config.TELEGRAM_BOT_TOKEN, StoreScrapeBot.INSTANCE); + botsApplication.registerBot(Environment.TELEGRAM_BOT_TOKEN, StoreScrapeBot.INSTANCE); log.info("StoreScrapeBot successfully started!"); - StoreScrapeBotTelegramClient.INSTANCE.sendMessage( - CREATOR_ID, "Bot started! Version %s".formatted(SOURCE_COMMIT)); + if (Environment.ENV == Env.PRODUCTION) { + StoreScrapeBotTelegramClient.INSTANCE.sendMessage( + CREATOR_ID, "Bot started! Version %s".formatted(SOURCE_COMMIT)); + } Thread.currentThread().join(); } catch (Exception e) { log.error("Error while running bot", e); diff --git a/src/main/java/com/miti99/storescraperbot/bot/StoreScrapeBotTelegramClient.java b/src/main/java/com/miti99/storescraperbot/bot/StoreScrapeBotTelegramClient.java index 51718fe..6703f47 100644 --- a/src/main/java/com/miti99/storescraperbot/bot/StoreScrapeBotTelegramClient.java +++ b/src/main/java/com/miti99/storescraperbot/bot/StoreScrapeBotTelegramClient.java @@ -1,6 +1,6 @@ package com.miti99.storescraperbot.bot; -import com.miti99.storescraperbot.config.Config; +import com.miti99.storescraperbot.env.Environment; import lombok.extern.log4j.Log4j2; import org.telegram.telegrambots.client.okhttp.OkHttpTelegramClient; import org.telegram.telegrambots.meta.api.methods.ParseMode; @@ -11,7 +11,7 @@ public class StoreScrapeBotTelegramClient extends OkHttpTelegramClient { public static final StoreScrapeBotTelegramClient INSTANCE = new StoreScrapeBotTelegramClient(); public StoreScrapeBotTelegramClient() { - super(Config.TELEGRAM_BOT_TOKEN); + super(Environment.TELEGRAM_BOT_TOKEN); } public void sendMessage(long chatId, String text) { diff --git a/src/main/java/com/miti99/storescraperbot/bot/StoreScrapeBotUsernameSupplier.java b/src/main/java/com/miti99/storescraperbot/bot/StoreScrapeBotUsernameSupplier.java index 30575ae..8d3ea74 100644 --- a/src/main/java/com/miti99/storescraperbot/bot/StoreScrapeBotUsernameSupplier.java +++ b/src/main/java/com/miti99/storescraperbot/bot/StoreScrapeBotUsernameSupplier.java @@ -1,6 +1,6 @@ package com.miti99.storescraperbot.bot; -import com.miti99.storescraperbot.config.Config; +import com.miti99.storescraperbot.env.Environment; import java.util.function.Supplier; public class StoreScrapeBotUsernameSupplier implements Supplier { @@ -9,6 +9,6 @@ public class StoreScrapeBotUsernameSupplier implements Supplier { @Override public String get() { - return Config.TELEGRAM_BOT_USERNAME; + return Environment.TELEGRAM_BOT_USERNAME; } } diff --git a/src/main/java/com/miti99/storescraperbot/bot/command/AddGroupCommand.java b/src/main/java/com/miti99/storescraperbot/bot/command/AddGroupCommand.java index 1df5f84..2e61d74 100644 --- a/src/main/java/com/miti99/storescraperbot/bot/command/AddGroupCommand.java +++ b/src/main/java/com/miti99/storescraperbot/bot/command/AddGroupCommand.java @@ -1,7 +1,7 @@ package com.miti99.storescraperbot.bot.command; import com.miti99.storescraperbot.bot.StoreScrapeBotTelegramClient; -import com.miti99.storescraperbot.config.Config; +import com.miti99.storescraperbot.env.Environment; import com.miti99.storescraperbot.repository.AdminRepository; import com.miti99.storescraperbot.repository.GroupRepository; import org.telegram.telegrambots.meta.api.objects.User; @@ -18,7 +18,7 @@ public class AddGroupCommand extends BaseStoreScraperBotCommand { @Override protected void executeCommand( TelegramClient telegramClient, User user, Chat chat, String[] arguments) { - if (!Config.ADMIN_IDS.contains(user.getId())) { + if (!Environment.ADMIN_IDS.contains(user.getId())) { StoreScrapeBotTelegramClient.INSTANCE.sendMessage(chat.getId(), "You are not admin"); return; } diff --git a/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppCommand.java b/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppCommand.java index fa173a5..594b6a0 100644 --- a/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppCommand.java +++ b/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppCommand.java @@ -3,6 +3,7 @@ package com.miti99.storescraperbot.bot.command; import com.miti99.storescraperbot.api.apple.AppStoreScraper; import com.miti99.storescraperbot.api.google.GooglePlayScraper; import com.miti99.storescraperbot.bot.StoreScrapeBotTelegramClient; +import com.miti99.storescraperbot.bot.table.Table; import com.miti99.storescraperbot.constant.Constant; import com.miti99.storescraperbot.repository.AdminRepository; import com.miti99.storescraperbot.repository.GroupRepository; @@ -41,34 +42,31 @@ public class CheckAppCommand extends BaseStoreScraperBotCommand { var sb = new StringBuilder(); sb.append("Apple Apps:\n"); sb.append("\n"); - sb.append("%-20s | %-10s | %-4s | %-2s\n".formatted("AppId", "Updated", "Days", "OK")); - sb.append("-".repeat(46)); - sb.append("\n"); + var appleTable = new Table("AppId", "Updated", "Days", "OK"); for (var app : group.getAppleApps()) { var appId = app.appId(); var updated = AppStoreScraper.getAppUpdated(appId, app.country()); long days = ChronoUnit.DAYS.between(updated, now); boolean passed = days <= Constant.NUM_DAYS_WARNING_NOT_UPDATED; - sb.append( - "%-20s | %-10s | %-4s | %-2s\n".formatted(appId, updated, days, passed ? "✅" : "❌")); + var icon = passed ? "✅" : "❌"; + appleTable.addRow(appId, updated, days, icon); } + sb.append(appleTable); sb.append("\n"); - sb.append("\n"); + sb.append("Google Apps:\n"); sb.append("\n"); - sb.append("%-20s | %-10s | %-4s | %-2s\n".formatted("AppId", "Updated", "Days", "OK")); - sb.append("-".repeat(46)); - sb.append("\n"); + var googleTable = new Table("AppId", "Updated", "Days", "OK"); for (var app : group.getGoogleApps()) { var appId = app.appId(); var updated = GooglePlayScraper.getLastUpdateOfApp(appId, app.country()); long days = ChronoUnit.DAYS.between(updated, now); boolean passed = days <= Constant.NUM_DAYS_WARNING_NOT_UPDATED; - sb.append( - "%-20s | %-10s | %-4s | %-2s\n".formatted(appId, updated, days, passed ? "✅" : "❌")); + var icon = passed ? "✅" : "❌"; + googleTable.addRow(appId, updated, days, icon); } + sb.append(googleTable); sb.append(""); - sb.append("\n"); StoreScrapeBotTelegramClient.INSTANCE.sendMessage(chat.getId(), sb.toString()); } diff --git a/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppScoreCommand.java b/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppScoreCommand.java index 0073d3e..b0aee45 100644 --- a/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppScoreCommand.java +++ b/src/main/java/com/miti99/storescraperbot/bot/command/CheckAppScoreCommand.java @@ -3,6 +3,7 @@ package com.miti99.storescraperbot.bot.command; import com.miti99.storescraperbot.api.apple.AppStoreScraper; import com.miti99.storescraperbot.api.google.GooglePlayScraper; import com.miti99.storescraperbot.bot.StoreScrapeBotTelegramClient; +import com.miti99.storescraperbot.bot.table.Table; import com.miti99.storescraperbot.repository.AdminRepository; import com.miti99.storescraperbot.repository.GroupRepository; import org.telegram.telegrambots.meta.api.objects.User; @@ -37,32 +38,29 @@ public class CheckAppScoreCommand extends BaseStoreScraperBotCommand { var sb = new StringBuilder(); sb.append("Apple Apps:\n"); sb.append("\n"); - sb.append("%-20s | %-10s | %-10s\n".formatted("AppId", "Score", "Ratings")); - sb.append("-".repeat(43)); - sb.append("\n"); + var appleTable = new Table("AppId", "Score", "Ratings"); for (var app : group.getAppleApps()) { var appId = app.appId(); var country = app.country(); double score = AppStoreScraper.getAppScore(appId, country); long ratings = AppStoreScraper.getAppRatings(appId, country); - sb.append("%-20s | %-10s | %-10s\n".formatted(appId, score, ratings)); + appleTable.addRow(appId, score, ratings); } + sb.append(appleTable); sb.append("\n"); - sb.append("\n"); + sb.append("Google Apps:\n"); sb.append("\n"); - sb.append("%-20s | %-10s | %-10s\n".formatted("AppId", "Score", "Ratings")); - sb.append("-".repeat(43)); - sb.append("\n"); + var googleTable = new Table("AppId", "Score", "Ratings"); for (var app : group.getGoogleApps()) { var appId = app.appId(); var country = app.country(); double score = GooglePlayScraper.getAppScore(appId, country); long ratings = GooglePlayScraper.getAppRatings(appId, country); - sb.append("%-20s | %-10s | %-10s\n".formatted(appId, score, ratings)); + googleTable.addRow(appId, score, ratings); } + sb.append(googleTable); sb.append(""); - sb.append("\n"); StoreScrapeBotTelegramClient.INSTANCE.sendMessage(chat.getId(), sb.toString()); } diff --git a/src/main/java/com/miti99/storescraperbot/bot/command/DeleteGroupCommand.java b/src/main/java/com/miti99/storescraperbot/bot/command/DeleteGroupCommand.java index 8d986b0..5cfd9a6 100644 --- a/src/main/java/com/miti99/storescraperbot/bot/command/DeleteGroupCommand.java +++ b/src/main/java/com/miti99/storescraperbot/bot/command/DeleteGroupCommand.java @@ -1,7 +1,7 @@ package com.miti99.storescraperbot.bot.command; import com.miti99.storescraperbot.bot.StoreScrapeBotTelegramClient; -import com.miti99.storescraperbot.config.Config; +import com.miti99.storescraperbot.env.Environment; import com.miti99.storescraperbot.repository.AdminRepository; import org.telegram.telegrambots.meta.api.objects.User; import org.telegram.telegrambots.meta.api.objects.chat.Chat; @@ -17,7 +17,7 @@ public class DeleteGroupCommand extends BaseStoreScraperBotCommand { @Override protected void executeCommand( TelegramClient telegramClient, User user, Chat chat, String[] arguments) { - if (!Config.ADMIN_IDS.contains(user.getId())) { + if (!Environment.ADMIN_IDS.contains(user.getId())) { StoreScrapeBotTelegramClient.INSTANCE.sendMessage(chat.getId(), "You are not admin"); return; } diff --git a/src/main/java/com/miti99/storescraperbot/bot/command/ListAppCommand.java b/src/main/java/com/miti99/storescraperbot/bot/command/ListAppCommand.java index bb0a54e..138fc77 100644 --- a/src/main/java/com/miti99/storescraperbot/bot/command/ListAppCommand.java +++ b/src/main/java/com/miti99/storescraperbot/bot/command/ListAppCommand.java @@ -1,6 +1,7 @@ package com.miti99.storescraperbot.bot.command; import com.miti99.storescraperbot.bot.StoreScrapeBotTelegramClient; +import com.miti99.storescraperbot.bot.table.Table; import com.miti99.storescraperbot.repository.AdminRepository; import com.miti99.storescraperbot.repository.GroupRepository; import org.telegram.telegrambots.meta.api.objects.User; @@ -35,29 +36,25 @@ public class ListAppCommand extends BaseStoreScraperBotCommand { var sb = new StringBuilder(); sb.append("Apple Apps:\n"); sb.append("\n"); - sb.append("%-2s | %-20s | %-7s\n".formatted("#", "AppId", "Country")); - sb.append("-".repeat(25)); - sb.append("\n"); + var appleTable = new Table("#", "AppId", "Country"); int i = 0; for (var app : group.getAppleApps()) { i++; - sb.append("%-2s | %-20s | %-7s\n".formatted(i, app.appId(), app.country())); + appleTable.addRow(i, app.appId(), app.country()); } + sb.append(appleTable); sb.append("\n"); - sb.append("\n"); - sb.append("\nGoogle Apps:\n"); + sb.append("Google Apps:\n"); sb.append("\n"); - sb.append("%-2s | %-20s | %-7s\n".formatted("#", "AppId", "Country")); - sb.append("-".repeat(35)); - sb.append("\n"); + var googleTable = new Table("#", "AppId", "Country"); i = 0; for (var app : group.getGoogleApps()) { i++; - sb.append("%-2s | %-20s | %-7s\n".formatted(i, app.appId(), app.country())); + googleTable.addRow(i, app.appId(), app.country()); } - sb.append("\n"); - sb.append("\n"); + sb.append(googleTable); + sb.append(""); StoreScrapeBotTelegramClient.INSTANCE.sendMessage(chat.getId(), sb.toString()); } diff --git a/src/main/java/com/miti99/storescraperbot/bot/command/ListGroupCommand.java b/src/main/java/com/miti99/storescraperbot/bot/command/ListGroupCommand.java index 1b69b23..bf1fe52 100644 --- a/src/main/java/com/miti99/storescraperbot/bot/command/ListGroupCommand.java +++ b/src/main/java/com/miti99/storescraperbot/bot/command/ListGroupCommand.java @@ -1,7 +1,7 @@ package com.miti99.storescraperbot.bot.command; import com.miti99.storescraperbot.bot.StoreScrapeBotTelegramClient; -import com.miti99.storescraperbot.config.Config; +import com.miti99.storescraperbot.env.Environment; import com.miti99.storescraperbot.repository.AdminRepository; import org.telegram.telegrambots.meta.api.objects.User; import org.telegram.telegrambots.meta.api.objects.chat.Chat; @@ -17,7 +17,7 @@ public class ListGroupCommand extends BaseStoreScraperBotCommand { @Override protected void executeCommand( TelegramClient telegramClient, User user, Chat chat, String[] arguments) { - if (!Config.ADMIN_IDS.contains(user.getId())) { + if (!Environment.ADMIN_IDS.contains(user.getId())) { StoreScrapeBotTelegramClient.INSTANCE.sendMessage(chat.getId(), "You are not admin"); return; } diff --git a/src/main/java/com/miti99/storescraperbot/bot/table/Table.java b/src/main/java/com/miti99/storescraperbot/bot/table/Table.java new file mode 100644 index 0000000..e976195 --- /dev/null +++ b/src/main/java/com/miti99/storescraperbot/bot/table/Table.java @@ -0,0 +1,53 @@ +package com.miti99.storescraperbot.bot.table; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import kotlin.collections.ArrayDeque; + +public class Table { + private final String[] headers; + private final List rows = new ArrayDeque<>(); + + public Table(String... headers) { + this.headers = headers; + } + + public void addRow(Object... objs) { + if (objs.length != headers.length) { + throw new IllegalArgumentException( + "objs.length (%d) != headers.length (%d)".formatted(objs.length, headers.length)); + } + var row = new String[objs.length]; + for (int i = 0; i < objs.length; i++) { + row[i] = String.valueOf(objs[i]); + } + rows.add(row); + } + + @Override + public String toString() { + int[] maxWidths = new int[headers.length]; + for (int i = 0; i < headers.length; i++) { + maxWidths[i] = headers[i].length(); + } + for (var row : rows) { + for (int i = 0; i < row.length; i++) { + maxWidths[i] = Math.max(maxWidths[i], row[i].length()); + } + } + var formater = + Arrays.stream(maxWidths) + .mapToObj(width -> "%-" + width + "s") + .collect(Collectors.joining(" │ ", "", "\n")); + var sb = new StringBuilder(); + sb.append(formater.formatted((Object[]) headers)); + var rule = + Arrays.stream(maxWidths).mapToObj("─"::repeat).collect(Collectors.joining("─┼─", "", "\n")); + sb.append(rule); + for (var row : rows) { + sb.append(formater.formatted((Object[]) row)); + } + return sb.toString(); + } +} diff --git a/src/main/java/com/miti99/storescraperbot/config/Config.java b/src/main/java/com/miti99/storescraperbot/env/Environment.java similarity index 95% rename from src/main/java/com/miti99/storescraperbot/config/Config.java rename to src/main/java/com/miti99/storescraperbot/env/Environment.java index 48118fa..ee82cf3 100644 --- a/src/main/java/com/miti99/storescraperbot/config/Config.java +++ b/src/main/java/com/miti99/storescraperbot/env/Environment.java @@ -1,4 +1,4 @@ -package com.miti99.storescraperbot.config; +package com.miti99.storescraperbot.env; import com.google.common.base.Strings; import com.miti99.storescraperbot.type.Env; @@ -8,7 +8,7 @@ import java.util.List; import java.util.Optional; import java.util.stream.Collectors; -public class Config { +public class Environment { public static final String COUCHBASE_CONNECTION_STRING = System.getenv("COUCHBASE_CONNECTION_STRING"); public static final String COUCHBASE_USERNAME = System.getenv("COUCHBASE_USERNAME"); diff --git a/src/main/java/com/miti99/storescraperbot/repository/AbstractRepository.java b/src/main/java/com/miti99/storescraperbot/repository/AbstractRepository.java index 594ab5a..b6063d7 100644 --- a/src/main/java/com/miti99/storescraperbot/repository/AbstractRepository.java +++ b/src/main/java/com/miti99/storescraperbot/repository/AbstractRepository.java @@ -3,7 +3,7 @@ package com.miti99.storescraperbot.repository; import com.couchbase.client.java.Collection; import com.couchbase.client.java.kv.UpsertOptions; import com.google.common.base.CaseFormat; -import com.miti99.storescraperbot.config.Config; +import com.miti99.storescraperbot.env.Environment; import com.miti99.storescraperbot.model.AbstractModel; import com.miti99.storescraperbot.util.CouchbaseUtil; import java.lang.reflect.ParameterizedType; @@ -15,7 +15,7 @@ public abstract class AbstractRepository> { public static final String SEPARATOR = "_"; // protected final Class classK = getKeyClass(); protected final Class classV = getDataClass(); - protected final String scopeName = Config.ENV.name().toLowerCase(); + protected final String scopeName = Environment.ENV.name().toLowerCase(); protected final String collectionName; protected AbstractRepository(String collectionName) { diff --git a/src/main/java/com/miti99/storescraperbot/type/AppType.java b/src/main/java/com/miti99/storescraperbot/type/AppType.java deleted file mode 100644 index 67c33c7..0000000 --- a/src/main/java/com/miti99/storescraperbot/type/AppType.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.miti99.storescraperbot.type; - -public enum AppType { - GOOGLE, - APPLE -} diff --git a/src/main/java/com/miti99/storescraperbot/util/CouchbaseUtil.java b/src/main/java/com/miti99/storescraperbot/util/CouchbaseUtil.java index 78334a8..2265d81 100644 --- a/src/main/java/com/miti99/storescraperbot/util/CouchbaseUtil.java +++ b/src/main/java/com/miti99/storescraperbot/util/CouchbaseUtil.java @@ -1,9 +1,9 @@ package com.miti99.storescraperbot.util; -import static com.miti99.storescraperbot.config.Config.COUCHBASE_BUCKET_NAME; -import static com.miti99.storescraperbot.config.Config.COUCHBASE_CONNECTION_STRING; -import static com.miti99.storescraperbot.config.Config.COUCHBASE_PASSWORD; -import static com.miti99.storescraperbot.config.Config.COUCHBASE_USERNAME; +import static com.miti99.storescraperbot.env.Environment.COUCHBASE_BUCKET_NAME; +import static com.miti99.storescraperbot.env.Environment.COUCHBASE_CONNECTION_STRING; +import static com.miti99.storescraperbot.env.Environment.COUCHBASE_PASSWORD; +import static com.miti99.storescraperbot.env.Environment.COUCHBASE_USERNAME; import com.couchbase.client.java.Bucket; import com.couchbase.client.java.Cluster; diff --git a/src/test/java/com/miti99/storescraperbot/api/apple/AppStoreScraperTest.java b/src/test/java/com/miti99/storescraperbot/api/apple/AppStoreScraperTest.java index d447643..11ec689 100644 --- a/src/test/java/com/miti99/storescraperbot/api/apple/AppStoreScraperTest.java +++ b/src/test/java/com/miti99/storescraperbot/api/apple/AppStoreScraperTest.java @@ -6,16 +6,23 @@ import org.junit.jupiter.api.Test; class AppStoreScraperTest { @Test - void testApp() { - var request = new AppleAppRequest("com.mpt.kvtm"); + void testComMptKvtm() { + var request = new AppleAppRequest("com.mpt.kvtm", "vn"); var response = AppStoreScraper.app(request); System.out.println(GsonUtil.toJson(response)); } @Test - void testComMPTBuraco() { + void testComMptBuraco() { var request = new AppleAppRequest("com.mpt.buraco", "mx"); var response = AppStoreScraper.app(request); System.out.println(GsonUtil.toJson(response)); } + + @Test + void testComMptDoudizhu() { + var request = new AppleAppRequest("com.mpt.doudizhu", "hk"); + var response = AppStoreScraper.app(request); + System.out.println(GsonUtil.toJson(response)); + } } diff --git a/src/test/java/com/miti99/storescraperbot/api/google/GooglePlayScraperTest.java b/src/test/java/com/miti99/storescraperbot/api/google/GooglePlayScraperTest.java index 5bdcc59..487d32e 100644 --- a/src/test/java/com/miti99/storescraperbot/api/google/GooglePlayScraperTest.java +++ b/src/test/java/com/miti99/storescraperbot/api/google/GooglePlayScraperTest.java @@ -6,16 +6,23 @@ import org.junit.jupiter.api.Test; class GooglePlayScraperTest { @Test - void testApp() { + void PoolUs() { var request = new GoogleAppRequest("pool.us"); var response = GooglePlayScraper.app(request); System.out.println(GsonUtil.toJson(response)); } @Test - void testComZingplayBuracoMX() { + void testComZingplayBuracoMx() { var request = new GoogleAppRequest("com.zingplay.buraco.mx", "mx"); var response = GooglePlayScraper.app(request); System.out.println(GsonUtil.toJson(response)); } + + @Test + void testComZingplayDoudizhu() { + var request = new GoogleAppRequest("com.zingplay.doudizhu", "hk"); + var response = GooglePlayScraper.app(request); + System.out.println(GsonUtil.toJson(response)); + } }