diff --git a/Plan/bungeecord/src/test/java/com/djrapitops/plan/BungeeSystemTest.java b/Plan/bungeecord/src/test/java/com/djrapitops/plan/BungeeSystemTest.java
index ab4a66fb0..c7a796ee5 100644
--- a/Plan/bungeecord/src/test/java/com/djrapitops/plan/BungeeSystemTest.java
+++ b/Plan/bungeecord/src/test/java/com/djrapitops/plan/BungeeSystemTest.java
@@ -21,45 +21,44 @@ import com.djrapitops.plan.db.SQLiteDB;
import com.djrapitops.plan.system.PlanSystem;
import com.djrapitops.plan.system.database.DBSystem;
import com.djrapitops.plan.system.settings.config.PlanConfig;
-import com.djrapitops.plan.system.settings.paths.DatabaseSettings;
import com.djrapitops.plan.system.settings.paths.ProxySettings;
import com.djrapitops.plan.system.settings.paths.WebserverSettings;
import com.google.common.util.concurrent.MoreExecutors;
-import org.junit.ClassRule;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+import org.junit.platform.runner.JUnitPlatform;
import org.junit.runner.RunWith;
-import org.mockito.junit.MockitoJUnitRunner;
-import rules.BungeeComponentMocker;
-import rules.ComponentMocker;
-import utilities.CIProperties;
+import utilities.DBPreparer;
import utilities.RandomData;
+import utilities.mocks.BungeeMockComponent;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assume.assumeTrue;
+import java.nio.file.Path;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
/**
* Test for Bungee PlanSystem.
*
* @author Rsl1122
*/
-@RunWith(MockitoJUnitRunner.Silent.class)
+@RunWith(JUnitPlatform.class)
public class BungeeSystemTest {
- @ClassRule
- public static TemporaryFolder temporaryFolder = new TemporaryFolder();
-
private final int TEST_PORT_NUMBER = RandomData.randomInt(9005, 9500);
- @Rule
- public ComponentMocker component = new BungeeComponentMocker(temporaryFolder);
- @Rule
- public ExpectedException thrown = ExpectedException.none();
+ private BungeeMockComponent component;
+ private DBPreparer dbPreparer;
+
+ @BeforeEach
+ void prepareSystem(@TempDir Path temp) throws Exception {
+ component = new BungeeMockComponent(temp);
+ dbPreparer = new DBPreparer(component.getPlanSystem(), TEST_PORT_NUMBER);
+ }
@Test
- public void bungeeEnables() throws Exception {
+ void bungeeEnables() throws Exception {
PlanSystem bungeeSystem = component.getPlanSystem();
try {
PlanConfig config = bungeeSystem.getConfigSystem().getConfig();
@@ -79,56 +78,51 @@ public class BungeeSystemTest {
}
@Test
- public void bungeeDoesNotEnableWithDefaultIP() throws Exception {
- thrown.expect(EnableException.class);
- thrown.expectMessage("IP setting still 0.0.0.0 - Configure AlternativeIP/IP that connects to the Proxy server.");
+ void bungeeDoesNotEnableWithDefaultIP() {
+ EnableException thrown = assertThrows(EnableException.class, () -> {
+ PlanSystem bungeeSystem = component.getPlanSystem();
+ try {
+ PlanConfig config = bungeeSystem.getConfigSystem().getConfig();
+ config.set(WebserverSettings.PORT, TEST_PORT_NUMBER);
+ config.set(ProxySettings.IP, "0.0.0.0");
- PlanSystem bungeeSystem = component.getPlanSystem();
- try {
- PlanConfig config = bungeeSystem.getConfigSystem().getConfig();
- config.set(WebserverSettings.PORT, TEST_PORT_NUMBER);
- config.set(ProxySettings.IP, "0.0.0.0");
+ DBSystem dbSystem = bungeeSystem.getDatabaseSystem();
+ SQLiteDB db = dbSystem.getSqLiteFactory().usingDefaultFile();
+ db.setTransactionExecutorServiceProvider(MoreExecutors::newDirectExecutorService);
+ dbSystem.setActiveDatabase(db);
- DBSystem dbSystem = bungeeSystem.getDatabaseSystem();
- SQLiteDB db = dbSystem.getSqLiteFactory().usingDefaultFile();
- db.setTransactionExecutorServiceProvider(MoreExecutors::newDirectExecutorService);
- dbSystem.setActiveDatabase(db);
+ bungeeSystem.enable(); // Throws EnableException
+ } finally {
+ bungeeSystem.disable();
+ }
+ });
- bungeeSystem.enable(); // Throws EnableException
- } finally {
- bungeeSystem.disable();
- }
+ assertEquals("IP setting still 0.0.0.0 - Configure AlternativeIP/IP that connects to the Proxy server.", thrown.getMessage());
}
@Test
- public void testEnableNoMySQL() throws EnableException {
- thrown.expect(EnableException.class);
+ void testEnableNoMySQL() {
+ assertThrows(EnableException.class, () -> {
+ PlanSystem bungeeSystem = component.getPlanSystem();
+ try {
+ PlanConfig config = bungeeSystem.getConfigSystem().getConfig();
+ config.set(WebserverSettings.PORT, TEST_PORT_NUMBER);
+ config.set(ProxySettings.IP, "8.8.8.8");
- PlanSystem bungeeSystem = component.getPlanSystem();
- try {
- PlanConfig config = bungeeSystem.getConfigSystem().getConfig();
- config.set(WebserverSettings.PORT, TEST_PORT_NUMBER);
- config.set(ProxySettings.IP, "8.8.8.8");
-
- bungeeSystem.enable(); // Throws EnableException
- } finally {
- bungeeSystem.disable();
- }
+ bungeeSystem.enable(); // Throws EnableException
+ } finally {
+ bungeeSystem.disable();
+ }
+ });
}
@Test
- public void testEnableWithMySQL() throws EnableException {
- boolean isCI = Boolean.parseBoolean(System.getenv(CIProperties.IS_CI_SERVICE));
- assumeTrue(isCI);
-
+ void testEnableWithMySQL() throws Exception {
PlanSystem bungeeSystem = component.getPlanSystem();
try {
PlanConfig config = bungeeSystem.getConfigSystem().getConfig();
- config.set(DatabaseSettings.MYSQL_DATABASE, "Plan");
- config.set(DatabaseSettings.MYSQL_USER, "travis");
- config.set(DatabaseSettings.MYSQL_PASS, "");
- config.set(DatabaseSettings.MYSQL_HOST, "127.0.0.1");
- config.set(DatabaseSettings.TYPE, "MySQL");
+ // MySQL settings might not be available.
+ assumeTrue(dbPreparer.setUpMySQLSettings(config).isPresent());
config.set(WebserverSettings.PORT, TEST_PORT_NUMBER);
config.set(ProxySettings.IP, "8.8.8.8");
diff --git a/Plan/bungeecord/src/test/java/rules/BungeeComponentMocker.java b/Plan/bungeecord/src/test/java/utilities/mocks/BungeeMockComponent.java
similarity index 53%
rename from Plan/bungeecord/src/test/java/rules/BungeeComponentMocker.java
rename to Plan/bungeecord/src/test/java/utilities/mocks/BungeeMockComponent.java
index 3b9858a35..1cd2b74f4 100644
--- a/Plan/bungeecord/src/test/java/rules/BungeeComponentMocker.java
+++ b/Plan/bungeecord/src/test/java/utilities/mocks/BungeeMockComponent.java
@@ -14,44 +14,47 @@
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see .
*/
-package rules;
+package utilities.mocks;
import com.djrapitops.plan.DaggerPlanBungeeComponent;
import com.djrapitops.plan.PlanBungee;
import com.djrapitops.plan.PlanBungeeComponent;
-import com.djrapitops.plan.PlanPlugin;
import com.djrapitops.plan.system.PlanSystem;
-import org.junit.rules.ExternalResource;
-import org.junit.rules.TemporaryFolder;
-import utilities.mocks.PlanBungeeMocker;
-public class BungeeComponentMocker extends ExternalResource implements ComponentMocker {
+import java.nio.file.Path;
- private final TemporaryFolder testFolder;
+/**
+ * Test utility for creating a dagger PlanComponent using a mocked PlanBungee.
+ *
+ * @author Rsl1122
+ */
+public class BungeeMockComponent {
+
+ private final Path tempDir;
private PlanBungee planMock;
private PlanBungeeComponent component;
- public BungeeComponentMocker(TemporaryFolder testFolder) {
- this.testFolder = testFolder;
+ public BungeeMockComponent(Path tempDir) {
+ this.tempDir = tempDir;
}
- @Override
- protected void before() throws Throwable {
- PlanBungeeMocker mocker = PlanBungeeMocker.setUp()
- .withDataFolder(testFolder.newFolder())
- .withPluginDescription()
- .withResourceFetchingFromJar()
- .withProxy();
- planMock = mocker.getPlanMock();
- component = DaggerPlanBungeeComponent.builder().plan(planMock).build();
- }
-
- public PlanPlugin getPlanMock() {
+ public PlanBungee getPlanMock() throws Exception {
+ if (planMock == null) {
+ planMock = PlanBungeeMocker.setUp()
+ .withDataFolder(tempDir.toFile())
+ .withResourceFetchingFromJar()
+ .withProxy()
+ .withPluginDescription()
+ .getPlanMock();
+ }
return planMock;
}
- public PlanSystem getPlanSystem() {
+ public PlanSystem getPlanSystem() throws Exception {
+ if (component == null) {
+ component = DaggerPlanBungeeComponent.builder().plan(getPlanMock()).build();
+ }
return component.system();
}
-}
+}
\ No newline at end of file
diff --git a/Plan/bungeecord/src/test/java/utilities/mocks/PlanBungeeMocker.java b/Plan/bungeecord/src/test/java/utilities/mocks/PlanBungeeMocker.java
index dd08f610a..c1ecd94aa 100644
--- a/Plan/bungeecord/src/test/java/utilities/mocks/PlanBungeeMocker.java
+++ b/Plan/bungeecord/src/test/java/utilities/mocks/PlanBungeeMocker.java
@@ -83,23 +83,18 @@ public class PlanBungeeMocker extends Mocker {
return this;
}
- public PlanBungeeMocker withDataFolder(File tempFolder) {
+ PlanBungeeMocker withDataFolder(File tempFolder) {
when(planMock.getDataFolder()).thenReturn(tempFolder);
return this;
}
- public PlanBungeeMocker withResourceFetchingFromJar() throws Exception {
+ PlanBungeeMocker withResourceFetchingFromJar() throws Exception {
withPluginFiles();
return this;
}
- @Deprecated
- public PlanBungeeMocker withLogging() {
- return this;
- }
-
@SuppressWarnings("deprecation")
- public PlanBungeeMocker withProxy() {
+ PlanBungeeMocker withProxy() {
ProxyServer proxyMock = Mockito.mock(ProxyServer.class);
doReturn("1.12.2").when(proxyMock).getVersion();
@@ -117,7 +112,7 @@ public class PlanBungeeMocker extends Mocker {
return this;
}
- public PlanBungeeMocker withPluginDescription() {
+ PlanBungeeMocker withPluginDescription() {
File pluginYml = getFile("/bungee.yml");
HashSet empty = new HashSet<>();
PluginDescription pluginDescription = new PluginDescription("Plan", "", "9.9.9", "Rsl1122", empty, empty, pluginYml, "");
@@ -125,7 +120,7 @@ public class PlanBungeeMocker extends Mocker {
return this;
}
- public PlanBungee getPlanMock() {
+ PlanBungee getPlanMock() {
return planMock;
}
}
diff --git a/Plan/common/src/test/java/utilities/DBPreparer.java b/Plan/common/src/test/java/utilities/DBPreparer.java
index dd32cb9b7..a09a8a923 100644
--- a/Plan/common/src/test/java/utilities/DBPreparer.java
+++ b/Plan/common/src/test/java/utilities/DBPreparer.java
@@ -65,7 +65,7 @@ public class DBPreparer {
return db;
}
- public Optional prepareMySQL() throws EnableException {
+ public Optional setUpMySQLSettings(PlanConfig config) {
String database = System.getenv(CIProperties.MYSQL_DATABASE);
String user = System.getenv(CIProperties.MYSQL_USER);
String pass = System.getenv(CIProperties.MYSQL_PASS);
@@ -80,22 +80,30 @@ public class DBPreparer {
String dbName = DBType.MYSQL.getName();
- PlanConfig config = system.getConfigSystem().getConfig();
config.set(DatabaseSettings.MYSQL_DATABASE, formattedDatabase);
config.set(DatabaseSettings.MYSQL_USER, user);
config.set(DatabaseSettings.MYSQL_PASS, pass);
config.set(DatabaseSettings.MYSQL_HOST, "127.0.0.1");
config.set(DatabaseSettings.TYPE, dbName);
+ return Optional.of(formattedDatabase);
+ }
- SQLDB mysql = prepareDBByName(dbName);
- mysql.executeTransaction(new Transaction() {
- @Override
- protected void performOperations() {
- execute("DROP DATABASE " + formattedDatabase);
- execute("CREATE DATABASE " + formattedDatabase);
- execute("USE " + formattedDatabase);
- }
- });
- return Optional.of(mysql);
+ public Optional prepareMySQL() throws EnableException {
+ PlanConfig config = system.getConfigSystem().getConfig();
+ Optional formattedDB = setUpMySQLSettings(config);
+ if (formattedDB.isPresent()) {
+ String formattedDatabase = formattedDB.get();
+ SQLDB mysql = prepareDBByName(DBType.MYSQL.getName());
+ mysql.executeTransaction(new Transaction() {
+ @Override
+ protected void performOperations() {
+ execute("DROP DATABASE " + formattedDatabase);
+ execute("CREATE DATABASE " + formattedDatabase);
+ execute("USE " + formattedDatabase);
+ }
+ });
+ return Optional.of(mysql);
+ }
+ return Optional.empty();
}
}