Package com.sk89q.craftbook.vehicles.boat

Source Code of com.sk89q.craftbook.vehicles.boat.BoatExitRemoverTest

package com.sk89q.craftbook.vehicles.boat;

import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.powermock.api.mockito.PowerMockito.mock;

import java.util.HashMap;
import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.entity.Boat;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.event.vehicle.VehicleExitEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.scheduler.BukkitScheduler;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import com.sk89q.craftbook.bukkit.BukkitConfiguration;
import com.sk89q.craftbook.bukkit.CraftBookPlugin;
import com.sk89q.craftbook.mechanics.boat.ExitRemover;

@RunWith(PowerMockRunner.class)
@PrepareForTest({Boat.class, VehicleExitEvent.class, ExitRemover.class})
public class BoatExitRemoverTest {

    @SuppressWarnings("serial")
    @Test
    public void testOnVehicleExit() {

        VehicleExitEvent event = mock(VehicleExitEvent.class);
        Boat boat = mock(Boat.class);

        Server server = mock(Server.class);
        when(server.getName()).thenReturn("Mock");
        when(server.getVersion()).thenReturn("MockVer");
        when(server.getBukkitVersion()).thenReturn("MockVer");
        when(server.getLogger()).thenReturn(Logger.getLogger(Logger.GLOBAL_LOGGER_NAME));
        when(server.getScheduler()).thenReturn(mock(BukkitScheduler.class));

        Bukkit.setServer(server);

        Location location = mock(Location.class);

        World world = mock(World.class);
        when(location.getWorld()).thenReturn(world);

        when(boat.getLocation()).thenReturn(location);
        when(boat.isValid()).thenReturn(true);

        when(event.getVehicle()).thenReturn(boat);

        ExitRemover rem = new ExitRemover();
        rem.onVehicleExit(event);

        verify(server).getScheduler();

        CraftBookPlugin plugin = mock(CraftBookPlugin.class);
        BukkitConfiguration config = mock(BukkitConfiguration.class);

        when(plugin.getConfiguration()).thenReturn(config);
        rem.giveItem = true;

        CraftBookPlugin.setInstance(plugin);

        rem.new BoatRemover(null, boat).run();

        LivingEntity player = mock(LivingEntity.class);

        when(player.getLocation()).thenReturn(location);
        when(event.getExited()).thenReturn(player);

        rem.new BoatRemover(player, boat).run();

        player = mock(Player.class);

        when(player.getLocation()).thenReturn(location);
        when(event.getExited()).thenReturn(player);

        Inventory inv = mock(PlayerInventory.class);

        when(inv.addItem(Mockito.<ItemStack[]>any())).thenReturn(new HashMap<Integer, ItemStack>(){{put(0,null);}});

        when(((Player) player).getInventory()).thenReturn((PlayerInventory) inv);

        rem.new BoatRemover(player, boat).run();

        when(inv.addItem(Mockito.<ItemStack[]>any())).thenReturn(new HashMap<Integer, ItemStack>());
        rem.new BoatRemover(player, boat).run();

        verify(boat, Mockito.times(4)).remove();
        verify(world, Mockito.times(3)).dropItemNaturally(Mockito.eq(location), Mockito.<ItemStack>any());
    }
}
TOP

Related Classes of com.sk89q.craftbook.vehicles.boat.BoatExitRemoverTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.