Use arena slugs in arena sign update handler.

The arena signs predate the use of arena slugs everywhere, so something
slipped through the cracks in this regard. Incidentally, the handler for
arena updates is one of the few classes in the signs package that has no
unit tests, probably due to it being "obvious implementation". Not so
obvious after all, it seems, so now we have a basic test for it.

Fixes #705
This commit is contained in:
Andreas Troelsen
2021-10-13 23:25:13 +02:00
parent 3693c039a6
commit 4348a0497e
3 changed files with 62 additions and 1 deletions
@@ -0,0 +1,60 @@
package com.garbagemule.MobArena.signs;
import com.garbagemule.MobArena.MobArena;
import com.garbagemule.MobArena.events.ArenaPlayerJoinEvent;
import com.garbagemule.MobArena.framework.Arena;
import org.bukkit.Server;
import org.bukkit.scheduler.BukkitScheduler;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import java.util.Collections;
import static org.mockito.Mockito.*;
@SuppressWarnings("WeakerAccess")
@RunWith(MockitoJUnitRunner.StrictStubs.class)
public class HandlesArenaUpdatesTest {
SignStore signStore;
SignRenderer signRenderer;
BukkitScheduler scheduler;
HandlesArenaUpdates subject;
@Before
public void setup() {
signStore = mock(SignStore.class);
signRenderer = mock(SignRenderer.class);
scheduler = mock(BukkitScheduler.class);
MobArena plugin = mock(MobArena.class);
Server server = mock(Server.class);
when(plugin.getServer()).thenReturn(server);
when(server.getScheduler()).thenReturn(scheduler);
subject = new HandlesArenaUpdates(signStore, signRenderer, plugin);
}
@Test
public void usesArenaSlugForLookups() {
String slug = "angry-dingo";
Arena arena = mock(Arena.class);
ArenaSign sign = new ArenaSign(null, "cool-sign", slug, "info");
when(scheduler.runTask(any(), any(Runnable.class))).thenAnswer(i -> {
Runnable task = i.getArgument(1);
task.run();
return null;
});
when(arena.getSlug()).thenReturn(slug);
when(signStore.findByArenaId(slug)).thenReturn(Collections.singletonList(sign));
ArenaPlayerJoinEvent event = new ArenaPlayerJoinEvent(null, arena);
subject.on(event);
verify(signRenderer).render(sign);
}
}