package me.gnat008.perworldinventory.groups; import me.gnat008.perworldinventory.PerWorldInventory; import me.gnat008.perworldinventory.config.Settings; import org.bukkit.GameMode; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; import java.util.HashSet; import java.util.Set; import static me.gnat008.perworldinventory.TestHelper.mockGroup; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; /** * Tests for {@link GroupManager}. */ @RunWith(MockitoJUnitRunner.class) public class GroupManagerTest { @InjectMocks private GroupManager groupManager; @Mock private PerWorldInventory plugin; @Mock private Settings settings; @Test public void addGroupWithLowercaseName() { // given groupManager.clearGroups(); // Clear any existing groups String name = "test"; Set<String> worlds = new HashSet<>(); worlds.add(name); GameMode gameMode = GameMode.SURVIVAL; // when groupManager.addGroup(name, worlds, gameMode); // then Group expected = mockGroup(name, worlds, gameMode); Group actual = groupManager.getGroup("test"); assertThat(actual.getName(), equalTo(expected.getName())); assertThat(actual.getWorlds(), equalTo(expected.getWorlds())); assertThat(actual.getGameMode(), equalTo(expected.getGameMode())); } @Test public void addGroupWithUppercaseName() { // given groupManager.clearGroups(); // Clear any existing groups String name = "TeSt"; Set<String> worlds = new HashSet<>(); worlds.add(name); GameMode gameMode = GameMode.SURVIVAL; // when groupManager.addGroup(name, worlds, gameMode); // then Group expected = mockGroup(name, worlds, gameMode); Group actual = groupManager.getGroup("TeSt"); assertThat(actual.getName(), equalTo(expected.getName())); assertThat(actual.getWorlds(), equalTo(expected.getWorlds())); assertThat(actual.getGameMode(), equalTo(expected.getGameMode())); } @Test public void addGroupWithUppercaseNameLowercaseGet() { // given groupManager.clearGroups(); // Clear any existing groups String name = "TeSt"; Set<String> worlds = new HashSet<>(); worlds.add(name); GameMode gameMode = GameMode.SURVIVAL; // when groupManager.addGroup(name, worlds, gameMode); // then Group expected = mockGroup(name, worlds, gameMode); Group actual = groupManager.getGroup("test"); assertThat(actual.getName(), equalTo(expected.getName())); assertThat(actual.getWorlds(), equalTo(expected.getWorlds())); assertThat(actual.getGameMode(), equalTo(expected.getGameMode())); } @Test public void getGroupFromWorldWhereExists() { // given groupManager.clearGroups(); // Clear any existing groups String name = "test"; Set<String> worlds = new HashSet<>(); worlds.add(name); GameMode gameMode = GameMode.SURVIVAL; groupManager.addGroup(name, worlds, gameMode); // when Group result = groupManager.getGroupFromWorld("test"); // then Group expected = mockGroup(name, worlds, gameMode); assertThat(result.getName(), equalTo(expected.getName())); assertThat(result.getWorlds(), equalTo(expected.getWorlds())); assertThat(result.getGameMode(), equalTo(expected.getGameMode())); } @Test public void getGroupFromWorldWhereNotExists() { // given groupManager.clearGroups(); // Clear any existing groups String name = "test"; Set<String> worlds = new HashSet<>(); worlds.add(name); worlds.add(name + "_nether"); worlds.add(name + "_the_end"); GameMode gameMode = GameMode.SURVIVAL; // when Group result = groupManager.getGroupFromWorld("test"); // then Group expected = mockGroup(name, worlds, gameMode); assertNotNull(result); assertThat(result.getName(), equalTo(expected.getName())); assertThat(result.getWorlds(), equalTo(expected.getWorlds())); assertThat(result.getGameMode(), equalTo(expected.getGameMode())); } @Test public void getGroupAfterCreatedFromGroupFromWorldMethod() { // given groupManager.clearGroups(); // Clear any existing groups String worldName = "Test"; Group expected = groupManager.getGroupFromWorld(worldName); // when Group result = groupManager.getGroup(worldName); // then assertNotNull(result); assertThat(result.getName(), equalTo(expected.getName())); assertThat(result.getWorlds(), equalTo(expected.getWorlds())); assertThat(result.getGameMode(), equalTo(expected.getGameMode())); } }