[AB-94] adding possibility to reference member/role/channel via name for parameters

showing an embed for parameter handling exceptions
adding discord webhook for build status
This commit is contained in:
Sheldan
2021-02-20 23:17:21 +01:00
parent a20fe82e15
commit 9db5889160
12 changed files with 168 additions and 38 deletions

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.command.handler;
import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
@@ -12,6 +13,7 @@ import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@@ -54,7 +56,7 @@ public class MemberParameterHandlerImplTest extends AbstractParameterHandlerTest
oneMemberInIterator();
String input = getUserMention();
CompletableFuture<Member> parsed = (CompletableFuture) testUnit.handleAsync(getPieceWithValue(input), iterators, Member.class, null);
Assert.assertEquals(parsed.join(), member);
Assert.assertEquals(member, parsed.join());
}
@Test
@@ -63,13 +65,35 @@ public class MemberParameterHandlerImplTest extends AbstractParameterHandlerTest
setupMessage();
String input = USER_ID.toString();
CompletableFuture<Member> parsed = (CompletableFuture) testUnit.handleAsync(getPieceWithValue(input), null, Member.class, message);
Assert.assertEquals(parsed.join(), member);
Assert.assertEquals(member, parsed.join());
}
@Test(expected = NumberFormatException.class)
public void testInvalidMemberMention() {
@Test(expected = AbstractoTemplatedException.class)
public void testNotExistingMember() {
String input = "test";
testUnit.handleAsync(getPieceWithValue(input), null, Member.class, null);
when(message.getGuild()).thenReturn(guild);
when(guild.getMembersByName(input, true)).thenReturn(new ArrayList<>());
testUnit.handleAsync(getPieceWithValue(input), null, Member.class, message);
}
@Test(expected = AbstractoTemplatedException.class)
public void testMultipleFoundMemberByName() {
String input = "test";
Member secondMember = Mockito.mock(Member.class);
when(message.getGuild()).thenReturn(guild);
when(guild.getMembersByName(input, true)).thenReturn(Arrays.asList(member, secondMember));
testUnit.handleAsync(getPieceWithValue(input), null, Member.class, message);
}
@Test
public void testFindMemberByName() {
String input = "test";
when(message.getGuild()).thenReturn(guild);
when(guild.getMembersByName(input, true)).thenReturn(Arrays.asList(member));
CompletableFuture<Object> future = testUnit.handleAsync(getPieceWithValue(input), null, Member.class, message);
Member returnedMember = (Member) future.join();
Assert.assertFalse(future.isCompletedExceptionally());
Assert.assertEquals(member, returnedMember);
}
private String getUserMention() {

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.command.handler;
import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.Role;
@@ -8,8 +9,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -50,7 +53,7 @@ public class RoleParameterHandlerImplTest extends AbstractParameterHandlerTest {
oneRoleIterator();
String input = getRoleMention();
Role parsed = (Role) testUnit.handle(getPieceWithValue(input), iterators, Role.class, null);
Assert.assertEquals(parsed, role);
Assert.assertEquals(role, parsed);
}
@Test
@@ -58,13 +61,33 @@ public class RoleParameterHandlerImplTest extends AbstractParameterHandlerTest {
setupMessage();
String input = ROLE_ID.toString();
Role parsed = (Role) testUnit.handle(getPieceWithValue(input), null, Role.class, message);
Assert.assertEquals(parsed, role);
Assert.assertEquals(role, parsed);
}
@Test(expected = NumberFormatException.class)
@Test(expected = AbstractoTemplatedException.class)
public void testInvalidRoleMention() {
String input = "test";
testUnit.handle(getPieceWithValue(input), null, Role.class, null);
when(message.getGuild()).thenReturn(guild);
when(guild.getRolesByName(input, true)).thenReturn(new ArrayList<>());
testUnit.handle(getPieceWithValue(input), null, Role.class, message);
}
@Test(expected = AbstractoTemplatedException.class)
public void testMultipleRolesFoundByName() {
String input = "test";
Role secondRole = Mockito.mock(Role.class);
when(message.getGuild()).thenReturn(guild);
when(guild.getRolesByName(input, true)).thenReturn(Arrays.asList(role, secondRole));
testUnit.handle(getPieceWithValue(input), null, Role.class, message);
}
@Test
public void testFindRoleByName() {
String input = "test";
when(message.getGuild()).thenReturn(guild);
when(guild.getRolesByName(input, true)).thenReturn(Arrays.asList(role));
Role returnedRole = (Role) testUnit.handle(getPieceWithValue(input), null, Role.class, message);
Assert.assertEquals(role, returnedRole);
}
private String getRoleMention() {

View File

@@ -1,5 +1,6 @@
package dev.sheldan.abstracto.core.command.handler;
import dev.sheldan.abstracto.core.command.exception.AbstractoTemplatedException;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.TextChannel;
@@ -8,8 +9,10 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -50,7 +53,7 @@ public class TextChannelParameterHandlerImplTest extends AbstractParameterHandle
oneChannelInIterator();
String input = getChannelMention();
TextChannel parsed = (TextChannel) testUnit.handle(getPieceWithValue(input), iterators, TextChannel.class, null);
Assert.assertEquals(parsed, channel);
Assert.assertEquals(channel, parsed);
}
@Test
@@ -58,15 +61,36 @@ public class TextChannelParameterHandlerImplTest extends AbstractParameterHandle
setupMessage();
String input = CHANNEL_ID.toString();
TextChannel parsed = (TextChannel) testUnit.handle(getPieceWithValue(input), null, TextChannel.class, message);
Assert.assertEquals(parsed, channel);
Assert.assertEquals(channel, parsed);
}
@Test(expected = NumberFormatException.class)
public void testInvalidChannelMention() {
@Test(expected = AbstractoTemplatedException.class)
public void testInvalidChannelName() {
String input = "test";
testUnit.handle(getPieceWithValue(input), null, TextChannel.class, null);
when(message.getGuild()).thenReturn(guild);
when(guild.getTextChannelsByName(input, true)).thenReturn(new ArrayList<>());
testUnit.handle(getPieceWithValue(input), null, TextChannel.class, message);
}
@Test(expected = AbstractoTemplatedException.class)
public void testFoundMultipleChannelsByName() {
String input = "test";
TextChannel secondChannel = Mockito.mock(TextChannel.class);
when(message.getGuild()).thenReturn(guild);
when(guild.getTextChannelsByName(input, true)).thenReturn(Arrays.asList(channel, secondChannel));
testUnit.handle(getPieceWithValue(input), null, TextChannel.class, message);
}
@Test
public void testFindChannelByName() {
String input = "test";
when(message.getGuild()).thenReturn(guild);
when(guild.getTextChannelsByName(input, true)).thenReturn(Arrays.asList(channel));
TextChannel returnedChannel = (TextChannel) testUnit.handle(getPieceWithValue(input), null, TextChannel.class, message);
Assert.assertEquals(channel, returnedChannel);
}
private String getChannelMention() {
return String.format("<#%d>", CHANNEL_ID);
}