package com.jcwhatever.nucleus.internal.providers.bankitems;
import static org.junit.Assert.assertEquals;
import com.jcwhatever.v1_8_R3.BukkitTester;
import com.jcwhatever.nucleus.providers.bankitems.IBankItem;
import com.jcwhatever.nucleus.providers.bankitems.IBankItemTest;
import com.jcwhatever.nucleus.providers.bankitems.InsufficientItemsException;
import com.jcwhatever.nucleus.storage.IDataNode;
import com.jcwhatever.nucleus.storage.MemoryDataNode;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.Plugin;
import org.junit.Test;
import java.util.UUID;
/**
* Tests {@link BankItem}.
*/
public class BankItemTest extends IBankItemTest {
private Plugin _plugin = BukkitTester.mockPlugin("dummy");
@Override
protected IBankItem getBankItem(UUID id, ItemStack itemStack, int amount) {
IDataNode dataNode = new MemoryDataNode(_plugin);
return new BankItem(id, itemStack, amount, dataNode);
}
/**
* Make sure {@link #deposit} works correctly.
*/
@Test
public void testDeposit() {
UUID id = UUID.randomUUID();
ItemStack stack = new ItemStack(Material.WOOD);
IDataNode dataNode = new MemoryDataNode(_plugin);
BankItem bankItem = new BankItem(id, stack, 130, dataNode);
bankItem.deposit(20);
assertEquals(150, bankItem.getAmount());
assertEquals(150, dataNode.getInteger("amount"));
}
/**
* Make sure {@link #withdraw} works correctly.
*/
@Test
public void testWithdraw() throws InsufficientItemsException {
UUID id = UUID.randomUUID();
ItemStack stack = new ItemStack(Material.WOOD);
IDataNode dataNode = new MemoryDataNode(_plugin);
BankItem bankItem = new BankItem(id, stack, 130, dataNode);
bankItem.withdraw(20);
assertEquals(110, bankItem.getAmount());
assertEquals(110, dataNode.getInteger("amount"));
try {
bankItem.withdraw(200);
throw new AssertionError("InsufficientItemsException expected.");
}
catch(InsufficientItemsException ignore) {}
assertEquals(110, bankItem.getAmount());
assertEquals(110, dataNode.getInteger("amount"));
}
}