[AB-97] adding react command

we are now actively loading messages in case its a parameter, because the provided message is only partially available
This commit is contained in:
Sheldan
2021-04-13 23:47:22 +02:00
parent 23379e4498
commit 537fd85be8
36 changed files with 820 additions and 22 deletions

View File

@@ -5,7 +5,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.service.ChannelService;
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
import dev.sheldan.abstracto.entertainment.model.ChooseResponseModel;
import dev.sheldan.abstracto.entertainment.model.command.ChooseResponseModel;
import dev.sheldan.abstracto.entertainment.service.EntertainmentService;
import org.junit.Assert;
import org.junit.Test;

View File

@@ -5,7 +5,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.service.ChannelService;
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
import dev.sheldan.abstracto.entertainment.model.EightBallResponseModel;
import dev.sheldan.abstracto.entertainment.model.command.EightBallResponseModel;
import dev.sheldan.abstracto.entertainment.service.EntertainmentService;
import org.junit.Assert;
import org.junit.Test;

View File

@@ -5,7 +5,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.service.ChannelService;
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
import dev.sheldan.abstracto.entertainment.model.LoveCalcResponseModel;
import dev.sheldan.abstracto.entertainment.model.command.LoveCalcResponseModel;
import dev.sheldan.abstracto.entertainment.service.EntertainmentService;
import org.junit.Assert;
import org.junit.Test;

View File

@@ -6,7 +6,7 @@ import dev.sheldan.abstracto.core.service.ChannelService;
import dev.sheldan.abstracto.core.service.ConfigService;
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
import dev.sheldan.abstracto.entertainment.model.RollResponseModel;
import dev.sheldan.abstracto.entertainment.model.command.RollResponseModel;
import dev.sheldan.abstracto.entertainment.service.EntertainmentService;
import org.junit.Assert;
import org.junit.Test;

View File

@@ -5,7 +5,7 @@ import dev.sheldan.abstracto.core.command.execution.CommandResult;
import dev.sheldan.abstracto.core.service.ChannelService;
import dev.sheldan.abstracto.core.test.command.CommandConfigValidator;
import dev.sheldan.abstracto.core.test.command.CommandTestUtilities;
import dev.sheldan.abstracto.entertainment.model.RouletteResponseModel;
import dev.sheldan.abstracto.entertainment.model.command.RouletteResponseModel;
import dev.sheldan.abstracto.entertainment.service.EntertainmentService;
import org.junit.Assert;
import org.junit.Test;

View File

@@ -1,21 +1,34 @@
package dev.sheldan.abstracto.entertainment.service;
import com.google.gson.Gson;
import com.google.gson.stream.JsonReader;
import dev.sheldan.abstracto.core.service.ConfigService;
import dev.sheldan.abstracto.entertainment.config.EntertainmentFeatureConfig;
import dev.sheldan.abstracto.entertainment.exception.ReactDuplicateCharacterException;
import dev.sheldan.abstracto.entertainment.model.ReactMapping;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.Member;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.ArgumentMatchers;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnitRunner;
import org.springframework.core.io.Resource;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.Reader;
import java.security.SecureRandom;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.TreeSet;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
@RunWith(MockitoJUnitRunner.class)
@@ -29,6 +42,19 @@ public class EntertainmentServiceBeanTest {
@Mock
private ConfigService configService;
// requires the org.mockito.plugins.MockMaker file
@Mock
private Gson gson;
@Mock
private Resource resource;
@Mock
private Member member;
@Mock
private Member secondMember;
private static final String INPUT_TEXT = "input";
private static final int RANDOM_VALUE = 0;
@@ -94,4 +120,99 @@ public class EntertainmentServiceBeanTest {
Assert.assertEquals(choices.get(0), choiceTaken);
}
@Test
public void testMocking() {
Assert.assertEquals("AsDf", testUnit.createMockText("asdf", member, secondMember));
}
@Test
public void testMockingUpperCase() {
Assert.assertEquals("AsDf", testUnit.createMockText("ASDF", member, secondMember));
}
@Test
public void testMockingNull() {
Assert.assertEquals("", testUnit.createMockText(null, member, secondMember));
}
@Test
public void testConvertTextToEmojis() throws IOException {
setupMappings();
Assert.assertEquals("bceg", testUnit.convertTextToEmojisAsString("asdf", false));
}
@Test(expected = ReactDuplicateCharacterException.class)
public void testConvertTextToEmojisDuplicateReplacement() throws IOException {
setupMappings();
testUnit.convertTextToEmojisAsString("aa", false);
}
@Test
public void testConvertTextToEmojisNoReplacementFound() throws IOException {
setupMappings();
Assert.assertEquals("", testUnit.convertTextToEmojisAsString("e", false));
}
@Test
public void testConvertTextToEmojisNullInput() throws IOException {
setupMappings();
Assert.assertEquals("", testUnit.convertTextToEmojisAsString(null, false));
}
@Test
public void testConvertTextToEmojisDoubleUnicodePassThrough() throws IOException {
setupMappings();
Assert.assertEquals("\uD83C\uDD98", testUnit.convertTextToEmojisAsString("\uD83C\uDD98", false));
}
@Test
public void testConvertTextToEmojisDuplicate() throws IOException {
setupMappings();
Assert.assertEquals("bb", testUnit.convertTextToEmojisAsString("aa", true));
}
@Test
public void testConvertTextToEmojisCombinations() throws IOException {
setupMappings();
Assert.assertEquals("\uD83C\uDD98", testUnit.convertTextToEmojisAsString("kk", true));
}
@Test
public void testConvertTextToEmojisCombinationWithNormalText() throws IOException {
setupMappings();
Assert.assertEquals("\uD83C\uDD98l", testUnit.convertTextToEmojisAsString("kkk", false));
}
@Test
public void testConvertTextToEmojisCombinationWithNormalTextMixed() throws IOException {
setupMappings();
Assert.assertEquals("\uD83C\uDD98lm", testUnit.convertTextToEmojisAsString("kkkk", false));
}
@Test
public void testConvertTextToEmojisCombinationDuplicates() throws IOException {
setupMappings();
Assert.assertEquals("\uD83C\uDD98\uD83C\uDD98", testUnit.convertTextToEmojisAsString("kkkk", true));
}
private void setupMappings() throws IOException {
ReactMapping mapping = Mockito.mock(ReactMapping.class);
HashMap<String, List<String>> singleMappings = new HashMap<>();
singleMappings.put("a", Arrays.asList("b"));
singleMappings.put("s", Arrays.asList("c"));
singleMappings.put("d", Arrays.asList("e"));
singleMappings.put("f", Arrays.asList("g"));
singleMappings.put("k", Arrays.asList("l", "m"));
when(resource.getInputStream()).thenReturn(new ByteArrayInputStream(new byte[]{1}));
when(mapping.getSingle()).thenReturn(singleMappings);
HashMap<String, String> combinations = new HashMap<>();
combinations.put("kk", "\uD83C\uDD98");
when(mapping.getCombination()).thenReturn(combinations);
TreeSet<String> combinationKeys = new TreeSet<>();
combinationKeys.add("kk");
when(mapping.getCombinationKeys()).thenReturn(combinationKeys);
when(gson.fromJson(any(JsonReader.class), eq(ReactMapping.class))).thenReturn(mapping);
testUnit.postConstruct();
}
}