ワンクリックで
projection-test-builder
Generate projection integration tests from STATE_VIEW specifications
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Generate projection integration tests from STATE_VIEW specifications
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| name | projection-test-builder |
| description | Generate projection integration tests from STATE_VIEW specifications |
Generate projection integration tests from STATE_VIEW slice specifications. Tests verify read model projection behavior using given/then structure.
given (events) and then (expected read model state){
"specifications": [
{
"title": "spec: cart items with removed item",
"given": [
{ "title": "Cart Created", "type": "SPEC_EVENT", "fields": [...] },
{ "title": "Item Added", "type": "SPEC_EVENT", "fields": [...] }
],
"then": [
{ "title": "cart items", "type": "SPEC_READMODEL", "fields": [...] }
],
"comments": [{ "description": "Read Model should display an empty list" }]
}
]
}
Location: src/test/java/de/eventmodelers/<context>/slices/<slicename>/<SliceName>ProjectionTest.java
ItemAddedEventCartCreatedEventpackage de.eventmodelers.<context>.slices.<slicename>;
import de.eventmodelers.<context>.slices.<slicename>.<SliceName>ReadModel;
import de.eventmodelers.<context>.slices.<slicename>.<SliceName>ReadModelQuery;
import de.eventmodelers.common.support.BaseIntegrationTest;
import de.eventmodelers.common.support.ProjectionFixtureConfiguration;
import de.eventmodelers.common.support.RandomData;
import de.eventmodelers.domain.<Aggregate>Aggregate;
import de.eventmodelers.events.*;
import org.axonframework.modelling.command.Repository;
import org.axonframework.queryhandling.QueryGateway;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.UUID;
import static de.eventmodelers.common.support.TestUtils.awaitUntilAsserted;
import static org.assertj.core.api.Assertions.assertThat;
class <SliceName>ProjectionTest extends BaseIntegrationTest {
@Autowired
private QueryGateway queryGateway;
@Autowired
private Repository<<Aggregate>Aggregate> repository;
}
@Test
void <specTitleAsCamelCase>() {
var aggregateId = UUID.randomUUID();
var fixture = ProjectionFixtureConfiguration.aggregateInstance(
() -> repository.newInstance(<Aggregate>Aggregate::new)
);
// Apply events from given[]
fixture.given(
RandomData.newInstance(<EventName>Event.class, event -> {
event.setAggregateId(aggregateId);
})
);
fixture.apply();
// Verify read model state from then[]
awaitUntilAsserted(() -> {
var readModel = queryGateway.query(
new <SliceName>ReadModelQuery(aggregateId),
<SliceName>ReadModel.class
).join();
assertThat(readModel).isNotNull();
// Assert expected field values from then[]
});
}
"example": "9.99" → assertThat(price).isEqualTo(9.99)"mapping": "productId" means map from productId field| Scenario | Assertion |
|---|---|
| Empty list | assertThat(readModel.data()).isEmpty() |
| List size | assertThat(readModel.data()).hasSize(2) |
| Field value | assertThat(readModel.data().totalPrice()).isEqualTo(19.98) |
| Existence | assertThat(readModel).isNotNull() |
Generate event-driven automation processors for AUTOMATION slices
Transform slice definitions from config.json into executable Java code
Generate commands, events, aggregates, REST controllers (POST), and tests for STATE_CHANGE slices
Generate read models, projectors, queries, and REST controllers (GET) for STATE_VIEW slices