package com.jcwhatever.nucleus.providers.bankitems;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import com.jcwhatever.v1_8_R3.BukkitTester;
import com.jcwhatever.nucleus.NucleusTest;
import org.bukkit.entity.Player;
import org.junit.BeforeClass;
import org.junit.Test;
import java.util.UUID;
/**
* Abstract test for {@link IBankItemsBank} implementations.
*/
public abstract class IBankItemsBankTest {
protected abstract IBankItemsBank getBank(String bankName, UUID ownerId);
/**
* Make sure Nucleus and Bukkit are initialized.
*/
@BeforeClass
public static void init() {
NucleusTest.init();
}
/**
* Make sure {@link #getName} and {@link #getSearchName} returns the correct value.
*/
@Test
public void testGetName() {
IBankItemsBank bank = getBank("Dummy", null);
assertEquals("Dummy", bank.getName());
assertEquals("dummy", bank.getSearchName());
}
/**
* Make sure {@link getOwnerId} returns the correct value.
*/
@Test
public void testGetOwnerId() {
IBankItemsBank bank = getBank("dummy", null);
assertEquals(null, bank.getOwnerId());
UUID id = UUID.randomUUID();
bank = getBank("dummy", id);
assertEquals(id, bank.getOwnerId());
}
/**
* Make sure basic account operations are working correctly.
*/
@Test
public void testAccounts() {
Player player1 = BukkitTester.login("player1");
Player player2 = BukkitTester.login("player2");
IBankItemsBank bank = getBank("dummy", null);
assertEquals(false, bank.hasAccount(player1.getUniqueId()));
assertEquals(false, bank.hasAccount(player2.getUniqueId()));
assertEquals(null, bank.getAccount(player1.getUniqueId()));
assertEquals(null, bank.getAccount(player2.getUniqueId()));
// create accounts
IBankItemsAccount account1 = bank.createAccount(player1.getUniqueId());
IBankItemsAccount account2 = bank.createAccount(player2.getUniqueId());
assertTrue(account1 != null);
assertEquals(player1.getUniqueId(), account1.getOwnerId());
assertTrue(account2 != null);
assertEquals(player2.getUniqueId(), account2.getOwnerId());
assertEquals(true, bank.hasAccount(player1.getUniqueId()));
assertEquals(true, bank.hasAccount(player2.getUniqueId()));
assertEquals(account1, bank.getAccount(player1.getUniqueId()));
assertEquals(account2, bank.getAccount(player2.getUniqueId()));
// delete account
assertEquals(true, bank.deleteAccount(player1.getUniqueId()));
assertEquals(false, bank.deleteAccount(player1.getUniqueId()));
assertEquals(false, bank.hasAccount(player1.getUniqueId()));
assertEquals(true, bank.hasAccount(player2.getUniqueId()));
assertEquals(null, bank.getAccount(player1.getUniqueId()));
assertEquals(account2, bank.getAccount(player2.getUniqueId()));
}
}