diff --git a/api/src/main/java/run/halo/app/extension/router/selector/Operator.java b/api/src/main/java/run/halo/app/extension/router/selector/Operator.java index cab3dc127..410254b4e 100644 --- a/api/src/main/java/run/halo/app/extension/router/selector/Operator.java +++ b/api/src/main/java/run/halo/app/extension/router/selector/Operator.java @@ -44,7 +44,7 @@ public enum Operator implements Converter { public SelectorCriteria convert(@Nullable String selector) { if (preFlightCheck(selector, 4)) { var i = selector.indexOf(getOperator()); - if (i > 0 && (i + getOperator().length()) < selector.length() - 1) { + if (i > 0 && (i + getOperator().length()) < selector.length()) { String key = selector.substring(0, i); String value = selector.substring(i + getOperator().length()); return new SelectorCriteria(key, this, Set.of(value)); diff --git a/api/src/test/java/run/halo/app/extension/router/selector/OperatorTest.java b/api/src/test/java/run/halo/app/extension/router/selector/OperatorTest.java index ae426277c..dc34d7d9b 100644 --- a/api/src/test/java/run/halo/app/extension/router/selector/OperatorTest.java +++ b/api/src/test/java/run/halo/app/extension/router/selector/OperatorTest.java @@ -27,7 +27,7 @@ class OperatorTest { new TestCase("name=", Equals, null), new TestCase("name=value", Equals, new SelectorCriteria("name", Equals, Set.of("value"))), - new TestCase("name=v", Equals, + new TestCase("name=v", Equals, new SelectorCriteria("name", Equals, Set.of("v"))), new TestCase("", NotEquals, null), @@ -45,6 +45,10 @@ class OperatorTest { new TestCase("name", NotExist, null), new TestCase("na!me", NotExist, null), new TestCase("name!", NotExist, null), + new TestCase("name!=1", NotEquals, + new SelectorCriteria("name", NotEquals, Set.of("1"))), + new TestCase("name!=12", NotEquals, + new SelectorCriteria("name", NotEquals, Set.of("12"))), new TestCase("name", Exist, new SelectorCriteria("name", Exist, Set.of())), new TestCase("", Exist, null), @@ -61,4 +65,5 @@ class OperatorTest { assertEquals(testCase.expected(), testCase.converter().convert(testCase.source())); }); } + }