diff --git a/src/main/java/com/eternalcode/discordapp/review/GitHubReviewService.java b/src/main/java/com/eternalcode/discordapp/review/GitHubReviewService.java index 906a9105..a58df7b8 100644 --- a/src/main/java/com/eternalcode/discordapp/review/GitHubReviewService.java +++ b/src/main/java/com/eternalcode/discordapp/review/GitHubReviewService.java @@ -42,7 +42,7 @@ public String createReview(Guild guild, String url, JDA jda) { GitHubPullRequest pullRequest = result.get(); if (!this.checkPullRequestTitle(pullRequest)) { - return "Pull request title is not valid, please use GH- as title"; + return "Pull request title is not valid, please use GH- as title and keep it under 100 characters"; } long messageId = this.createReviewForumPost(guild, pullRequest); @@ -59,7 +59,8 @@ public String createReview(Guild guild, String url, JDA jda) { public boolean checkPullRequestTitle(GitHubPullRequest url) throws IOException { String pullRequestTitleFromUrl = GitHubReviewUtil.getPullRequestTitleFromUrl(url, this.appConfig.githubToken); - return GitHubReviewUtil.isPullRequestTitleValid(pullRequestTitleFromUrl); + return GitHubReviewUtil.isPullRequestTitleValid(pullRequestTitleFromUrl) && + GitHubReviewUtil.isTitleLengthValid(pullRequestTitleFromUrl); } public long createReviewForumPost(Guild guild, GitHubPullRequest pullRequest) throws IOException { diff --git a/src/main/java/com/eternalcode/discordapp/review/GitHubReviewUtil.java b/src/main/java/com/eternalcode/discordapp/review/GitHubReviewUtil.java index 1eb59298..d9387e06 100644 --- a/src/main/java/com/eternalcode/discordapp/review/GitHubReviewUtil.java +++ b/src/main/java/com/eternalcode/discordapp/review/GitHubReviewUtil.java @@ -16,6 +16,7 @@ public final class GitHubReviewUtil { private static final String GITHUB_PULL_REQUEST_TITLE_CONVENTION = "^(GH)-\\d+ .+$"; + private static final int MAX_TITLE_LENGTH = 100; private static final OkHttpClient HTTP_CLIENT = new OkHttpClient(); private static final Gson GSON = new Gson(); @@ -29,6 +30,10 @@ public static boolean isPullRequestTitleValid(String title) { return title.matches(GITHUB_PULL_REQUEST_TITLE_CONVENTION); } + public static boolean isTitleLengthValid(String title) { + return title.length() <= MAX_TITLE_LENGTH; + } + public static List getReviewers(GitHubPullRequest pullRequest, String githubToken) { Request request = new Request.Builder() .url(pullRequest.toApiUrl()) diff --git a/src/test/java/com/eternalcode/discordapp/review/GitHubReviewUtilTest.java b/src/test/java/com/eternalcode/discordapp/review/GitHubReviewUtilTest.java index 0933527d..a2f58214 100644 --- a/src/test/java/com/eternalcode/discordapp/review/GitHubReviewUtilTest.java +++ b/src/test/java/com/eternalcode/discordapp/review/GitHubReviewUtilTest.java @@ -95,6 +95,21 @@ Stream testInvalidPullRequestTitles() { })); } + @Test + @DisplayName("Test isTitleLengthValid with a valid title") + void testValidTitleLength() { + String title = "GH-123 This is a valid title"; + assertTrue(GitHubReviewUtil.isTitleLengthValid(title), "Valid Title: " + title); + } + + @Test + @DisplayName("Test isTitleLengthValid with an invalid title") + void testInvalidTitleLength() { + String title = "GH-123 This is a very long title. It is so long that it should be " + + "considered invalid, but we are testing it all the same to ensure that our title length validation works as expected."; + assertFalse(GitHubReviewUtil.isTitleLengthValid(title), "Invalid Title: " + title); + } + @Test @DisplayName("Test getReviewers functionality") void testGetReviewers() throws Exception { @@ -187,4 +202,4 @@ private void setMockResponse(String jsonResponse) { .setBody(jsonResponse) .addHeader("Content-Type", "application/json")); } -} \ No newline at end of file +}