1+ import io.github.jan.supabase.storage.BucketFilter
2+ import io.github.jan.supabase.storage.SortOrder
3+ import kotlin.test.Test
4+ import kotlin.test.assertEquals
5+ import kotlin.test.assertNull
6+
7+ class BucketFilterTest {
8+
9+ @Test
10+ fun testBucketFilterWithAllParameters () {
11+ val filter = BucketFilter ().apply {
12+ limit = 10
13+ offset = 5
14+ search = " test"
15+ sortBy(BucketFilter .SortColumn .NAME , SortOrder .ASC )
16+ }
17+ val params = filter.build()
18+ assertEquals(" 10" , params[" limit" ])
19+ assertEquals(" 5" , params[" offset" ])
20+ assertEquals(" test" , params[" search" ])
21+ assertEquals(" asc" , params[" sortOrder" ])
22+ assertEquals(" name" , params[" sortColumn" ])
23+ }
24+
25+ @Test
26+ fun testBucketFilterEmpty () {
27+ val filter = BucketFilter ()
28+ val params = filter.build()
29+ assertNull(params[" limit" ])
30+ assertNull(params[" offset" ])
31+ assertNull(params[" search" ])
32+ assertNull(params[" sortOrder" ])
33+ assertNull(params[" sortColumn" ])
34+ }
35+
36+ @Test
37+ fun testBucketFilterWithLimitOnly () {
38+ val filter = BucketFilter ().apply {
39+ limit = 20
40+ }
41+ val params = filter.build()
42+ assertEquals(" 20" , params[" limit" ])
43+ assertNull(params[" offset" ])
44+ assertNull(params[" search" ])
45+ assertNull(params[" sortOrder" ])
46+ assertNull(params[" sortColumn" ])
47+ }
48+
49+ @Test
50+ fun testBucketFilterWithOffsetOnly () {
51+ val filter = BucketFilter ().apply {
52+ offset = 15
53+ }
54+ val params = filter.build()
55+ assertNull(params[" limit" ])
56+ assertEquals(" 15" , params[" offset" ])
57+ assertNull(params[" search" ])
58+ assertNull(params[" sortOrder" ])
59+ assertNull(params[" sortColumn" ])
60+ }
61+
62+ @Test
63+ fun testBucketFilterWithSearchOnly () {
64+ val filter = BucketFilter ().apply {
65+ search = " my-bucket"
66+ }
67+ val params = filter.build()
68+ assertNull(params[" limit" ])
69+ assertNull(params[" offset" ])
70+ assertEquals(" my-bucket" , params[" search" ])
71+ assertNull(params[" sortOrder" ])
72+ assertNull(params[" sortColumn" ])
73+ }
74+
75+ @Test
76+ fun testBucketFilterWithLimitAndOffset () {
77+ val filter = BucketFilter ().apply {
78+ limit = 25
79+ offset = 50
80+ }
81+ val params = filter.build()
82+ assertEquals(" 25" , params[" limit" ])
83+ assertEquals(" 50" , params[" offset" ])
84+ assertNull(params[" search" ])
85+ assertNull(params[" sortOrder" ])
86+ assertNull(params[" sortColumn" ])
87+ }
88+
89+ @Test
90+ fun testBucketFilterSortByIdAscending () {
91+ val filter = BucketFilter ().apply {
92+ sortBy(BucketFilter .SortColumn .ID , SortOrder .ASC )
93+ }
94+ val params = filter.build()
95+ assertEquals(" id" , params[" sortColumn" ])
96+ assertEquals(" asc" , params[" sortOrder" ])
97+ }
98+
99+ @Test
100+ fun testBucketFilterSortByIdDescending () {
101+ val filter = BucketFilter ().apply {
102+ sortBy(BucketFilter .SortColumn .ID , SortOrder .DESC )
103+ }
104+ val params = filter.build()
105+ assertEquals(" id" , params[" sortColumn" ])
106+ assertEquals(" desc" , params[" sortOrder" ])
107+ }
108+
109+ @Test
110+ fun testBucketFilterSortByNameAscending () {
111+ val filter = BucketFilter ().apply {
112+ sortBy(BucketFilter .SortColumn .NAME , SortOrder .ASC )
113+ }
114+ val params = filter.build()
115+ assertEquals(" name" , params[" sortColumn" ])
116+ assertEquals(" asc" , params[" sortOrder" ])
117+ }
118+
119+ @Test
120+ fun testBucketFilterSortByNameDescending () {
121+ val filter = BucketFilter ().apply {
122+ sortBy(BucketFilter .SortColumn .NAME , SortOrder .DESC )
123+ }
124+ val params = filter.build()
125+ assertEquals(" name" , params[" sortColumn" ])
126+ assertEquals(" desc" , params[" sortOrder" ])
127+ }
128+
129+ @Test
130+ fun testBucketFilterSortByCreatedAtAscending () {
131+ val filter = BucketFilter ().apply {
132+ sortBy(BucketFilter .SortColumn .CREATED_AT , SortOrder .ASC )
133+ }
134+ val params = filter.build()
135+ assertEquals(" created_at" , params[" sortColumn" ])
136+ assertEquals(" asc" , params[" sortOrder" ])
137+ }
138+
139+ @Test
140+ fun testBucketFilterSortByCreatedAtDescending () {
141+ val filter = BucketFilter ().apply {
142+ sortBy(BucketFilter .SortColumn .CREATED_AT , SortOrder .DESC )
143+ }
144+ val params = filter.build()
145+ assertEquals(" created_at" , params[" sortColumn" ])
146+ assertEquals(" desc" , params[" sortOrder" ])
147+ }
148+
149+ @Test
150+ fun testBucketFilterSortByUpdatedAtAscending () {
151+ val filter = BucketFilter ().apply {
152+ sortBy(BucketFilter .SortColumn .UPDATED_AT , SortOrder .ASC )
153+ }
154+ val params = filter.build()
155+ assertEquals(" updated_at" , params[" sortColumn" ])
156+ assertEquals(" asc" , params[" sortOrder" ])
157+ }
158+
159+ @Test
160+ fun testBucketFilterSortByUpdatedAtDescending () {
161+ val filter = BucketFilter ().apply {
162+ sortBy(BucketFilter .SortColumn .UPDATED_AT , SortOrder .DESC )
163+ }
164+ val params = filter.build()
165+ assertEquals(" updated_at" , params[" sortColumn" ])
166+ assertEquals(" desc" , params[" sortOrder" ])
167+ }
168+
169+ @Test
170+ fun testBucketFilterSearchWithSpecialCharacters () {
171+ val filter = BucketFilter ().apply {
172+ search = " test-bucket_123"
173+ }
174+ val params = filter.build()
175+ assertEquals(" test-bucket_123" , params[" search" ])
176+ }
177+
178+ @Test
179+ fun testBucketFilterWithZeroLimit () {
180+ val filter = BucketFilter ().apply {
181+ limit = 0
182+ }
183+ val params = filter.build()
184+ assertEquals(" 0" , params[" limit" ])
185+ }
186+
187+ @Test
188+ fun testBucketFilterWithZeroOffset () {
189+ val filter = BucketFilter ().apply {
190+ offset = 0
191+ }
192+ val params = filter.build()
193+ assertEquals(" 0" , params[" offset" ])
194+ }
195+
196+ @Test
197+ fun testBucketFilterComplexScenario () {
198+ val filter = BucketFilter ().apply {
199+ limit = 50
200+ offset = 100
201+ search = " production"
202+ sortBy(BucketFilter .SortColumn .CREATED_AT , SortOrder .DESC )
203+ }
204+ val params = filter.build()
205+ assertEquals(" 50" , params[" limit" ])
206+ assertEquals(" 100" , params[" offset" ])
207+ assertEquals(" production" , params[" search" ])
208+ assertEquals(" created_at" , params[" sortColumn" ])
209+ assertEquals(" desc" , params[" sortOrder" ])
210+ }
211+
212+ @Test
213+ fun testBucketFilterWithLargeNumbers () {
214+ val filter = BucketFilter ().apply {
215+ limit = 1000
216+ offset = 5000
217+ }
218+ val params = filter.build()
219+ assertEquals(" 1000" , params[" limit" ])
220+ assertEquals(" 5000" , params[" offset" ])
221+ }
222+
223+ @Test
224+ fun testBucketFilterSearchWithEmptyString () {
225+ val filter = BucketFilter ().apply {
226+ search = " "
227+ }
228+ val params = filter.build()
229+ assertEquals(" " , params[" search" ])
230+ }
231+
232+ @Test
233+ fun testBucketFilterWithSearchAndSort () {
234+ val filter = BucketFilter ().apply {
235+ search = " images"
236+ sortBy(BucketFilter .SortColumn .UPDATED_AT , SortOrder .ASC )
237+ }
238+ val params = filter.build()
239+ assertEquals(" images" , params[" search" ])
240+ assertEquals(" updated_at" , params[" sortColumn" ])
241+ assertEquals(" asc" , params[" sortOrder" ])
242+ assertNull(params[" limit" ])
243+ assertNull(params[" offset" ])
244+ }
245+
246+ @Test
247+ fun testBucketFilterPaginationScenario () {
248+ val filter = BucketFilter ().apply {
249+ limit = 10
250+ offset = 30
251+ sortBy(BucketFilter .SortColumn .NAME , SortOrder .ASC )
252+ }
253+ val params = filter.build()
254+ assertEquals(" 10" , params[" limit" ])
255+ assertEquals(" 30" , params[" offset" ])
256+ assertEquals(" name" , params[" sortColumn" ])
257+ assertEquals(" asc" , params[" sortOrder" ])
258+ }
259+
260+ }
0 commit comments