Skip to content

Commit ec723bc

Browse files
committed
test: 补充测试用例
1 parent 4421307 commit ec723bc

File tree

4 files changed

+165
-0
lines changed

4 files changed

+165
-0
lines changed

spel-validator-core/src/test/java/cn/sticki/spel/validator/core/OtherTest.java

+24
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
package cn.sticki.spel.validator.core;
22

3+
import cn.sticki.spel.validator.core.constraint.SpelNotNullTest;
34
import cn.sticki.spel.validator.core.exception.SpelArgumentException;
45
import cn.sticki.spel.validator.core.exception.SpelParserException;
6+
import cn.sticki.spel.validator.core.exception.SpelValidatorException;
57
import cn.sticki.spel.validator.core.manager.AnnotationMethodManager;
8+
import cn.sticki.spel.validator.core.manager.ValidatorInstanceManager;
69
import cn.sticki.spel.validator.core.result.FieldValidResult;
710
import cn.sticki.spel.validator.core.result.ObjectValidResult;
811
import cn.sticki.spel.validator.core.util.BigDecimalUtil;
912
import cn.sticki.spel.validator.core.util.CalcLengthUtil;
1013
import cn.sticki.spel.validator.core.util.NumberComparatorUtil;
14+
import lombok.extern.slf4j.Slf4j;
1115
import org.junit.jupiter.api.Assertions;
1216
import org.junit.jupiter.api.Test;
17+
import org.springframework.stereotype.Service;
1318

19+
import java.lang.annotation.Annotation;
1420
import java.lang.reflect.Method;
1521
import java.math.BigDecimal;
1622
import java.util.ArrayList;
23+
import java.util.Collections;
1724
import java.util.OptionalInt;
1825

1926
/**
@@ -23,6 +30,7 @@
2330
* @version 1.0
2431
* @since 2024/10/13
2532
*/
33+
@Slf4j
2634
public class OtherTest {
2735

2836
@Test
@@ -40,6 +48,18 @@ void testAnnotationMethodManager() {
4048
Assertions.assertNotNull(assertTrue);
4149
}
4250

51+
@Test
52+
void testValidatorInstanceManager() {
53+
@Service
54+
@SpelNotNullTest
55+
class TestClass {
56+
}
57+
58+
Annotation[] annotations = TestClass.class.getAnnotations();
59+
Assertions.assertThrows(SpelValidatorException.class, () -> ValidatorInstanceManager.getInstance(annotations[0]));
60+
Assertions.assertThrows(SpelValidatorException.class, () -> ValidatorInstanceManager.getInstance(annotations[1]));
61+
}
62+
4363
@Test
4464
void testObjectValidResult() {
4565
ArrayList<FieldValidResult> list = new ArrayList<>();
@@ -50,6 +70,10 @@ void testObjectValidResult() {
5070
result.addFieldResults(list);
5171
Assertions.assertTrue(result.hasError());
5272
Assertions.assertEquals(1, result.getErrorSize());
73+
74+
result.addFieldError(null);
75+
result.addFieldError(Collections.emptyList());
76+
Assertions.assertEquals(1, result.getErrorSize());
5377
}
5478

5579
@Test
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package cn.sticki.spel.validator.core;
2+
3+
import cn.sticki.spel.validator.core.constraint.SpelNotNullTest;
4+
import cn.sticki.spel.validator.core.result.FieldValidResult;
5+
import org.junit.jupiter.api.Assertions;
6+
import org.junit.jupiter.api.Test;
7+
8+
import java.lang.annotation.Documented;
9+
import java.lang.annotation.Retention;
10+
import java.lang.annotation.Target;
11+
import java.lang.reflect.Field;
12+
13+
import static java.lang.annotation.ElementType.FIELD;
14+
import static java.lang.annotation.ElementType.TYPE;
15+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
16+
17+
/**
18+
* SpelValidExecutor 测试
19+
*
20+
* @author 阿杆
21+
* @since 2024/11/4
22+
*/
23+
public class SpelValidExecutorTest {
24+
25+
@Documented
26+
@Retention(RUNTIME)
27+
@Target({FIELD, TYPE})
28+
@SpelConstraint(validatedBy = TestValidator.class)
29+
@interface TestAnno1 {
30+
}
31+
32+
@Documented
33+
@Retention(RUNTIME)
34+
@Target({FIELD, TYPE})
35+
@SpelConstraint(validatedBy = TestValidator.class)
36+
@interface TestAnno2 {
37+
38+
String message() default "必须小于或等于 {value}";
39+
40+
}
41+
42+
@Documented
43+
@Retention(RUNTIME)
44+
@Target({FIELD, TYPE})
45+
@SpelConstraint(validatedBy = TestValidator.class)
46+
@interface TestAnno3 {
47+
48+
String message() default "必须小于或等于 {value}";
49+
50+
String condition() default "";
51+
52+
}
53+
54+
static class TestValidator implements SpelConstraintValidator<SpelNotNullTest> {
55+
56+
@Override
57+
public FieldValidResult isValid(SpelNotNullTest annotation, Object obj, Field field) throws IllegalAccessException {
58+
return null;
59+
}
60+
61+
}
62+
63+
static class TestClass1 {
64+
65+
@TestAnno1
66+
private String name;
67+
68+
}
69+
70+
static class TestClass2 {
71+
72+
@TestAnno2
73+
private String name;
74+
75+
}
76+
77+
static class TestClass3 {
78+
79+
@TestAnno3
80+
private String name;
81+
82+
}
83+
84+
@Test
85+
void test() {
86+
Assertions.assertTrue(SpelValidExecutor.validateObject(new TestClass1()).noneError());
87+
Assertions.assertTrue(SpelValidExecutor.validateObject(new TestClass2()).noneError());
88+
Assertions.assertTrue(SpelValidExecutor.validateObject(new TestClass3()).noneError());
89+
}
90+
91+
}
92+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package cn.sticki.spel.validator.core.constraint;
2+
3+
import cn.sticki.spel.validator.core.SpelConstraint;
4+
5+
import java.lang.annotation.Documented;
6+
import java.lang.annotation.Retention;
7+
import java.lang.annotation.Target;
8+
9+
import static java.lang.annotation.ElementType.FIELD;
10+
import static java.lang.annotation.ElementType.TYPE;
11+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
12+
13+
/**
14+
* 注解测试类
15+
*
16+
* @author 阿杆
17+
* @since 2024/11/4
18+
*/
19+
@Documented
20+
@Retention(RUNTIME)
21+
@Target({FIELD, TYPE})
22+
@SpelConstraint(validatedBy = SpelNotNullValidator.class)
23+
public @interface SpelNotNullTest {
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package cn.sticki.spel.validator.core.constraint;
2+
3+
import cn.sticki.spel.validator.core.SpelConstraintValidator;
4+
import cn.sticki.spel.validator.core.result.FieldValidResult;
5+
6+
import java.lang.reflect.Field;
7+
8+
/**
9+
* Test
10+
*
11+
* @author 阿杆
12+
* @version 1.0
13+
* @since 2024/5/1
14+
*/
15+
public class SpelNotNullValidator implements SpelConstraintValidator<SpelNotNullTest> {
16+
17+
private SpelNotNullValidator() {
18+
}
19+
20+
@Override
21+
public FieldValidResult isValid(SpelNotNullTest annotation, Object obj, Field field) throws IllegalAccessException {
22+
return new FieldValidResult(field.get(obj) != null);
23+
}
24+
25+
}

0 commit comments

Comments
 (0)