@@ -240,6 +240,134 @@ def testGetLimitedNested(self):
240240 rv = loads (r .data )
241241 self .assertEqual (len (rv ['replies' ]), 10 )
242242
243+ def testGetWithOffset (self ):
244+ for i in range (5 ):
245+ self .post ('/new?uri=test' , data = json .dumps ({'text' : '...' }))
246+
247+ r = self .get ('/?uri=test&limit=3&offset=2' )
248+ self .assertEqual (r .status_code , 200 )
249+
250+ rv = loads (r .data )
251+ self .assertEqual (
252+ [comment ['id' ] for comment in rv ['replies' ]],
253+ [3 , 4 , 5 ]
254+ )
255+
256+ def testGetWithOffsetIgnoredWithoutLimit (self ):
257+ for i in range (5 ):
258+ self .post ('/new?uri=test' , data = json .dumps ({'text' : '...' }))
259+
260+ r = self .get ('/?uri=test&offset=2' )
261+ self .assertEqual (r .status_code , 200 )
262+
263+ rv = loads (r .data )
264+ self .assertEqual (
265+ [comment ['id' ] for comment in rv ['replies' ]],
266+ [1 , 2 , 3 , 4 , 5 ]
267+ )
268+
269+ def testGetNestedWithOffset (self ):
270+
271+ self .post ('/new?uri=test' , data = json .dumps ({'text' : '...' }))
272+ for i in range (5 ):
273+ self .post ('/new?uri=test' ,
274+ data = json .dumps ({'text' : '...' , 'parent' : 1 }))
275+
276+ r = self .get ('/?uri=test&parent=1&limit=3&offset=2' )
277+ self .assertEqual (r .status_code , 200 )
278+
279+ rv = loads (r .data )
280+ self .assertEqual (
281+ [comment ['id' ] for comment in rv ['replies' ]],
282+ [4 , 5 , 6 ]
283+ )
284+
285+ def testGetSortedByOldest (self ):
286+ for i in range (5 ):
287+ self .post ('/new?uri=test' , data = json .dumps ({'text' : '...' }))
288+
289+ r = self .get ('/?uri=test&sort=oldest' )
290+ self .assertEqual (r .status_code , 200 )
291+
292+ rv = loads (r .data )
293+ # assert order of comments is oldest first
294+ self .assertEqual (
295+ [comment ['id' ] for comment in rv ['replies' ]],
296+ [1 , 2 , 3 , 4 , 5 ]
297+ )
298+
299+ def testGetSortedByNewest (self ):
300+ for i in range (5 ):
301+ self .post ('/new?uri=test' , data = json .dumps ({'text' : '...' }))
302+
303+ r = self .get ('/?uri=test&sort=newest' )
304+ self .assertEqual (r .status_code , 200 )
305+
306+ rv = loads (r .data )
307+ # assert order of comments is newest first
308+ self .assertEqual (
309+ [comment ['id' ] for comment in rv ['replies' ]],
310+ [5 , 4 , 3 , 2 , 1 ]
311+ )
312+
313+ def testGetSortedByUpvotes (self ):
314+ for i in range (5 ):
315+ self .post ('/new?uri=test' , data = json .dumps ({'text' : '...' }))
316+
317+ # update the likes for some comments
318+ self .app .db .execute (
319+ 'UPDATE comments SET likes = id WHERE id IN (2, 4)'
320+ )
321+
322+ r = self .get ('/?uri=test&sort=upvotes' )
323+ self .assertEqual (r .status_code , 200 )
324+
325+ rv = loads (r .data )
326+ # assert order of comments is by upvotes
327+ self .assertEqual (
328+ [comment ['id' ] for comment in rv ['replies' ]],
329+ [4 , 2 , 1 , 3 , 5 ]
330+ )
331+
332+ def testGetSortedByNewestWithNested (self ):
333+ self .post ('/new?uri=test' , data = json .dumps ({'text' : '...' }))
334+ for i in range (5 ):
335+ self .post ('/new?uri=test' ,
336+ data = json .dumps ({'text' : '...' , 'parent' : 1 }))
337+
338+ r = self .get ('/?uri=test&sort=newest' )
339+ self .assertEqual (r .status_code , 200 )
340+
341+ rv = loads (r .data )
342+ self .assertEqual (len (rv ['replies' ]), 1 )
343+ # assert order of nested comments is newest first
344+ self .assertEqual (
345+ [comment ['id' ] for comment in rv ['replies' ][0 ]['replies' ]],
346+ [6 , 5 , 4 , 3 , 2 ]
347+ )
348+
349+ def testGetSortedByUpvotesWithNested (self ):
350+ self .post ('/new?uri=test' , data = json .dumps ({'text' : '...' }))
351+ for i in range (5 ):
352+ self .post ('/new?uri=test' ,
353+ data = json .dumps ({'text' : '...' , 'parent' : 1 }))
354+
355+ # update the likes for some comments
356+ self .app .db .execute (
357+ 'UPDATE comments SET likes = id WHERE id IN (3, 6)'
358+ )
359+
360+ r = self .get ('/?uri=test&sort=upvotes' )
361+ self .assertEqual (r .status_code , 200 )
362+
363+ rv = loads (r .data )
364+ self .assertEqual (len (rv ['replies' ]), 1 )
365+ # assert order of nested comments is newest first
366+ self .assertEqual (
367+ [comment ['id' ] for comment in rv ['replies' ][0 ]['replies' ]],
368+ [6 , 3 , 2 , 4 , 5 ]
369+ )
370+
243371 def testUpdate (self ):
244372
245373 self .post ('/new?uri=%2Fpath%2F' ,
0 commit comments