feat(loader): quests.yaml loading + startQuest effect mapping

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-31 22:29:52 +02:00
parent 423cf85c39
commit fe9ac65f25
6 changed files with 123 additions and 3 deletions

View File

@@ -0,0 +1,38 @@
package thb.jeanluc.adventure.loader;
import org.junit.jupiter.api.Test;
import thb.jeanluc.adventure.loader.dto.ConditionDto;
import thb.jeanluc.adventure.loader.dto.EffectDto;
import thb.jeanluc.adventure.loader.dto.QuestDto;
import thb.jeanluc.adventure.loader.dto.QuestStageDto;
import thb.jeanluc.adventure.model.Effect;
import thb.jeanluc.adventure.model.Quest;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
class QuestLoadingTest {
@Test
void factoryMapsStagesConditionsAndEffects() {
QuestDto dto = new QuestDto("q", "Title", true,
List.of(new QuestStageDto("obj",
List.of(new ConditionDto("power_on", null, null)),
List.of(new EffectDto("done", null, null, null, null)))),
List.of());
Quest q = QuestFactory.fromDto(dto);
assertThat(q.autoStart()).isTrue();
assertThat(q.stages()).hasSize(1);
assertThat(q.stages().getFirst().objective()).isEqualTo("obj");
assertThat(q.stages().getFirst().completion()).hasSize(1);
assertThat(q.stages().getFirst().onComplete().getFirst().type()).isEqualTo(Effect.Type.SET_FLAG);
}
@Test
void startQuestEffectMaps() {
assertThat(new EffectDto(null, null, null, null, null, "q").toModel().type())
.isEqualTo(Effect.Type.START_QUEST);
}
}