bentobox/src/test/java/world/bentobox/bentobox/util/teleport/SafeSpotTeleportBuilderTest...

150 lines
4.3 KiB
Java

package world.bentobox.bentobox.util.teleport;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Optional;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import world.bentobox.bentobox.BentoBox;
import world.bentobox.bentobox.api.user.User;
import world.bentobox.bentobox.database.objects.Island;
import world.bentobox.bentobox.managers.IslandWorldManager;
import world.bentobox.bentobox.managers.LocalesManager;
@RunWith(PowerMockRunner.class)
@PrepareForTest(SafeSpotTeleport.Builder.class)
public class SafeSpotTeleportBuilderTest {
@Mock
private SafeSpotTeleport sst;
@Mock
private BentoBox plugin;
@Mock
private Player player;
@Mock
private Location loc;
@InjectMocks
private SafeSpotTeleport.Builder sstb;
@Before
public void setUp() throws Exception {
PowerMockito.whenNew(SafeSpotTeleport.class).withAnyArguments().thenReturn(sst);
// Users
User.setPlugin(plugin);
// Locales - final
LocalesManager lm = mock(LocalesManager.class);
when(plugin.getLocalesManager()).thenReturn(lm);
when(lm.get(any(), any())).thenReturn("mock translation");
// Addon
IslandWorldManager iwm = mock(IslandWorldManager.class);
when(iwm.getAddon(Mockito.any())).thenReturn(Optional.empty());
when(plugin.getIWM()).thenReturn(iwm);
}
@After
public void tearDown() {
Mockito.framework().clearInlineMocks();
}
@Test
public void testBuilder() {
sstb = new SafeSpotTeleport.Builder(plugin);
// Should fail because no data
assertNull(sstb.build());
}
@Test
public void testEntity() throws Exception {
// Start builder
sstb = new SafeSpotTeleport.Builder(plugin);
// Add entity
sstb.entity(player);
// Test for error
assertNull(sstb.build());
// Add location
sstb.location(loc);
// Build - expect success
SafeSpotTeleport result = sstb.build();
assertEquals(sst, result);
}
@Test
public void testIsland() {
// Start builder
SafeSpotTeleport.Builder sstb = new SafeSpotTeleport.Builder(plugin);
// Add entity
sstb.entity(player);
// Add island
Island island = mock(Island.class);
when(island.getProtectionCenter()).thenReturn(loc);
sstb.island(island);
// Build - expect success
SafeSpotTeleport result = sstb.build();
assertEquals(sst, result);
}
@Test
public void testHomeNumber() {
// Start builder
SafeSpotTeleport.Builder sstb = new SafeSpotTeleport.Builder(plugin);
// Add entity
sstb.entity(player);
// Add location
sstb.location(loc);
// Add home
sstb.homeName("my name");
// Build - expect success
SafeSpotTeleport result = sstb.build();
assertEquals(sst, result);
}
@Test
public void testPortal() {
// Start builder
SafeSpotTeleport.Builder sstb = new SafeSpotTeleport.Builder(plugin);
// Add entity
sstb.entity(player);
// Add location
sstb.location(loc);
// Portal
sstb.portal();
// Build - expect success
SafeSpotTeleport result = sstb.build();
assertEquals(sst, result);
}
@Test
public void testFailureMessage() {
// Start builder
SafeSpotTeleport.Builder sstb = new SafeSpotTeleport.Builder(plugin);
// Add entity
sstb.entity(player);
// Add location
sstb.location(loc);
// Add failure
sstb.failureMessage("testing 123");
// Build - expect success
SafeSpotTeleport result = sstb.build();
assertEquals(sst, result);
}
}