Minestom/src/test/java/net/minestom/server/utils/TranslationIntegrationTest....

68 lines
2.7 KiB
Java

package net.minestom.server.utils;
import net.kyori.adventure.key.Key;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.translation.GlobalTranslator;
import net.kyori.adventure.translation.TranslationRegistry;
import net.minestom.server.adventure.MinestomAdventure;
import net.minestom.testing.Env;
import net.minestom.testing.EnvTest;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.network.packet.server.play.SystemChatPacket;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.text.MessageFormat;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
@EnvTest
public class TranslationIntegrationTest {
@BeforeAll
static void translator() {
final var translator = TranslationRegistry.create(Key.key("test.reg"));
translator.register("test.key", MinestomAdventure.getDefaultLocale(), new MessageFormat("This is a test message", MinestomAdventure.getDefaultLocale()));
GlobalTranslator.translator().addSource(translator);
}
@Test
public void testTranslationEnabled(final Env env) {
final var instance = env.createFlatInstance();
final var connection = env.createConnection();
final var player = connection.connect(instance, new Pos(0, 40, 0)).join();
final var collector = connection.trackIncoming(SystemChatPacket.class);
MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION = true;
final var message = Component.translatable("test.key");
final var packet = new SystemChatPacket(message, false);
PacketUtils.sendGroupedPacket(List.of(player), packet);
// the message should not be changed if translations are enabled.
// the translation of the message itself will be proceeded in PlayerConnectionImpl class
collector.assertSingle(received -> {
assertNotEquals(message, received.message());
});
}
@Test
public void testTranslationDisabled(final Env env) {
final var instance = env.createFlatInstance();
final var connection = env.createConnection();
final var player = connection.connect(instance, new Pos(0, 40, 0)).join();
final var collector = connection.trackIncoming(SystemChatPacket.class);
MinestomAdventure.AUTOMATIC_COMPONENT_TRANSLATION = false;
final var message = Component.translatable("test.key");
final var packet = new SystemChatPacket(message, false);
PacketUtils.sendGroupedPacket(List.of(player), packet);
collector.assertSingle(received -> {
assertEquals(message, received.message());
});
}
}