|
21 | 21 |
|
22 | 22 | import io.micrometer.observation.ObservationRegistry;
|
23 | 23 | import org.junit.jupiter.api.Test;
|
| 24 | +import org.springframework.core.Ordered; |
24 | 25 | import reactor.core.publisher.Flux;
|
25 | 26 |
|
26 | 27 | import org.springframework.ai.chat.client.ChatClientRequest;
|
@@ -125,4 +126,42 @@ void getStreamAdvisors() {
|
125 | 126 | assertThat(chain.getStreamAdvisors()).containsExactlyInAnyOrder(advisors.toArray(new StreamAdvisor[0]));
|
126 | 127 | }
|
127 | 128 |
|
| 129 | + @Test |
| 130 | + void testOrder(){ |
| 131 | + TestOrderAdvisor advisor1 = new TestOrderAdvisor("advisor1", 1); |
| 132 | + TestOrderAdvisor advisor21 = new TestOrderAdvisor("advisor2_1", 2); |
| 133 | + TestOrderAdvisor advisor22 = new TestOrderAdvisor("advisor2_2", 2); |
| 134 | + TestOrderAdvisor advisor3 = new TestOrderAdvisor("advisor3", 3); |
| 135 | + |
| 136 | + var advisors = List.of(advisor3, advisor1, advisor21, advisor22); |
| 137 | + |
| 138 | + DefaultAroundAdvisorChain chain = DefaultAroundAdvisorChain.builder(ObservationRegistry.NOOP) |
| 139 | + .pushAll(advisors) |
| 140 | + .build(); |
| 141 | + |
| 142 | + assertThat(chain.getStreamAdvisors()).containsExactly(advisor1, advisor21, advisor22, advisor3); |
| 143 | + assertThat(chain.getCallAdvisors()).containsExactly(advisor1, advisor21, advisor22, advisor3); |
| 144 | + } |
| 145 | + |
| 146 | + private record TestOrderAdvisor(String name, int order) implements CallAdvisor, StreamAdvisor { |
| 147 | + @Override |
| 148 | + public String getName() { |
| 149 | + return name; |
| 150 | + } |
| 151 | + |
| 152 | + @Override |
| 153 | + public int getOrder() { |
| 154 | + return order; |
| 155 | + } |
| 156 | + |
| 157 | + @Override |
| 158 | + public ChatClientResponse adviseCall(ChatClientRequest chatClientRequest, CallAdvisorChain callAdvisorChain) { |
| 159 | + return null; |
| 160 | + } |
| 161 | + |
| 162 | + @Override |
| 163 | + public Flux<ChatClientResponse> adviseStream(ChatClientRequest chatClientRequest, StreamAdvisorChain streamAdvisorChain) { |
| 164 | + return null; |
| 165 | + } |
| 166 | + } |
128 | 167 | }
|
0 commit comments