Initial quant trader service baseline
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package com.quantai.trader.evidence;
|
||||
|
||||
import com.quantai.trader.TestFixtures;
|
||||
import com.quantai.trader.domain.StageDecision;
|
||||
import com.quantai.trader.domain.TraderEvidence;
|
||||
import com.quantai.trader.persistence.TraderEvidenceRepository;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class EvidenceAppenderTest {
|
||||
|
||||
@Test
|
||||
void appendsBlockingEvidenceToRepository() {
|
||||
CapturingEvidenceRepository repository = new CapturingEvidenceRepository();
|
||||
EvidenceAppender appender = new EvidenceAppender(repository);
|
||||
|
||||
appender.append(
|
||||
TestFixtures.cycle(com.quantai.trader.enums.TraderState.CONTEXT_CHECK),
|
||||
"CONTEXT_GATE",
|
||||
StageDecision.block("DATA_MISSING", "TRADER_DATA_QUALITY_FAILED")
|
||||
);
|
||||
|
||||
assertThat(repository.findByCycleId("trader_run_test", "trader_cycle_test"))
|
||||
.singleElement()
|
||||
.satisfies(evidence -> {
|
||||
assertThat(evidence.pass()).isFalse();
|
||||
assertThat(evidence.blocker()).isEqualTo("TRADER_DATA_QUALITY_FAILED");
|
||||
});
|
||||
}
|
||||
|
||||
private static class CapturingEvidenceRepository implements TraderEvidenceRepository {
|
||||
private final List<TraderEvidence> evidence = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void insert(TraderEvidence evidence) {
|
||||
this.evidence.add(evidence);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TraderEvidence> findByCycleId(String runId, String cycleId) {
|
||||
return evidence.stream()
|
||||
.filter(item -> item.runId().equals(runId) && item.cycleId().equals(cycleId))
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user