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.

 1public class MyPluginTests {
 2    private ServerMock server;
 3
 4    @BeforeEach
 5    public void setUp() {
 6        server = MockBukkit.mock();
 7    }
 8
 9    @AfterEach
10    public void tearDown() {
11        MockBukkit.unmock();
12    }
13
14    @Test
15    public void testEvent() {
16        Player player = server.addPlayer();
17        player.setGameMode(GameMode.CREATIVE);
18
19        server.getPluginManager().assertEventFired(PlayerGameModeChangeEvent.class);
20    }
21}

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.

 1public class MyPluginTests {
 2    private ServerMock server;
 3
 4    @BeforeEach
 5    public void setUp() {
 6        server = MockBukkit.mock();
 7    }
 8
 9    @AfterEach
10    public void tearDown() {
11        MockBukkit.unmock();
12    }
13
14    @Test
15    public void testEvent() {
16        Player player = server.addPlayer();
17        player.setGameMode(GameMode.CREATIVE);
18
19        server.getPluginManager().assertEventFired(PlayerGameModeChangeEvent.class, event -> {
20            event.getNewGameMode() == GameMode.CREATIVE);
21        });
22    }
23}

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

 1public class MyPluginTests {
 2    private ServerMock server;
 3
 4    @BeforeEach
 5    public void setUp() {
 6        server = MockBukkit.mock();
 7    }
 8
 9    @AfterEach
10    public void tearDown() {
11        MockBukkit.unmock();
12    }
13
14    @Test
15    public void testEvent() {
16        Player player = server.addPlayer();
17        player.setGameMode(GameMode.CREATIVE);
18
19        server.getPluginManager().assertEventFired(PlayerGameModeChangeEvent.class, "The event was not fired!");
20    }
21}

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.

 1public class MyPluginTests {
 2    private ServerMock server;
 3
 4    @BeforeEach
 5    public void setUp() {
 6        server = MockBukkit.mock();
 7    }
 8
 9    @AfterEach
10    public void tearDown() {
11        MockBukkit.unmock();
12    }
13
14    @Test
15    public void testEvent() {
16        Player player = server.addPlayer();
17        player.setGameMode(GameMode.CREATIVE);
18
19        server.getPluginManager().assertEventNotFired(PlayerMoveEvent.class);
20    }
21}

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

 1public class MyPluginTests {
 2    private ServerMock server;
 3
 4    @BeforeEach
 5    public void setUp() {
 6        server = MockBukkit.mock();
 7    }
 8
 9    @AfterEach
10    public void tearDown() {
11        MockBukkit.unmock();
12    }
13
14    @Test
15    public void testEvent() {
16        Player player = server.addPlayer();
17        player.setGameMode(GameMode.CREATIVE);
18
19        server.getPluginManager().assertEventNotFired(PlayerMoveEvent.class, "The event was fired!");
20    }
21}