Skip to content

Commit af9cb87

Browse files
committed
Implement tests
1 parent bfaa50c commit af9cb87

5 files changed

Lines changed: 94 additions & 26 deletions

File tree

‎.github/workflows/gradle.yml‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,6 @@ jobs:
1919
- name: Setup Gradle
2020
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0
2121
- name: Verify build is not broken
22-
run: ./gradlew build
22+
run: ./gradlew build
23+
- name: Verify tests are passing
24+
run: ./gradlew test

‎build.gradle‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ dependencies {
2626
implementation 'com.mysql:mysql-connector-j:9.5.0'
2727
implementation 'org.mariadb.jdbc:mariadb-java-client:3.5.7'
2828
implementation 'org.postgresql:postgresql:42.7.8'
29+
// Testing
30+
testImplementation platform("org.junit:junit-bom:6.0.1")
31+
testImplementation "org.junit.jupiter:junit-jupiter"
32+
testRuntimeOnly "org.junit.platform:junit-platform-launcher"
33+
}
34+
35+
test {
36+
useJUnitPlatform()
2937
}
3038

3139
spotless {
Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
11
package com.azuredoom.levelingcore;
22

3-
import com.azuredoom.levelingcore.config.ConfigManager;
4-
import com.azuredoom.levelingcore.config.LevelFormulaFactory;
5-
import com.azuredoom.levelingcore.database.DataSourceFactory;
6-
import com.azuredoom.levelingcore.database.JdbcLevelRepository;
7-
import com.azuredoom.levelingcore.level.LevelServiceImpl;
8-
93
import java.nio.file.Path;
104
import java.nio.file.Paths;
11-
import java.util.UUID;
125

136
public class Main {
147

@@ -18,28 +11,28 @@ public class Main {
1811

1912
static void main() {
2013
// TODO: Move to server startup so registration are auto handled
21-
var config = ConfigManager.loadOrCreate(configPath);
22-
var desc = LevelFormulaFactory.descriptorFromConfig(config);
23-
var formula = LevelFormulaFactory.fromConfig(config);
24-
var jdbcUrl = config.database.jdbcUrl;
25-
var user = config.database.username;
26-
var pass = config.database.password;
27-
var maxPoolSize = config.database.maxPoolSize;
28-
var dataSource = DataSourceFactory.create(jdbcUrl, user, pass, maxPoolSize);
29-
var repository = new JdbcLevelRepository(dataSource);
30-
if (config.formula.migrateXP) {
31-
repository.migrateFormulaIfNeeded(formula, desc);
32-
}
33-
var levelService = new LevelServiceImpl(formula, repository);
14+
// var config = ConfigManager.loadOrCreate(configPath);
15+
// var desc = LevelFormulaFactory.descriptorFromConfig(config);
16+
// var formula = LevelFormulaFactory.fromConfig(config);
17+
// var jdbcUrl = config.database.jdbcUrl;
18+
// var user = config.database.username;
19+
// var pass = config.database.password;
20+
// var maxPoolSize = config.database.maxPoolSize;
21+
// var dataSource = DataSourceFactory.create(jdbcUrl, user, pass, maxPoolSize);
22+
// var repository = new JdbcLevelRepository(dataSource);
23+
// if (config.formula.migrateXP) {
24+
// repository.migrateFormulaIfNeeded(formula, desc);
25+
// }
26+
// var levelService = new LevelServiceImpl(formula, repository);
3427

3528
// TODO: Remove once hooks into the player/mob kill events are found and integrable.
36-
var testId = UUID.fromString("d3804858-4bb8-4026-ae21-386255ed467d");
37-
levelService.addXp(testId, 500);
29+
// var testId = UUID.fromString("d3804858-4bb8-4026-ae21-386255ed467d");
30+
// levelService.addXp(testId, 500);
3831
// TODO: Move to chat based logging instead of System loggers
39-
LOGGER.log(System.Logger.Level.INFO, String.format("XP: %d", levelService.getXp(testId)));
40-
LOGGER.log(System.Logger.Level.INFO, String.format("Level: %d", levelService.getLevel(testId)));
32+
// LOGGER.log(System.Logger.Level.INFO, String.format("XP: %d", levelService.getXp(testId)));
33+
// LOGGER.log(System.Logger.Level.INFO, String.format("Level: %d", levelService.getLevel(testId)));
4134

4235
// TODO: Move to server shutdown so JDBC resources are properly closed
43-
Runtime.getRuntime().addShutdownHook(new Thread(repository::close));
36+
// Runtime.getRuntime().addShutdownHook(new Thread(repository::close));
4437
}
4538
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.azuredoom.levelingcoretesting;
2+
3+
import com.azuredoom.levelingcore.config.ConfigManager;
4+
import com.azuredoom.levelingcore.config.LevelFormulaFactory;
5+
import com.azuredoom.levelingcore.database.DataSourceFactory;
6+
import com.azuredoom.levelingcore.database.JdbcLevelRepository;
7+
import com.azuredoom.levelingcore.level.LevelServiceImpl;
8+
9+
import java.nio.file.Path;
10+
11+
public final class AppBootstrap {
12+
13+
private AppBootstrap() {}
14+
15+
public static LevelServiceImpl createLevelService(Path configPath) {
16+
var config = ConfigManager.loadOrCreate(configPath);
17+
var desc = LevelFormulaFactory.descriptorFromConfig(config);
18+
var formula = LevelFormulaFactory.fromConfig(config);
19+
20+
var ds = DataSourceFactory.create(
21+
config.database.jdbcUrl,
22+
config.database.username,
23+
config.database.password,
24+
config.database.maxPoolSize
25+
);
26+
27+
var repository = new JdbcLevelRepository(ds);
28+
29+
if (config.formula.migrateXP) {
30+
repository.migrateFormulaIfNeeded(formula, desc);
31+
}
32+
33+
return new LevelServiceImpl(formula, repository);
34+
}
35+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.azuredoom.levelingcoretesting;
2+
3+
import com.azuredoom.levelingcore.Main;
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.util.UUID;
7+
8+
import static org.junit.jupiter.api.Assertions.assertEquals;
9+
import static org.junit.jupiter.api.Assertions.assertTrue;
10+
11+
class LevelServiceTest {
12+
13+
public static final System.Logger LOGGER = System.getLogger(Main.class.getName());
14+
15+
@Test
16+
void addXp_increasesXpAndLevel() {
17+
var service = AppBootstrap.createLevelService(Main.configPath);
18+
var id = UUID.fromString("d3804858-4bb8-4026-ae21-386255ed467d");
19+
var amount = 500;
20+
var beforeXp = service.getXp(id);
21+
var beforeLevel = service.getLevel(id);
22+
23+
service.addXp(id, amount);
24+
LOGGER.log(System.Logger.Level.INFO, String.format("XP: %d", service.getXp(id)));
25+
LOGGER.log(System.Logger.Level.INFO, String.format("Level: %d", service.getLevel(id)));
26+
27+
assertEquals(beforeXp + amount, service.getXp(id));
28+
assertTrue(service.getLevel(id) >= beforeLevel);
29+
}
30+
}

0 commit comments

Comments
 (0)