Skip to content

Commit 1ee0ce7

Browse files
committed
update tests
1 parent 98524c7 commit 1ee0ce7

1 file changed

Lines changed: 176 additions & 0 deletions

File tree

src/test/java/it/aboutbits/springboot/toolbox/parameter/SortParameterTest.java

Lines changed: 176 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,182 @@ void unsorted() {
4343
}
4444
}
4545

46+
@Nested
47+
class By {
48+
@Test
49+
void byMultipleDefinitions_shouldCreateSortParameter() {
50+
// when
51+
var item = SortParameter.by(ESort.Property1, ESort.property3, ESort.Property2);
52+
53+
// then
54+
assertThat(item.sortFields()).hasSize(3);
55+
assertThat(item.sortFields().get(0).property()).isEqualTo("Property1");
56+
assertThat(item.sortFields().get(0).direction()).isEqualTo(Sort.Direction.ASC);
57+
assertThat(item.sortFields().get(0).nullHandling()).isEqualTo(Sort.NullHandling.NATIVE);
58+
assertThat(item.sortFields().get(1).property()).isEqualTo("property3");
59+
assertThat(item.sortFields().get(1).direction()).isEqualTo(Sort.Direction.ASC);
60+
assertThat(item.sortFields().get(1).nullHandling()).isEqualTo(Sort.NullHandling.NATIVE);
61+
assertThat(item.sortFields().get(2).property()).isEqualTo("Property2");
62+
assertThat(item.sortFields().get(2).direction()).isEqualTo(Sort.Direction.ASC);
63+
assertThat(item.sortFields().get(2).nullHandling()).isEqualTo(Sort.NullHandling.NATIVE);
64+
}
65+
66+
@Test
67+
void bySingleDefinition_shouldCreateSortParameter() {
68+
// when
69+
var item = SortParameter.by(ESort.Property1);
70+
71+
// then
72+
assertThat(item.sortFields()).hasSize(1);
73+
assertThat(item.sortFields().get(0).property()).isEqualTo("Property1");
74+
assertThat(item.sortFields().get(0).direction()).isEqualTo(Sort.Direction.ASC);
75+
assertThat(item.sortFields().get(0).nullHandling()).isEqualTo(Sort.NullHandling.NATIVE);
76+
}
77+
78+
@Test
79+
void byDefinitionAndDirection_shouldCreateSortParameter() {
80+
// when
81+
var item = SortParameter.by(ESort.Property1, Sort.Direction.DESC);
82+
83+
// then
84+
assertThat(item.sortFields()).hasSize(1);
85+
assertThat(item.sortFields().get(0).property()).isEqualTo("Property1");
86+
assertThat(item.sortFields().get(0).direction()).isEqualTo(Sort.Direction.DESC);
87+
assertThat(item.sortFields().get(0).nullHandling()).isEqualTo(Sort.NullHandling.NATIVE);
88+
}
89+
90+
@Test
91+
void byDefinitionDirectionAndNullHandling_shouldCreateSortParameter() {
92+
// when
93+
var item = SortParameter.by(ESort.Property1, Sort.Direction.DESC, Sort.NullHandling.NULLS_FIRST);
94+
95+
// then
96+
assertThat(item.sortFields()).hasSize(1);
97+
assertThat(item.sortFields().get(0).property()).isEqualTo("Property1");
98+
assertThat(item.sortFields().get(0).direction()).isEqualTo(Sort.Direction.DESC);
99+
assertThat(item.sortFields().get(0).nullHandling()).isEqualTo(Sort.NullHandling.NULLS_FIRST);
100+
}
101+
}
102+
103+
@Nested
104+
class And {
105+
@Test
106+
void andMultipleDefinitions_shouldAddSortFields() {
107+
// given
108+
var item = SortParameter.by(ESort.Property1);
109+
110+
// when
111+
item.and(ESort.property3, ESort.Property2);
112+
113+
// then
114+
assertThat(item.sortFields()).hasSize(3);
115+
assertThat(item.sortFields().get(0).property()).isEqualTo("Property1");
116+
assertThat(item.sortFields().get(1).property()).isEqualTo("property3");
117+
assertThat(item.sortFields().get(1).direction()).isEqualTo(Sort.Direction.ASC);
118+
assertThat(item.sortFields().get(1).nullHandling()).isEqualTo(Sort.NullHandling.NATIVE);
119+
assertThat(item.sortFields().get(2).property()).isEqualTo("Property2");
120+
assertThat(item.sortFields().get(2).direction()).isEqualTo(Sort.Direction.ASC);
121+
assertThat(item.sortFields().get(2).nullHandling()).isEqualTo(Sort.NullHandling.NATIVE);
122+
}
123+
124+
@Test
125+
void andDefinitionAndDirection_shouldAddSortField() {
126+
// given
127+
var item = SortParameter.by(ESort.Property1);
128+
129+
// when
130+
item.and(ESort.property3, Sort.Direction.DESC);
131+
132+
// then
133+
assertThat(item.sortFields()).hasSize(2);
134+
assertThat(item.sortFields().get(0).property()).isEqualTo("Property1");
135+
assertThat(item.sortFields().get(1).property()).isEqualTo("property3");
136+
assertThat(item.sortFields().get(1).direction()).isEqualTo(Sort.Direction.DESC);
137+
assertThat(item.sortFields().get(1).nullHandling()).isEqualTo(Sort.NullHandling.NATIVE);
138+
}
139+
140+
@Test
141+
void andDefinitionDirectionAndNullHandling_shouldAddSortField() {
142+
// given
143+
var item = SortParameter.by(ESort.Property1);
144+
145+
// when
146+
item.and(ESort.property3, Sort.Direction.DESC, Sort.NullHandling.NULLS_LAST);
147+
148+
// then
149+
assertThat(item.sortFields()).hasSize(2);
150+
assertThat(item.sortFields().get(0).property()).isEqualTo("Property1");
151+
assertThat(item.sortFields().get(1).property()).isEqualTo("property3");
152+
assertThat(item.sortFields().get(1).direction()).isEqualTo(Sort.Direction.DESC);
153+
assertThat(item.sortFields().get(1).nullHandling()).isEqualTo(Sort.NullHandling.NULLS_LAST);
154+
}
155+
156+
@Test
157+
void andChaining_shouldAddMultipleSortFields() {
158+
// given
159+
var item = SortParameter.by(ESort.Property1)
160+
.and(ESort.property3, Sort.Direction.DESC)
161+
.and(ESort.Property2, Sort.Direction.ASC, Sort.NullHandling.NULLS_FIRST);
162+
163+
// then
164+
assertThat(item.sortFields()).hasSize(3);
165+
assertThat(item.sortFields().get(0).property()).isEqualTo("Property1");
166+
assertThat(item.sortFields().get(1).property()).isEqualTo("property3");
167+
assertThat(item.sortFields().get(1).direction()).isEqualTo(Sort.Direction.DESC);
168+
assertThat(item.sortFields().get(2).property()).isEqualTo("Property2");
169+
assertThat(item.sortFields().get(2).direction()).isEqualTo(Sort.Direction.ASC);
170+
assertThat(item.sortFields().get(2).nullHandling()).isEqualTo(Sort.NullHandling.NULLS_FIRST);
171+
}
172+
}
173+
174+
@Nested
175+
class Or {
176+
@Test
177+
void orWithEmptySortFields_shouldReturnFallback() {
178+
// given
179+
var item = SortParameter.<ESort>unsorted();
180+
var fallback = SortParameter.by(ESort.Property1);
181+
182+
// when
183+
var result = item.or(fallback);
184+
185+
// then
186+
assertThat(result).isEqualTo(fallback);
187+
assertThat(result.sortFields()).hasSize(1);
188+
assertThat(result.sortFields().get(0).property()).isEqualTo("Property1");
189+
}
190+
191+
@Test
192+
void orWithNullSortFields_shouldReturnFallback() {
193+
// given
194+
var item = new SortParameter<ESort>(null);
195+
var fallback = SortParameter.by(ESort.Property1);
196+
197+
// when
198+
var result = item.or(fallback);
199+
200+
// then
201+
assertThat(result).isEqualTo(fallback);
202+
assertThat(result.sortFields()).hasSize(1);
203+
assertThat(result.sortFields().get(0).property()).isEqualTo("Property1");
204+
}
205+
206+
@Test
207+
void orWithNonEmptySortFields_shouldReturnThis() {
208+
// given
209+
var item = SortParameter.by(ESort.property3);
210+
var fallback = SortParameter.by(ESort.Property1);
211+
212+
// when
213+
var result = item.or(fallback);
214+
215+
// then
216+
assertThat(result).isEqualTo(item);
217+
assertThat(result.sortFields()).hasSize(1);
218+
assertThat(result.sortFields().get(0).property()).isEqualTo("property3");
219+
}
220+
}
221+
46222
@Nested
47223
class BuildSortWithoutDefault {
48224
@Test

0 commit comments

Comments
 (0)