@@ -262,21 +262,116 @@ public function test_query_assign() {
262
262
}
263
263
264
264
/**
265
- * Test the block_grade_me_query_prefix function
265
+ * Test the function block_grade_me_query_assign using a maximum age.
266
+ *
267
+ * @depends test_load_db
266
268
*/
267
- public function test_query_prefix () {
268
- $ expected = "SELECT bgm.courseid, bgm.coursename, bgm.itemmodule, bgm.iteminstance, bgm.itemname, " .
269
- "bgm.coursemoduleid, bgm.itemsortorder " ;
270
- $ this ->assertEquals ($ expected , block_grade_me_query_prefix ());
269
+ public function test_query_assign_maxage () {
270
+ global $ DB ;
271
+
272
+ $ this ->resetAfterTest (true );
273
+
274
+ // 0 maxage indicates unlimited age.
275
+ set_config ('block_grade_me_maxage ' , 0 );
276
+ list ($ users , $ courses , $ plugins ) = $ this ->create_grade_me_data ('block_grade_me.xml ' );
277
+
278
+ $ rec = new stdClass ();
279
+ $ rec ->id = $ plugins [2 ]->id ;
280
+ $ rec ->courseid = $ courses [0 ]->id ;
281
+ $ rec ->submissionid = '2 ' ;
282
+ $ rec ->userid = $ users [0 ]->id ;
283
+ $ rec ->timesubmitted = '2 ' ;
284
+ $ rec ->attemptnumber = '1 ' ;
285
+ $ rec ->maxattempts = '-1 ' ;
286
+
287
+ $ rec2 = new stdClass ();
288
+ $ rec2 ->id = $ plugins [3 ]->id ;
289
+ $ rec2 ->courseid = $ courses [0 ]->id ;
290
+ $ rec2 ->submissionid = '3 ' ;
291
+ $ rec2 ->userid = $ users [0 ]->id ;
292
+ $ rec2 ->timesubmitted = '3 ' ;
293
+ $ rec2 ->attemptnumber = '1 ' ;
294
+ $ rec2 ->maxattempts = '-1 ' ;
295
+
296
+ // Tests resubmission.
297
+ $ rec3 = new stdClass ();
298
+ $ rec3 ->id = $ plugins [4 ]->id ;
299
+ $ rec3 ->courseid = $ courses [0 ]->id ;
300
+ $ rec3 ->submissionid = '7 ' ;
301
+ $ rec3 ->userid = $ users [0 ]->id ;
302
+ $ rec3 ->timesubmitted = '6 ' ;
303
+ $ rec3 ->attemptnumber = '1 ' ;
304
+ $ rec3 ->maxattempts = '-1 ' ;
305
+
306
+ $ rec4 = new stdClass ();
307
+ $ rec4 ->id = $ plugins [1 ]->id ;
308
+ $ rec4 ->courseid = $ courses [0 ]->id ;
309
+ $ rec4 ->submissionid = '1 ' ;
310
+ $ rec4 ->userid = $ users [0 ]->id ;
311
+ $ rec4 ->timesubmitted = '1 ' ;
312
+ $ rec4 ->attemptnumber = '1 ' ;
313
+ $ rec4 ->maxattempts = '-1 ' ;
314
+
315
+ $ expected = array ($ rec ->id => $ rec , $ rec2 ->id => $ rec2 , $ rec3 ->id => $ rec3 , $ rec4 ->id => $ rec4 );
316
+ list ($ sql , $ inparams ) = block_grade_me_query_assign (array ($ users [0 ]->id ));
317
+ $ query = block_grade_me_query_prefix ().', a.id as assignid ' .$ sql .block_grade_me_query_suffix ('assign ' );
318
+ $ values = array_merge ($ inparams , ['courseid ' => $ courses [0 ]->id ]);
319
+ $ actual = [];
320
+ $ rs = $ DB ->get_recordset_sql ($ query , $ values );
321
+ foreach ($ rs as $ record ) {
322
+ $ actual [$ record ->assignid ] = (object )[
323
+ 'id ' => $ record ->assignid ,
324
+ 'courseid ' => $ record ->courseid ,
325
+ 'submissionid ' => $ record ->submissionid ,
326
+ 'userid ' => $ record ->userid ,
327
+ 'timesubmitted ' => $ record ->timesubmitted ,
328
+ 'attemptnumber ' => $ record ->attemptnumber ,
329
+ 'maxattempts ' => $ record ->maxattempts
330
+ ];
331
+ }
332
+ $ this ->assertEquals ($ expected , $ actual );
333
+ $ this ->assertFalse (block_grade_me_query_assign (array ()));
334
+
335
+ // Test with a maximum age.
336
+ set_config ('block_grade_me_maxage ' , 10 );
337
+ $ now = time ();
338
+ $ oldesttimestamp = $ now - (10 *DAYSECS );
339
+ // Set all submissions to be current, therefore included.
340
+ $ DB ->execute ('UPDATE {assign_submission} SET timemodified = ' .$ now );
341
+ // Set submission 2 to be older than configured max age.
342
+ $ DB ->execute ('UPDATE {assign_submission} SET timemodified = ' .($ oldesttimestamp -1000 ).' WHERE id = 2 ' );
343
+ // Expected array should now not include $rec.
344
+ $ expected = array ($ rec2 ->id => $ rec2 , $ rec3 ->id => $ rec3 , $ rec4 ->id => $ rec4 );
345
+ foreach ($ expected as $ id => $ record ) {
346
+ $ expected [$ id ]->timesubmitted = $ now ;
347
+ }
348
+ list ($ sql , $ inparams ) = block_grade_me_query_assign (array ($ users [0 ]->id ));
349
+ $ query = block_grade_me_query_prefix ().', a.id as assignid ' .$ sql .block_grade_me_query_suffix ('assign ' );
350
+ $ values = array_merge ($ inparams , ['courseid ' => $ courses [0 ]->id ]);
351
+ $ actual = [];
352
+ $ rs = $ DB ->get_recordset_sql ($ query , $ values );
353
+ foreach ($ rs as $ record ) {
354
+ $ actual [$ record ->assignid ] = (object )[
355
+ 'id ' => $ record ->assignid ,
356
+ 'courseid ' => $ record ->courseid ,
357
+ 'submissionid ' => $ record ->submissionid ,
358
+ 'userid ' => $ record ->userid ,
359
+ 'timesubmitted ' => $ record ->timesubmitted ,
360
+ 'attemptnumber ' => $ record ->attemptnumber ,
361
+ 'maxattempts ' => $ record ->maxattempts
362
+ ];
363
+ }
364
+ $ this ->assertEquals ($ expected , $ actual );
365
+ $ this ->assertFalse (block_grade_me_query_assign (array ()));
271
366
}
272
367
273
368
/**
274
- * Test the block_grade_me_query_suffix function
369
+ * Test the block_grade_me_query_prefix function
275
370
*/
276
- public function test_query_suffix () {
277
- $ expected = " AND bgm.courseid = ?
278
- AND bgm.itemmodule = 'assign' " ;
279
- $ this ->assertEquals ($ expected , block_grade_me_query_suffix ( ' assign ' ));
371
+ public function test_query_prefix () {
372
+ $ expected = "SELECT * FROM (SELECT bgm.courseid, bgm.coursename, bgm.itemmodule, bgm.iteminstance, bgm.itemname, " .
373
+ " bgm.coursemoduleid, bgm.itemsortorder " ;
374
+ $ this ->assertEquals ($ expected , block_grade_me_query_prefix ( ));
280
375
}
281
376
282
377
/**
0 commit comments