|
13 | 13 | import org.junit.jupiter.api.DisplayName; |
14 | 14 | import org.junit.jupiter.api.Test; |
15 | 15 |
|
| 16 | +import io.codemc.api.database.DatabaseAPI; |
16 | 17 | import io.codemc.api.jenkins.JenkinsAPI; |
17 | 18 | import io.codemc.api.nexus.NexusAPI; |
18 | 19 | import io.codemc.bot.MockCodeMCBot; |
19 | 20 | import io.codemc.bot.MockJDA; |
20 | 21 | import io.codemc.bot.commands.CmdCodeMC.Jenkins; |
| 22 | +import io.codemc.bot.commands.CmdCodeMC.Link; |
21 | 23 | import io.codemc.bot.commands.CmdCodeMC.Nexus; |
22 | 24 | import io.codemc.bot.commands.CmdCodeMC.Remove; |
| 25 | +import io.codemc.bot.commands.CmdCodeMC.Unlink; |
23 | 26 | import io.codemc.bot.commands.CmdCodeMC.Validate; |
24 | | -import io.codemc.bot.utils.APIUtil; |
25 | 27 | import io.codemc.bot.utils.CommandUtil; |
| 28 | +import net.dv8tion.jda.api.entities.Member; |
26 | 29 |
|
27 | 30 | public class TestCmdCodeMC { |
28 | 31 |
|
@@ -165,9 +168,74 @@ public void testValidate() { |
165 | 168 | assertNotNull(NexusAPI.getNexusUser("TestValidate_31")); |
166 | 169 | assertNotNull(NexusAPI.getNexusUser("TestValidate_32")); |
167 | 170 |
|
168 | | - MockCodeMCBot.INSTANCE.delete( "TestValidate_30"); |
| 171 | + MockCodeMCBot.INSTANCE.delete("TestValidate_30"); |
169 | 172 | MockCodeMCBot.INSTANCE.delete("TestValidate_31"); |
170 | 173 | MockCodeMCBot.INSTANCE.delete("TestValidate_32"); |
171 | 174 | } |
172 | 175 |
|
| 176 | + @Test |
| 177 | + @DisplayName("Test /codemc link") |
| 178 | + public void testLink() { |
| 179 | + Link link = (Link) command.getChildren()[4]; |
| 180 | + |
| 181 | + assertEquals("link", link.getName()); |
| 182 | + assertEquals(2, link.getOptions().size()); |
| 183 | + assertFalse(link.allowedRoles.isEmpty()); |
| 184 | + |
| 185 | + TestCommandListener listener = new TestCommandListener(link); |
| 186 | + |
| 187 | + Member m1 = MockJDA.mockMember("TestLink"); |
| 188 | + MockJDA.GUILD.addRoleToMember(m1, MockJDA.AUTHOR); |
| 189 | + |
| 190 | + MockCodeMCBot.INSTANCE.create("TestLink", "Job"); |
| 191 | + DatabaseAPI.removeUser("TestLink"); |
| 192 | + |
| 193 | + assertNull(DatabaseAPI.getUser("TestLink")); |
| 194 | + MockJDA.assertSlashCommandEvent(listener, Map.of("username", "TestLink", "discord", m1), CommandUtil.embedSuccess("Linked Discord User TestLink to Jenkins User TestLink!")); |
| 195 | + assertNotNull(DatabaseAPI.getUser("TestLink")); |
| 196 | + assertEquals(m1.getIdLong(), DatabaseAPI.getUser("TestLink").getDiscord()); |
| 197 | + |
| 198 | + MockJDA.assertSlashCommandEvent(listener, Map.of("username", "TestLink", "discord", m1), CommandUtil.embedSuccess("Linked Discord User TestLink to Jenkins User TestLink!")); |
| 199 | + MockJDA.assertSlashCommandEvent(listener, Map.of(), CommandUtil.embedError("Invalid Jenkins User provided!")); |
| 200 | + MockJDA.assertSlashCommandEvent(listener, Map.of("username", "Inexistent", "discord", m1), CommandUtil.embedError("The user does not have a Jenkins account!")); |
| 201 | + MockJDA.assertSlashCommandEvent(listener, Map.of("username", "TestLink"), CommandUtil.embedError("Invalid Discord User provided!")); |
| 202 | + |
| 203 | + MockJDA.GUILD.removeRoleFromMember(m1, MockJDA.AUTHOR); |
| 204 | + |
| 205 | + MockJDA.assertSlashCommandEvent(listener, Map.of("username", "TestLink", "discord", m1), CommandUtil.embedError("The user is not an Author!")); |
| 206 | + |
| 207 | + MockCodeMCBot.INSTANCE.delete("TestLink"); |
| 208 | + DatabaseAPI.removeUser("TestLink"); |
| 209 | + } |
| 210 | + |
| 211 | + @Test |
| 212 | + @DisplayName("Test /codemc unlink") |
| 213 | + public void testUnlink() { |
| 214 | + Unlink unlink = (Unlink) command.getChildren()[5]; |
| 215 | + |
| 216 | + assertEquals("unlink", unlink.getName()); |
| 217 | + assertEquals(2, unlink.getOptions().size()); |
| 218 | + assertFalse(unlink.allowedRoles.isEmpty()); |
| 219 | + |
| 220 | + TestCommandListener listener = new TestCommandListener(unlink); |
| 221 | + |
| 222 | + Member m1 = MockJDA.mockMember("TestUnlink"); |
| 223 | + MockJDA.GUILD.addRoleToMember(m1, MockJDA.AUTHOR); |
| 224 | + |
| 225 | + DatabaseAPI.removeUser("TestUnlink"); |
| 226 | + MockCodeMCBot.INSTANCE.delete("TestUnlink"); |
| 227 | + MockCodeMCBot.INSTANCE.create("TestUnlink", "Job"); |
| 228 | + DatabaseAPI.addUser("TestUnlink", m1.getIdLong()); |
| 229 | + |
| 230 | + assertNotNull(DatabaseAPI.getUser("TestUnlink")); |
| 231 | + MockJDA.assertSlashCommandEvent(listener, Map.of("discord", m1), CommandUtil.embedSuccess("Unlinked Discord User TestUnlink from their Jenkins/Nexus account!")); |
| 232 | + assertNull(DatabaseAPI.getUser("TestUnlink")); |
| 233 | + |
| 234 | + MockJDA.assertSlashCommandEvent(listener, Map.of(), CommandUtil.embedError("Invalid Discord User provided!")); |
| 235 | + MockJDA.assertSlashCommandEvent(listener, Map.of("discord", m1), CommandUtil.embedError("The user is not linked to any Jenkins/Nexus account!")); |
| 236 | + |
| 237 | + MockCodeMCBot.INSTANCE.delete("TestUnlink"); |
| 238 | + DatabaseAPI.removeUser("TestUnlink"); |
| 239 | + } |
| 240 | + |
173 | 241 | } |
0 commit comments