Skip to content

Commit

Permalink
Update Unit Tests
Browse files Browse the repository at this point in the history
  • Loading branch information
gmitch215 authored Feb 26, 2025
1 parent 81242fd commit 9cc7c55
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 50 deletions.
41 changes: 21 additions & 20 deletions src/test/java/io/codemc/bot/commands/TestCmdApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,9 @@ public void testAccept() {
String username = "TestApplicationAccept";
Member member = MockJDA.mockMember(username);

MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description", member.getId());
MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description");
Message message = MockJDA.mockMessage("", List.of(embed), REQUEST_CHANNEL);
DatabaseAPI.createRequest(message.getIdLong(), member.getIdLong(), username, "Job");

assertFalse(CommandUtil.hasRole(member, List.of(AUTHOR.getIdLong())));
assertFalse(JenkinsAPI.existsUser(username));
Expand All @@ -67,22 +68,20 @@ public void testAccept() {

String expected = String.format("""
[5/5] Handling Join Request...
- [<:like:935126958193405962>] Message retrieved!
- [<:like:935126958193405962>] Message validated!
- Embed found!
- Found User ID `%s`.
- User and Repository Link found and validated!
- [<:like:935126958193405962>] Request retrieved!
- Found User ID `%s`.
- User and Repository Link found and validated!
- [<:like:935126958193405962>] `accepted-requests` channel found!
- [<:like:935126958193405962>] Join Request removed!
- Thread archived!
- Request Message deleted!
- Thread archived!
- Request Message deleted!
- [<:like:935126958193405962>] Gave User Role!
- Found Author Role!
- Applied Author Role to User!
- Found Author Role!
- Applied Author Role to User!
**Successfully accepted Join Request of user %s!**
""", member.getId(), member.getUser().getEffectiveName());

assertEquals(expected, MockJDA.getMessage(id));

assertTrue(CommandUtil.hasRole(member, List.of(AUTHOR.getIdLong())));
Expand All @@ -97,6 +96,7 @@ public void testAccept() {
assertTrue(JenkinsAPI.deleteUser(username));
assertTrue(NexusAPI.deleteNexus(username));
assertEquals(1, DatabaseAPI.removeUser(username));
assertEquals(1, DatabaseAPI.removeRequest(message.getIdLong()));
}

@Test
Expand All @@ -114,8 +114,9 @@ public void testDeny() {
String username = "TestApplicationDeny";
Member member = MockJDA.mockMember(username);

MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description", member.getId());
MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description");
Message message = MockJDA.mockMessage("", List.of(embed), REQUEST_CHANNEL);
DatabaseAPI.createRequest(message.getIdLong(), member.getIdLong(), username, "Job");

assertFalse(CommandUtil.hasRole(member, List.of(AUTHOR.getIdLong())));
assertFalse(JenkinsAPI.existsUser(username));
Expand All @@ -124,17 +125,15 @@ public void testDeny() {

long id = MockJDA.assertSlashCommandEvent(listener, Map.of("id", message.getId(), "reason", "Denied"), (MessageEmbed[]) null);

String expected = String.format( """
String expected = String.format("""
[<:like:935126958193405962>] Handling of Join Request complete!
- [<:like:935126958193405962>] Message retrieved!
- [<:like:935126958193405962>] Message validated!
- Embed found!
- Found User ID `%s`.
- User and Repository Link found and validated!
- [<:like:935126958193405962>] Request retrieved!
- Found User ID `%s`.
- User and Repository found and validated!
- [<:like:935126958193405962>] `rejected-requests` channel found!
- [<:like:935126958193405962>] Join Request removed!
- Thread archived!
- Request Message deleted!
- Thread archived!
- Request Message deleted!
- [<:like:935126958193405962>] Finished rejecting join request of %s!
""", member.getId(), member.getUser().getEffectiveName());

Expand All @@ -148,6 +147,8 @@ public void testDeny() {
MockJDA.assertSlashCommandEvent(listener, Map.of(), CommandUtil.embedError("Message ID was not present!"));
MockJDA.assertSlashCommandEvent(listener, Map.of("id", "abcd"), CommandUtil.embedError("Invalid message ID!"));
MockJDA.assertSlashCommandEvent(listener, Map.of("id", "0"), CommandUtil.embedError("Message ID or Reason were not present!"));

assertEquals(1, DatabaseAPI.removeRequest(message.getIdLong()));
}

}
8 changes: 6 additions & 2 deletions src/test/java/io/codemc/bot/listeners/TestButtonListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,9 @@ public void testApplicationAccept() {
String username = "TestButtonListenerAccept";
Member member = MockJDA.mockMember(username);

MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description", member.getId());
MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description");
Message message = MockJDA.mockMessage("", List.of(embed), REQUEST_CHANNEL);
DatabaseAPI.createRequest(message.getIdLong(), member.getIdLong(), username, "Job");

JenkinsAPI.deleteUser(username);
NexusAPI.deleteNexus(username);
Expand All @@ -61,6 +62,7 @@ public void testApplicationAccept() {
assertTrue(JenkinsAPI.deleteUser(username));
assertTrue(NexusAPI.deleteNexus(username));
assertEquals(1, DatabaseAPI.removeUser(username));
assertEquals(1, DatabaseAPI.removeRequest(message.getIdLong()));
}

@Test
Expand All @@ -69,8 +71,9 @@ public void testApplicationDeny() {
String username = "TestButtonListenerDeny";
Member member = MockJDA.mockMember(username);

MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description", member.getId());
MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description");
Message message = MockJDA.mockMessage("", List.of(embed), REQUEST_CHANNEL);
DatabaseAPI.createRequest(message.getIdLong(), member.getIdLong(), username, "Job");

JenkinsAPI.deleteUser(username);
NexusAPI.deleteNexus(username);
Expand All @@ -85,6 +88,7 @@ public void testApplicationDeny() {
assertFalse(CommandUtil.hasRole(member, List.of(AUTHOR.getIdLong())));
assertFalse(JenkinsAPI.existsUser(username));
assertFalse(NexusAPI.exists(username));
assertEquals(1, DatabaseAPI.removeRequest(message.getIdLong()));
}

@Test
Expand Down
23 changes: 13 additions & 10 deletions src/test/java/io/codemc/bot/listeners/TestModalListener.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.codemc.bot.listeners;

import io.codemc.api.database.DatabaseAPI;
import io.codemc.api.jenkins.JenkinsAPI;
import io.codemc.bot.MockCodeMCBot;
import io.codemc.bot.MockJDA;
Expand Down Expand Up @@ -29,7 +30,6 @@ public class TestModalListener {
public static void init() {
listener = new ModalListener(MockCodeMCBot.INSTANCE);
}


@Test
@DisplayName("Test Submit")
Expand Down Expand Up @@ -80,10 +80,12 @@ public void testDenyApplication() {
String username = "TestModalApplicationDeny";
Member member = MockJDA.mockMember(username);

MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description", member.getId());
MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description");

Message message = MockJDA.mockMessage("", List.of(embed), REQUEST_CHANNEL);
Message message2 = MockJDA.mockMessage("", List.of(embed), REQUEST_CHANNEL);
DatabaseAPI.createRequest(message.getIdLong(), member.getIdLong(), username, "Job");
DatabaseAPI.createRequest(message2.getIdLong(), member.getIdLong(), username, "Job");

Modal m1 = MockJDA.mockModal("deny_application:" + message.getId(), "Deny Application");
Modal m2 = MockJDA.mockModal("deny_application:" + message2.getId(), "Deny Application");
Expand All @@ -93,15 +95,13 @@ public void testDenyApplication() {

String expected = String.format("""
[<:like:935126958193405962>] Handling of Join Request complete!
- [<:like:935126958193405962>] Message retrieved!
- [<:like:935126958193405962>] Message validated!
- Embed found!
- Found User ID `%s`.
- User and Repository Link found and validated!
- [<:like:935126958193405962>] Request retrieved!
- Found User ID `%s`.
- User and Repository found and validated!
- [<:like:935126958193405962>] `rejected-requests` channel found!
- [<:like:935126958193405962>] Join Request removed!
- Thread archived!
- Request Message deleted!
- Thread archived!
- Request Message deleted!
- [<:like:935126958193405962>] Finished rejecting join request of %s!
""", member.getId(), member.getUser().getEffectiveName());

Expand All @@ -113,6 +113,9 @@ public void testDenyApplication() {

Modal m4 = MockJDA.mockModal("deny_application:abcd", "Deny Application");
MockJDA.assertModalInteractionEvent(listener, m4, REQUEST_CHANNEL, Map.of(), CommandUtil.embedError("Received invalid message ID: abcd"));

assertEquals(1, DatabaseAPI.removeRequest(message.getIdLong()));
assertEquals(1, DatabaseAPI.removeRequest(message2.getIdLong()));
}

@Test
Expand Down
43 changes: 25 additions & 18 deletions src/test/java/io/codemc/bot/utils/TestApplicationHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,9 @@ public void testHandleAccepted() {
Member member = MockJDA.mockMember(username);
InteractionHook hook = MockJDA.mockInteractionHook(SELF, REQUEST_CHANNEL, InteractionType.MODAL_SUBMIT);

MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description", member.getId());
MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description");
Message message = MockJDA.mockMessage("", List.of(embed), REQUEST_CHANNEL);
DatabaseAPI.createRequest(message.getIdLong(), member.getIdLong(), username, "Job");

assertFalse(CommandUtil.hasRole(member, List.of(AUTHOR.getIdLong())));
assertFalse(JenkinsAPI.existsUser(username));
Expand All @@ -41,7 +42,7 @@ public void testHandleAccepted() {
);

String jenkinsUrl = MockCodeMCBot.INSTANCE.getConfigHandler().getString("jenkins", "url") + "/job/" + username + "/job/Job/";
MessageCreateData expected = ApplicationHandler.getMessage(MockCodeMCBot.INSTANCE, member.getId(), "userLink", "repoLink", jenkinsUrl, SELF.getUser(), true);
MessageCreateData expected = ApplicationHandler.getMessage(MockCodeMCBot.INSTANCE, member.getId(), "https://github.com/TestApplicationHandlerAccepted", "https://github.com/TestApplicationHandlerAccepted/Job", jenkinsUrl, SELF.getUser(), true);
String content = MockJDA.getLatestMessage(ACCEPTED_CHANNEL);
List<MessageEmbed> embeds = MockJDA.getLatestEmbeds(ACCEPTED_CHANNEL);

Expand All @@ -57,6 +58,7 @@ public void testHandleAccepted() {
assertTrue(JenkinsAPI.deleteUser(username));
assertTrue(NexusAPI.deleteNexus(username));
assertEquals(1, DatabaseAPI.removeUser(username));
assertEquals(1, DatabaseAPI.removeRequest(message.getIdLong()));
}

@Test
Expand All @@ -66,8 +68,9 @@ public void testHandleRejected() {
Member member = MockJDA.mockMember(username);
InteractionHook hook = MockJDA.mockInteractionHook(SELF, REQUEST_CHANNEL, InteractionType.MODAL_SUBMIT);

MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description", member.getId());
MessageEmbed embed = CommandUtil.requestEmbed("[" + username + "](userLink)", "[Job](repoLink)", member.getAsMention(), "description");
Message message = MockJDA.mockMessage("", List.of(embed), REQUEST_CHANNEL);
DatabaseAPI.createRequest(message.getIdLong(), member.getIdLong(), username, "Job");

assertFalse(CommandUtil.hasRole(member, List.of(AUTHOR.getIdLong())));
assertFalse(JenkinsAPI.existsUser(username));
Expand All @@ -77,8 +80,10 @@ public void testHandleRejected() {
ApplicationHandler.handle(
MockCodeMCBot.INSTANCE, hook, GUILD, message.getIdLong(), "Denied", false
);

MessageCreateData expected = ApplicationHandler.getMessage(MockCodeMCBot.INSTANCE, member.getId(), "userLink", "repoLink", "Denied", SELF.getUser(), false);

String userLink = "https://github.com/" + username;
String repoLink = "https://github.com/" + username + "/Job";
MessageCreateData expected = ApplicationHandler.getMessage(MockCodeMCBot.INSTANCE, member.getId(), userLink, repoLink, "Denied", SELF.getUser(), false);
String content = MockJDA.getLatestMessage(REJECTED_CHANNEL);
List<MessageEmbed> embeds = MockJDA.getLatestEmbeds(REJECTED_CHANNEL);

Expand All @@ -89,6 +94,8 @@ public void testHandleRejected() {
assertFalse(JenkinsAPI.existsUser(username));
assertFalse(NexusAPI.exists(username));
assertNull(DatabaseAPI.getUser(username));

assertEquals(1, DatabaseAPI.removeRequest(message.getIdLong()));
}

@Test
Expand All @@ -101,41 +108,41 @@ public void testHandleErrors() {
MockCodeMCBot.INSTANCE, h1, GUILD, m1.getIdLong(), null, true
);
assertEmbeds(
List.of(CommandUtil.embedError("Provided Message does not have any embeds.")), MockJDA.getEmbeds(h1.getIdLong()), true
List.of(CommandUtil.embedError("Request not found in Database.")), MockJDA.getEmbeds(h1.getIdLong()), true
);

InteractionHook h2 = MockJDA.mockInteractionHook(SELF, REQUEST_CHANNEL, InteractionType.MODAL_SUBMIT);
MessageEmbed e2 = CommandUtil.getEmbed().setTitle("A").build();
Message m2 = MockJDA.mockMessage("", List.of(e2), REQUEST_CHANNEL);
DatabaseAPI.createRequest(123, 0, "", "");

ApplicationHandler.handle(
MockCodeMCBot.INSTANCE, h2, GUILD, m2.getIdLong(), null, true
MockCodeMCBot.INSTANCE, h2, GUILD, 123, null, true
);
assertEmbeds(
List.of(CommandUtil.embedError("Embed does not have a Footer or any Embed Fields")), MockJDA.getEmbeds(h2.getIdLong()), true
List.of(CommandUtil.embedError("Request does not have a valid user.")), MockJDA.getEmbeds(h2.getIdLong()), true
);
DatabaseAPI.removeRequest(123);

InteractionHook h3 = MockJDA.mockInteractionHook(SELF, REQUEST_CHANNEL, InteractionType.MODAL_SUBMIT);
MessageEmbed e3 = CommandUtil.getEmbed().setFooter(" ").addField("null", "null", true).build();
Message m3 = MockJDA.mockMessage("", List.of(e3), REQUEST_CHANNEL);
DatabaseAPI.createRequest(1, 1, "user", "");

ApplicationHandler.handle(
MockCodeMCBot.INSTANCE, h3, GUILD, m3.getIdLong(), null, true
MockCodeMCBot.INSTANCE, h3, GUILD, 1, null, true
);
assertEmbeds(
List.of(CommandUtil.embedError("Embed does not have a valid footer.")), MockJDA.getEmbeds(h3.getIdLong()), true
List.of(CommandUtil.embedError("Database Request is missing values.")), MockJDA.getEmbeds(h3.getIdLong()), true
);
DatabaseAPI.removeRequest(1);

InteractionHook h4 = MockJDA.mockInteractionHook(SELF, REQUEST_CHANNEL, InteractionType.MODAL_SUBMIT);
MessageEmbed e4 = CommandUtil.getEmbed().setFooter("id").addField("null", "null", true).build();
Message m4 = MockJDA.mockMessage("", List.of(e4), REQUEST_CHANNEL);
DatabaseAPI.createRequest(2, 2, "", "job");

ApplicationHandler.handle(
MockCodeMCBot.INSTANCE, h4, GUILD, m4.getIdLong(), null, true
MockCodeMCBot.INSTANCE, h4, GUILD, 2, null, true
);
assertEmbeds(
List.of(CommandUtil.embedError("Embed does not have all valid Fields.")), MockJDA.getEmbeds(h4.getIdLong()), true
List.of(CommandUtil.embedError("Database Request is missing values.")), MockJDA.getEmbeds(h3.getIdLong()), true
);
DatabaseAPI.removeRequest(2);
}

}

0 comments on commit 9cc7c55

Please sign in to comment.