Skip to content

Commit 5af240b

Browse files
committed
test(phase): fix MinestomEndPhaseRankingTest — update position bonuses to 10/6/3/1 and use @envtest with real players
1 parent b061e8f commit 5af240b

1 file changed

Lines changed: 24 additions & 26 deletions

File tree

server/src/test/java/net/elytrarace/server/phase/MinestomEndPhaseRankingTest.java

Lines changed: 24 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,66 +4,64 @@
44
import net.elytrarace.common.ecs.EntityManager;
55
import net.elytrarace.server.ecs.component.PlayerRefComponent;
66
import net.elytrarace.server.ecs.component.ScoreComponent;
7-
import net.minestom.server.entity.Player;
7+
import net.minestom.server.coordinate.Pos;
8+
import net.minestom.testing.Env;
9+
import net.minestom.testing.EnvTest;
810
import org.junit.jupiter.api.Test;
911

1012
import java.util.List;
11-
import java.util.UUID;
1213

1314
import static org.assertj.core.api.Assertions.assertThat;
14-
import static org.mockito.Mockito.mock;
15-
import static org.mockito.Mockito.when;
1615

1716
/**
1817
* Verifies the ranking / bonus rules used by {@link MinestomEndPhase} before
1918
* results are persisted. Keeps the scoring logic testable without standing up
20-
* the Minestom server or the phase lifecycle.
19+
* the full phase lifecycle.
2120
*/
21+
@EnvTest
2222
class MinestomEndPhaseRankingTest {
2323

2424
@Test
25-
void ranksDescendingByTotalAndAppliesStandardBonuses() {
25+
void ranksDescendingByTotalAndAppliesStandardBonuses(Env env) {
2626
EntityManager em = new EntityManager();
27-
Entity e1 = player(em, "A", 40);
28-
Entity e2 = player(em, "B", 100);
29-
Entity e3 = player(em, "C", 70);
27+
Entity eA = player(env, em, 40);
28+
Entity eB = player(env, em, 100);
29+
Entity eC = player(env, em, 70);
3030

3131
List<Entity> ranked = MinestomEndPhase.rankAndApplyBonuses(em);
3232

33-
assertThat(ranked).extracting(e -> e.getComponent(PlayerRefComponent.class).getPlayer().getUsername())
34-
.containsExactly("B", "C", "A");
35-
assertThat(ranked.get(0).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(50);
36-
assertThat(ranked.get(1).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(30);
37-
assertThat(ranked.get(2).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(20);
33+
// eB=100 > eC=70 > eA=40 before bonuses — verify ring-point ordering
34+
assertThat(ranked).extracting(e -> e.getComponent(ScoreComponent.class).getRingPoints())
35+
.containsExactly(100, 70, 40);
36+
assertThat(ranked.get(0).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(10);
37+
assertThat(ranked.get(1).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(6);
38+
assertThat(ranked.get(2).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(3);
3839
}
3940

4041
@Test
41-
void fourthAndBelowReceiveTheFallbackBonus() {
42+
void fourthAndBelowReceiveTheFallbackBonus(Env env) {
4243
EntityManager em = new EntityManager();
4344
for (int i = 0; i < 5; i++) {
44-
player(em, "P" + i, 100 - i * 10); // distinct totals so ordering is deterministic
45+
player(env, em, 100 - i * 10); // distinct totals so ordering is deterministic
4546
}
4647

4748
List<Entity> ranked = MinestomEndPhase.rankAndApplyBonuses(em);
4849

4950
assertThat(ranked).hasSize(5);
50-
assertThat(ranked.get(3).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(10);
51-
assertThat(ranked.get(4).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(10);
51+
assertThat(ranked.get(3).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(1);
52+
assertThat(ranked.get(4).getComponent(ScoreComponent.class).getPositionBonus()).isEqualTo(1);
5253
}
5354

5455
@Test
55-
void emptyEntityManagerProducesEmptyRanking() {
56+
void emptyEntityManagerProducesEmptyRanking(Env env) {
5657
assertThat(MinestomEndPhase.rankAndApplyBonuses(new EntityManager())).isEmpty();
5758
}
5859

59-
private static Entity player(EntityManager em, String username, int ringPoints) {
60-
Player player = mock(Player.class);
61-
UUID id = UUID.randomUUID();
62-
when(player.getUuid()).thenReturn(id);
63-
when(player.getUsername()).thenReturn(username);
64-
60+
private static Entity player(Env env, EntityManager em, int ringPoints) {
61+
var instance = env.createFlatInstance();
62+
var player = env.createPlayer(instance, new Pos(0, 64, 0));
6563
Entity entity = new Entity();
66-
entity.addComponent(new PlayerRefComponent(id, player));
64+
entity.addComponent(new PlayerRefComponent(player.getUuid(), player));
6765
ScoreComponent score = new ScoreComponent();
6866
score.addRingPoints(ringPoints);
6967
entity.addComponent(score);

0 commit comments

Comments
 (0)