forked from Minestom/Minestom
-
-
Notifications
You must be signed in to change notification settings - Fork 4
Closed
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or request
Description
After waiting for an internal tool and interesting errors from Intellij, the testing framework should be converted to extensions instead of annotations.
Before:
@EnvironmentTest
class NotificationIntegrationTest {
@Test
void testBuilder() {
var notification = Notification.builder()
.icon(Material.ITEM_FRAME)
.title(Component.text("unit test"))
.frameType(FrameType.TASK)
.build();
assertEquals(FrameType.TASK, notification.type());
assertEquals(ItemStack.of(Material.ITEM_FRAME), notification.icon());
assertEquals(Component.text("unit test"), notification.title());
}
@Test
void testSend(Env env) {
var instance = env.createFlatInstance();
var connection = env.createConnection();
Collector<AdvancementsPacket> advancementsPacketCollector = connection.trackIncoming(AdvancementsPacket.class);
var player = connection.connect(instance, new Pos(0, 42, 0)).join();
var notification = Notification.builder()
.icon(Material.ITEM_FRAME)
.title(Component.text("unit test"))
.frameType(FrameType.TASK)
.build();
notification.send(player);
advancementsPacketCollector.assertCount(2);
AdvancementsPacket advancementsPacket = advancementsPacketCollector.collect().get(1);
assertNotNull(advancementsPacket);
Optional<AdvancementsPacket.AdvancementMapping> advancementMapping = advancementsPacket.advancementMappings().stream().findFirst();
advancementMapping.ifPresent(advancementMapping1 -> {
AdvancementsPacket.Advancement advancement = advancementMapping1.value();
assertFalse(advancement.sendTelemetryData());
var displayData = advancement.displayData();
assertEquals(ItemStack.of(Material.ITEM_FRAME), displayData.icon());
assertEquals(Component.text("unit test"), displayData.title());
assertEquals(FrameType.TASK, displayData.frameType());
});
}
}After:
@ExtendWith(MicrotusExtension.class)
class NotificationIntegrationTest {
@Test
void testBuilder() {
var notification = Notification.builder()
.icon(Material.ITEM_FRAME)
.title(Component.text("unit test"))
.frameType(FrameType.TASK)
.build();
assertEquals(FrameType.TASK, notification.type());
assertEquals(ItemStack.of(Material.ITEM_FRAME), notification.icon());
assertEquals(Component.text("unit test"), notification.title());
}
@Test
void testSend(Env env) {
var instance = env.createFlatInstance();
var connection = env.createConnection();
Collector<AdvancementsPacket> advancementsPacketCollector = connection.trackIncoming(AdvancementsPacket.class);
var player = connection.connect(instance, new Pos(0, 42, 0)).join();
var notification = Notification.builder()
.icon(Material.ITEM_FRAME)
.title(Component.text("unit test"))
.frameType(FrameType.TASK)
.build();
notification.send(player);
advancementsPacketCollector.assertCount(2);
AdvancementsPacket advancementsPacket = advancementsPacketCollector.collect().get(1);
assertNotNull(advancementsPacket);
Optional<AdvancementsPacket.AdvancementMapping> advancementMapping = advancementsPacket.advancementMappings().stream().findFirst();
advancementMapping.ifPresent(advancementMapping1 -> {
AdvancementsPacket.Advancement advancement = advancementMapping1.value();
assertFalse(advancement.sendTelemetryData());
var displayData = advancement.displayData();
assertEquals(ItemStack.of(Material.ITEM_FRAME), displayData.icon());
assertEquals(Component.text("unit test"), displayData.title());
assertEquals(FrameType.TASK, displayData.frameType());
});
}
}Extension Class:
public class MicrotusExtension extends TypeBasedParameterResolver<Env> implements InvocationInterceptor {
@Override
public Env resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext)
throws ParameterResolutionException {
return Env.createInstance(MinecraftServer.updateProcess());
}
@Override
public void interceptTestMethod(Invocation<Void> invocation, ReflectiveInvocationContext<Method> invocationContext, ExtensionContext extensionContext) throws Throwable {
invocation.proceed();
List<Object> arguments = invocationContext.getArguments();
arguments.stream().filter(Env.class::isInstance).findFirst().ifPresent(o -> {
Env env = (Env) o;
env.cleanup();
});
}
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentationenhancementNew feature or requestNew feature or request
Type
Projects
Status
✅ Done