Events

Asserting that Events were fired

Mockbukkit also provides a way to check if Events are fired. Events are Classes that extend org.bukkit.event.Event and are fired by Bukkit.

To check if an event is fired, you can use the PluginManagerMock#assertEventFired(Class<? extends Event>) method. This method takes a class that extends org.bukkit.event.Event. It will then check if an event of that type was fired.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
public class MyPluginTests {
    private ServerMock server;

    @BeforeEach
    public void setUp() {
        server = MockBukkit.mock();
    }

    @AfterEach
    public void tearDown() {
        MockBukkit.unmock();
    }

    @Test
    public void testEvent() {
        Player player = server.addPlayer();
        player.setGameMode(GameMode.CREATIVE);

        server.getPluginManager().assertEventFired(PlayerGameModeChangeEvent.class);
    }
}

If you want to check if an event was fired with a specific value, you can use the PluginManagerMock#assertEventFired(Class<? extends Event>, Predicate<Event>) method.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MyPluginTests {
    private ServerMock server;

    @BeforeEach
    public void setUp() {
        server = MockBukkit.mock();
    }

    @AfterEach
    public void tearDown() {
        MockBukkit.unmock();
    }

    @Test
    public void testEvent() {
        Player player = server.addPlayer();
        player.setGameMode(GameMode.CREATIVE);

        server.getPluginManager().assertEventFired(PlayerGameModeChangeEvent.class, event -> {
            event.getNewGameMode() == GameMode.CREATIVE);
        });
    }
}

You can also set a custom failure message for the assertion by using the PluginManagerMock#assertEventFired(Class<? extends Event>, String) method.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
public class MyPluginTests {
    private ServerMock server;

    @BeforeEach
    public void setUp() {
        server = MockBukkit.mock();
    }

    @AfterEach
    public void tearDown() {
        MockBukkit.unmock();
    }

    @Test
    public void testEvent() {
        Player player = server.addPlayer();
        player.setGameMode(GameMode.CREATIVE);

        server.getPluginManager().assertEventFired(PlayerGameModeChangeEvent.class, "The event was not fired!");
    }
}

Asserting that Events were not fired

You can also check if an event was not fired by using the PluginManagerMock#assertEventNotFired(Class<? extends Event>) method.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
public class MyPluginTests {
    private ServerMock server;

    @BeforeEach
    public void setUp() {
        server = MockBukkit.mock();
    }

    @AfterEach
    public void tearDown() {
        MockBukkit.unmock();
    }

    @Test
    public void testEvent() {
        Player player = server.addPlayer();
        player.setGameMode(GameMode.CREATIVE);

        server.getPluginManager().assertEventNotFired(PlayerMoveEvent.class);
    }
}

You can also set a custom failure message for the assertion by using the PluginManagerMock#assertEventNotFired(Class<? extends Event>, String) method.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
public class MyPluginTests {
    private ServerMock server;

    @BeforeEach
    public void setUp() {
        server = MockBukkit.mock();
    }

    @AfterEach
    public void tearDown() {
        MockBukkit.unmock();
    }

    @Test
    public void testEvent() {
        Player player = server.addPlayer();
        player.setGameMode(GameMode.CREATIVE);

        server.getPluginManager().assertEventNotFired(PlayerMoveEvent.class, "The event was fired!");
    }
}