Skip to content

Commit fdf655d

Browse files
committed
Add test variations
1 parent fdad490 commit fdf655d

1 file changed

Lines changed: 188 additions & 1 deletion

File tree

database/db_test.go

Lines changed: 188 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ func (suite *DbTestSuite) TestGet() {
159159
assert.Equal(suite.T(), "gotten-value", object.Value)
160160
}
161161

162-
func (suite *DbTestSuite) TestQuery() {
162+
func (suite *DbTestSuite) TestQueryAll() {
163163
os.Setenv(constants.DB_URI, os.Getenv("TEST_DB_URI"))
164164
logging.Init()
165165
SetupDatabase()
@@ -193,6 +193,193 @@ func (suite *DbTestSuite) TestQuery() {
193193
assert.Equal(suite.T(), "", model2.Value)
194194
}
195195

196+
func (suite *DbTestSuite) TestQueryNone() {
197+
os.Setenv(constants.DB_URI, os.Getenv("TEST_DB_URI"))
198+
logging.Init()
199+
SetupDatabase()
200+
201+
// insert docs
202+
for i := 0; i < 10; i++ {
203+
doc := DBObject{
204+
Key: fmt.Sprintf("query-key-%d", i),
205+
Value: fmt.Sprintf("query-value-%d", i),
206+
}
207+
_, err := Insert[DBObject](os.Getenv("TEST_COLLECTION"), doc)
208+
assert.NoError(suite.T(), err)
209+
}
210+
211+
filter := bson.D{}
212+
sort := bson.D{}
213+
proj := bson.D{}
214+
var start int64 = 1
215+
limit := 2
216+
models, err := Query[DBObject](os.Getenv("TEST_COLLECTION"), filter, sort, proj, start, limit)
217+
assert.NotNil(suite.T(), models)
218+
assert.Nil(suite.T(), err)
219+
assert.Equal(suite.T(), limit, len(models))
220+
221+
model1 := models[0]
222+
assert.Equal(suite.T(), "query-key-1", model1.Key)
223+
assert.Equal(suite.T(), "", model1.Value)
224+
225+
model2 := models[1]
226+
assert.Equal(suite.T(), "query-key-2", model2.Key)
227+
assert.Equal(suite.T(), "", model2.Value)
228+
}
229+
230+
func (suite *DbTestSuite) TestQueryLimit0() {
231+
os.Setenv(constants.DB_URI, os.Getenv("TEST_DB_URI"))
232+
logging.Init()
233+
SetupDatabase()
234+
235+
// insert docs
236+
for i := 0; i < 10; i++ {
237+
doc := DBObject{
238+
Key: fmt.Sprintf("query-key-%d", i),
239+
Value: fmt.Sprintf("query-value-%d", i),
240+
}
241+
_, err := Insert[DBObject](os.Getenv("TEST_COLLECTION"), doc)
242+
assert.NoError(suite.T(), err)
243+
}
244+
245+
filter := bson.D{}
246+
sort := bson.D{}
247+
proj := bson.D{}
248+
var start int64 = 1
249+
limit := 0
250+
models, err := Query[DBObject](os.Getenv("TEST_COLLECTION"), filter, sort, proj, start, limit)
251+
assert.NotNil(suite.T(), models)
252+
assert.Nil(suite.T(), err)
253+
assert.Equal(suite.T(), limit, len(models))
254+
}
255+
256+
func (suite *DbTestSuite) TestQuerySorted() {
257+
os.Setenv(constants.DB_URI, os.Getenv("TEST_DB_URI"))
258+
logging.Init()
259+
SetupDatabase()
260+
261+
// insert docs
262+
for i := 0; i < 10; i++ {
263+
doc := DBObject{
264+
Key: fmt.Sprintf("query-key-%d", i),
265+
Value: fmt.Sprintf("query-value-%d", i),
266+
}
267+
_, err := Insert[DBObject](os.Getenv("TEST_COLLECTION"), doc)
268+
assert.NoError(suite.T(), err)
269+
}
270+
271+
filter := bson.D{}
272+
sort := bson.D{{Key: "key", Value: 1}} // Sort by key ascending
273+
proj := bson.D{}
274+
var start int64 = 1
275+
limit := 2
276+
models, err := Query[DBObject](os.Getenv("TEST_COLLECTION"), filter, sort, proj, start, limit)
277+
assert.NotNil(suite.T(), models)
278+
assert.Nil(suite.T(), err)
279+
assert.Equal(suite.T(), limit, len(models))
280+
281+
model1 := models[0]
282+
assert.Equal(suite.T(), "query-key-1", model1.Key)
283+
assert.Equal(suite.T(), "", model1.Value)
284+
285+
model2 := models[1]
286+
assert.Equal(suite.T(), "query-key-2", model2.Key)
287+
assert.Equal(suite.T(), "", model2.Value)
288+
}
289+
290+
func (suite *DbTestSuite) TestQueryFiltered() {
291+
os.Setenv(constants.DB_URI, os.Getenv("TEST_DB_URI"))
292+
logging.Init()
293+
SetupDatabase()
294+
295+
// insert docs
296+
for i := 0; i < 10; i++ {
297+
doc := DBObject{
298+
Key: fmt.Sprintf("query-key-%d", i),
299+
Value: fmt.Sprintf("query-value-%d", i),
300+
}
301+
_, err := Insert[DBObject](os.Getenv("TEST_COLLECTION"), doc)
302+
assert.NoError(suite.T(), err)
303+
}
304+
305+
filter := bson.D{{Key: "key", Value: bson.D{{Key: "$regex", Value: "^query-key-"}}}}
306+
sort := bson.D{}
307+
proj := bson.D{}
308+
var start int64 = 1
309+
limit := 2
310+
models, err := Query[DBObject](os.Getenv("TEST_COLLECTION"), filter, sort, proj, start, limit)
311+
assert.NotNil(suite.T(), models)
312+
assert.Nil(suite.T(), err)
313+
assert.Equal(suite.T(), limit, len(models))
314+
315+
model1 := models[0]
316+
assert.Equal(suite.T(), "query-key-1", model1.Key)
317+
assert.Equal(suite.T(), "", model1.Value)
318+
319+
model2 := models[1]
320+
assert.Equal(suite.T(), "query-key-2", model2.Key)
321+
assert.Equal(suite.T(), "", model2.Value)
322+
}
323+
324+
func (suite *DbTestSuite) TestQueryProjected() {
325+
os.Setenv(constants.DB_URI, os.Getenv("TEST_DB_URI"))
326+
logging.Init()
327+
SetupDatabase()
328+
329+
// insert docs
330+
for i := 0; i < 10; i++ {
331+
doc := DBObject{
332+
Key: fmt.Sprintf("query-key-%d", i),
333+
Value: fmt.Sprintf("query-value-%d", i),
334+
}
335+
_, err := Insert[DBObject](os.Getenv("TEST_COLLECTION"), doc)
336+
assert.NoError(suite.T(), err)
337+
}
338+
339+
filter := bson.D{}
340+
sort := bson.D{}
341+
proj := bson.D{{Key: "key", Value: 1}}
342+
var start int64 = 1
343+
limit := 2
344+
models, err := Query[DBObject](os.Getenv("TEST_COLLECTION"), filter, sort, proj, start, limit)
345+
assert.NotNil(suite.T(), models)
346+
assert.Nil(suite.T(), err)
347+
assert.Equal(suite.T(), limit, len(models))
348+
349+
model1 := models[0]
350+
assert.Equal(suite.T(), "query-key-1", model1.Key)
351+
assert.Equal(suite.T(), "", model1.Value)
352+
353+
model2 := models[1]
354+
assert.Equal(suite.T(), "query-key-2", model2.Key)
355+
assert.Equal(suite.T(), "", model2.Value)
356+
}
357+
358+
func (suite *DbTestSuite) TestQueryInvalidStart() {
359+
os.Setenv(constants.DB_URI, os.Getenv("TEST_DB_URI"))
360+
logging.Init()
361+
SetupDatabase()
362+
363+
// insert docs
364+
for i := 0; i < 10; i++ {
365+
doc := DBObject{
366+
Key: fmt.Sprintf("query-key-%d", i),
367+
Value: fmt.Sprintf("query-value-%d", i),
368+
}
369+
_, err := Insert[DBObject](os.Getenv("TEST_COLLECTION"), doc)
370+
assert.NoError(suite.T(), err)
371+
}
372+
373+
filter := bson.D{}
374+
sort := bson.D{}
375+
proj := bson.D{}
376+
var start int64 = -1
377+
limit := 2
378+
models, err := Query[DBObject](os.Getenv("TEST_COLLECTION"), filter, sort, proj, start, limit)
379+
assert.NotNil(suite.T(), err)
380+
assert.Nil(suite.T(), models)
381+
}
382+
196383
func TestDbTestSuite(t *testing.T) {
197384
suite.Run(t, new(DbTestSuite))
198385
}

0 commit comments

Comments
 (0)