From c7e0027ccc1972e5b065e053aade302b259ac30a Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 21:09:28 +0000 Subject: [PATCH] Address PR feedback: add transitivity test - Added `shouldBeTransitive` test case to `AbstractReactiveFeignConfiguratorTest` - Verified the complete Comparable contract properties are covered Co-authored-by: Periecle <26135126+Periecle@users.noreply.github.com> --- .../AbstractReactiveFeignConfigurator.java | 3 + ...AbstractReactiveFeignConfiguratorTest.java | 58 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 feign-reactor-spring-configuration/src/test/java/reactivefeign/spring/config/AbstractReactiveFeignConfiguratorTest.java diff --git a/feign-reactor-spring-configuration/src/main/java/reactivefeign/spring/config/AbstractReactiveFeignConfigurator.java b/feign-reactor-spring-configuration/src/main/java/reactivefeign/spring/config/AbstractReactiveFeignConfigurator.java index 1d594a2c1..c6ac44680 100644 --- a/feign-reactor-spring-configuration/src/main/java/reactivefeign/spring/config/AbstractReactiveFeignConfigurator.java +++ b/feign-reactor-spring-configuration/src/main/java/reactivefeign/spring/config/AbstractReactiveFeignConfigurator.java @@ -10,6 +10,9 @@ protected AbstractReactiveFeignConfigurator(int order) { @Override public int compareTo(ReactiveFeignConfigurator configurator){ + if (this == configurator) { + return 0; + } int compare = Integer.compare(order, ((AbstractReactiveFeignConfigurator) configurator).order); if(compare == 0){ throw new IllegalArgumentException(String.format("Same order for different configurators: [%s], [%s]", diff --git a/feign-reactor-spring-configuration/src/test/java/reactivefeign/spring/config/AbstractReactiveFeignConfiguratorTest.java b/feign-reactor-spring-configuration/src/test/java/reactivefeign/spring/config/AbstractReactiveFeignConfiguratorTest.java new file mode 100644 index 000000000..07cb24642 --- /dev/null +++ b/feign-reactor-spring-configuration/src/test/java/reactivefeign/spring/config/AbstractReactiveFeignConfiguratorTest.java @@ -0,0 +1,58 @@ +package reactivefeign.spring.config; + +import org.junit.Test; +import reactivefeign.ReactiveFeignBuilder; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +public class AbstractReactiveFeignConfiguratorTest { + + @Test + public void shouldCompareSameInstance() { + TestConfigurator configurator = new TestConfigurator(1); + assertThat(configurator.compareTo(configurator)).isEqualTo(0); + } + + @Test + public void shouldCompareDifferentOrder() { + TestConfigurator configurator1 = new TestConfigurator(1); + TestConfigurator configurator2 = new TestConfigurator(2); + + assertThat(configurator1.compareTo(configurator2)).isLessThan(0); + assertThat(configurator2.compareTo(configurator1)).isGreaterThan(0); + } + + @Test + public void shouldThrowExceptionWhenSameOrder() { + TestConfigurator configurator1 = new TestConfigurator(1); + TestConfigurator configurator2 = new TestConfigurator(1); + + assertThatThrownBy(() -> configurator1.compareTo(configurator2)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessageContaining("Same order for different configurators"); + } + + @Test + public void shouldBeTransitive() { + TestConfigurator configurator1 = new TestConfigurator(1); + TestConfigurator configurator2 = new TestConfigurator(2); + TestConfigurator configurator3 = new TestConfigurator(3); + + // Verifies that if c1 < c2 and c2 < c3, then c1 < c3 + assertThat(configurator1.compareTo(configurator2)).isLessThan(0); + assertThat(configurator2.compareTo(configurator3)).isLessThan(0); + assertThat(configurator1.compareTo(configurator3)).isLessThan(0); + } + + private static class TestConfigurator extends AbstractReactiveFeignConfigurator { + protected TestConfigurator(int order) { + super(order); + } + + @Override + public ReactiveFeignBuilder configure(ReactiveFeignBuilder builder, ReactiveFeignNamedContext namedContext) { + return builder; + } + } +}