better enricher attempt
This commit is contained in:
@@ -168,7 +168,7 @@ class TransitionLinkerEnricherTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldIgnoreWildcardWhenContextMachineIdIsMissing() {
|
||||
void shouldAllowWildcardWhenContextMachineIdIsMissing() {
|
||||
Transition t1 = new Transition();
|
||||
t1.setSourceStates(List.of(State.of("NEW", "NEW")));
|
||||
t1.setTargetStates(List.of(State.of("PAID", "PAID")));
|
||||
@@ -176,7 +176,7 @@ class TransitionLinkerEnricherTest {
|
||||
|
||||
CallChain chain = CallChain.builder()
|
||||
.triggerPoint(TriggerPoint.builder().event("event").build())
|
||||
// Intentionally NO contextMachineId or stateMachineId
|
||||
// NO contextMachineId or stateMachineId
|
||||
.build();
|
||||
|
||||
AnalysisResult result = AnalysisResult.builder()
|
||||
@@ -188,6 +188,6 @@ class TransitionLinkerEnricherTest {
|
||||
enricher.enrich(result, null, null);
|
||||
|
||||
CallChain updatedChain = result.getMetadata().getCallChains().get(0);
|
||||
assertThat(updatedChain.getMatchedTransitions()).isNullOrEmpty();
|
||||
assertThat(updatedChain.getMatchedTransitions()).hasSize(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,4 +165,58 @@ class CallGraphBuilderTest {
|
||||
CallChain chain = chains.get(0);
|
||||
assertThat(chain.getTriggerPoint().getEvent()).isEqualTo("OrderEvents.CREATE");
|
||||
}
|
||||
|
||||
@Test
|
||||
void shouldResolveTriggerPointLocalVariableAcrossChain() throws IOException {
|
||||
String source = """
|
||||
package com.example;
|
||||
public class OrderController {
|
||||
private OrderService service;
|
||||
public void processOrderEvent(MyOrderEvent domainEvent) {
|
||||
doProcessOrderEvent(domainEvent);
|
||||
}
|
||||
|
||||
private void doProcessOrderEvent(MyOrderEvent domainEvent) {
|
||||
OrderEvents eventType = domainEvent.getType();
|
||||
service.updateOrderState(eventType);
|
||||
}
|
||||
}
|
||||
|
||||
class OrderService {
|
||||
public void updateOrderState(OrderEvents event) {
|
||||
// sendEvent
|
||||
}
|
||||
}
|
||||
|
||||
class MyOrderEvent {
|
||||
public OrderEvents getType() { return OrderEvents.PAY; }
|
||||
}
|
||||
|
||||
enum OrderEvents { CREATE, PAY }
|
||||
""";
|
||||
Path tempDir = Files.createTempDirectory("callgraph_test2");
|
||||
Files.writeString(tempDir.resolve("OrderConfig.java"), source);
|
||||
|
||||
CodebaseContext context = new CodebaseContext();
|
||||
context.scan(tempDir);
|
||||
|
||||
CallGraphBuilder builder = new CallGraphBuilder(context);
|
||||
|
||||
EntryPoint entryPoint = EntryPoint.builder()
|
||||
.className("com.example.OrderController")
|
||||
.methodName("processOrderEvent")
|
||||
.build();
|
||||
|
||||
TriggerPoint trigger = TriggerPoint.builder()
|
||||
.className("com.example.OrderService")
|
||||
.methodName("updateOrderState")
|
||||
.event("event")
|
||||
.build();
|
||||
|
||||
List<CallChain> chains = builder.findChains(List.of(entryPoint), List.of(trigger));
|
||||
|
||||
assertThat(chains).hasSize(1);
|
||||
CallChain chain = chains.get(0);
|
||||
assertThat(chain.getTriggerPoint().getEvent()).isEqualTo("domainEvent.getType()");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user