Plan/Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheProcessQueueTest.java

171 lines
5.5 KiB
Java

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package test.java.main.java.com.djrapitops.plan.data.cache.queue;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import main.java.com.djrapitops.plan.Plan;
import main.java.com.djrapitops.plan.data.DemographicsData;
import main.java.com.djrapitops.plan.data.UserData;
import main.java.com.djrapitops.plan.data.cache.DBCallableProcessor;
import main.java.com.djrapitops.plan.data.cache.DataCacheHandler;
import main.java.com.djrapitops.plan.data.cache.queue.DataCacheProcessQueue;
import main.java.com.djrapitops.plan.data.handling.info.HandlingInfo;
import main.java.com.djrapitops.plan.data.handling.info.InfoType;
import org.bukkit.OfflinePlayer;
import org.bukkit.plugin.java.JavaPlugin;
import org.easymock.EasyMock;
import org.junit.After;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import test.java.utils.MockUtils;
import test.java.utils.TestInit;
/**
*
* @author Rsl1122
*/
@RunWith(PowerMockRunner.class)
@PrepareForTest({JavaPlugin.class})
public class DataCacheProcessQueueTest {
private DataCacheHandler handler;
/**
*
*/
public DataCacheProcessQueueTest() {
}
/**
*
*/
@Before
public void setUp() {
TestInit t = new TestInit();
assertTrue("Not set up", t.setUp());
Plan plan = t.getPlanMock();
PowerMock.mockStatic(JavaPlugin.class);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
EasyMock.expect(JavaPlugin.getPlugin(Plan.class)).andReturn(plan);
PowerMock.replay(JavaPlugin.class);
handler = new DataCacheHandler(plan) {
@Override
public boolean getCommandUseFromDb() {
return true;
}
@Override
public void startQueues() {
}
@Override
public void startAsyncPeriodicSaveTask() throws IllegalArgumentException, IllegalStateException {
}
@Override
public void getUserDataForProcessing(DBCallableProcessor p, UUID uuid) {
if (uuid.equals(MockUtils.getPlayerUUID())) {
OfflinePlayer op = MockUtils.mockPlayer();
UserData d = new UserData(op, new DemographicsData());
p.process(d);
} else if (uuid.equals(MockUtils.getPlayer2UUID())) {
OfflinePlayer op = MockUtils.mockPlayer2();
UserData d = new UserData(op, new DemographicsData());
p.process(d);
}
}
};
}
/**
*
*/
@After
public void tearDown() {
}
/**
*
* @throws InterruptedException
*/
@Test
public void testAddToPool_HandlingInfo() throws InterruptedException {
DataCacheProcessQueue q = new DataCacheProcessQueue(handler);
UUID uuid = MockUtils.getPlayerUUID();
q.addToPool(new HandlingInfo(uuid, InfoType.CHAT, 0) {
@Override
public boolean process(UserData uData) {
assertEquals(uuid, uData.getUuid());
return true;
}
});
Thread.sleep(1000);
assertTrue(q.stop().isEmpty());
}
/**
*
* @throws InterruptedException
*/
@Test
public void testAddToPool_Collection() throws InterruptedException {
DataCacheProcessQueue q = new DataCacheProcessQueue(handler);
UUID uuid = MockUtils.getPlayerUUID();
HandlingInfo h = new HandlingInfo(uuid, InfoType.CHAT, 0) {
@Override
public boolean process(UserData uData) {
assertEquals(uuid, uData.getUuid());
return true;
}
};
List<HandlingInfo> l = new ArrayList<>();
l.add(h);
l.add(h);
l.add(h);
q.addToPool(l);
Thread.sleep(1000);
assertTrue(q.stop().isEmpty());
}
/**
*
* @throws InterruptedException
*/
@Test
public void testContainsUUID() throws InterruptedException {
DataCacheProcessQueue q = new DataCacheProcessQueue(handler);
UUID uuid = MockUtils.getPlayerUUID();
HandlingInfo h = new HandlingInfo(uuid, InfoType.CHAT, 0) {
@Override
public boolean process(UserData uData) {
assertEquals(uuid, uData.getUuid());
return true;
}
};
q.stop();
q.addToPool(h);
assertTrue(q.containsUUID(uuid));
}
}