Línea 40... |
Línea 40... |
40 |
* @package mod_glossary
|
40 |
* @package mod_glossary
|
41 |
* @category external
|
41 |
* @category external
|
42 |
* @copyright 2015 Costantino Cito <ccito@cvaconsulting.com>
|
42 |
* @copyright 2015 Costantino Cito <ccito@cvaconsulting.com>
|
43 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
43 |
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
44 |
*/
|
44 |
*/
|
45 |
class external_test extends externallib_advanced_testcase {
|
45 |
final class external_test extends externallib_advanced_testcase {
|
Línea 46... |
Línea 46... |
46 |
|
46 |
|
47 |
/**
|
47 |
/**
|
48 |
* Test get_glossaries_by_courses
|
48 |
* Test get_glossaries_by_courses
|
49 |
*/
|
49 |
*/
|
Línea 365... |
Línea 365... |
365 |
$this->assertEquals($e1c->id, $return['entries'][1]['id']);
|
365 |
$this->assertEquals($e1c->id, $return['entries'][1]['id']);
|
366 |
$this->assertEquals($e1a->id, $return['entries'][2]['id']);
|
366 |
$this->assertEquals($e1a->id, $return['entries'][2]['id']);
|
Línea 367... |
Línea 367... |
367 |
|
367 |
|
368 |
// Ordering including to approve.
|
368 |
// Ordering including to approve.
|
369 |
$return = mod_glossary_external::get_entries_by_date($g1->id, 'CREATION', 'ASC', 0, 20,
|
369 |
$return = mod_glossary_external::get_entries_by_date($g1->id, 'CREATION', 'ASC', 0, 20,
|
370 |
array('includenotapproved' => true));
|
370 |
['includenotapproved' => true]);
|
371 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_date_returns(), $return);
|
371 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_date_returns(), $return);
|
372 |
$this->assertCount(4, $return['entries']);
|
372 |
$this->assertCount(4, $return['entries']);
|
373 |
$this->assertEquals(4, $return['count']);
|
373 |
$this->assertEquals(4, $return['count']);
|
374 |
$this->assertEquals($e1a->id, $return['entries'][0]['id']);
|
374 |
$this->assertEquals($e1a->id, $return['entries'][0]['id']);
|
375 |
$this->assertEquals($e1c->id, $return['entries'][1]['id']);
|
375 |
$this->assertEquals($e1c->id, $return['entries'][1]['id']);
|
376 |
$this->assertEquals($e1d->id, $return['entries'][2]['id']);
|
376 |
$this->assertEquals($e1d->id, $return['entries'][2]['id']);
|
Línea 377... |
Línea 377... |
377 |
$this->assertEquals($e1b->id, $return['entries'][3]['id']);
|
377 |
$this->assertEquals($e1b->id, $return['entries'][3]['id']);
|
378 |
|
378 |
|
379 |
// Ordering including to approve and pagination.
|
379 |
// Ordering including to approve and pagination.
|
380 |
$return = mod_glossary_external::get_entries_by_date($g1->id, 'CREATION', 'ASC', 0, 2,
|
380 |
$return = mod_glossary_external::get_entries_by_date($g1->id, 'CREATION', 'ASC', 0, 2,
|
381 |
array('includenotapproved' => true));
|
381 |
['includenotapproved' => true]);
|
382 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_date_returns(), $return);
|
382 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_date_returns(), $return);
|
383 |
$this->assertCount(2, $return['entries']);
|
383 |
$this->assertCount(2, $return['entries']);
|
384 |
$this->assertEquals(4, $return['count']);
|
384 |
$this->assertEquals(4, $return['count']);
|
385 |
$this->assertEquals($e1a->id, $return['entries'][0]['id']);
|
385 |
$this->assertEquals($e1a->id, $return['entries'][0]['id']);
|
386 |
$this->assertEquals($e1c->id, $return['entries'][1]['id']);
|
386 |
$this->assertEquals($e1c->id, $return['entries'][1]['id']);
|
387 |
$return = mod_glossary_external::get_entries_by_date($g1->id, 'CREATION', 'ASC', 2, 2,
|
387 |
$return = mod_glossary_external::get_entries_by_date($g1->id, 'CREATION', 'ASC', 2, 2,
|
388 |
array('includenotapproved' => true));
|
388 |
['includenotapproved' => true]);
|
389 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_date_returns(), $return);
|
389 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_date_returns(), $return);
|
390 |
$this->assertCount(2, $return['entries']);
|
390 |
$this->assertCount(2, $return['entries']);
|
391 |
$this->assertEquals(4, $return['count']);
|
391 |
$this->assertEquals(4, $return['count']);
|
Línea 478... |
Línea 478... |
478 |
$this->assertEquals(1, $return['count']);
|
478 |
$this->assertEquals(1, $return['count']);
|
479 |
$this->assertEquals($e1x1->id, $return['entries'][0]['id']);
|
479 |
$this->assertEquals($e1x1->id, $return['entries'][0]['id']);
|
Línea 480... |
Línea 480... |
480 |
|
480 |
|
481 |
// Including to approve.
|
481 |
// Including to approve.
|
482 |
$return = mod_glossary_external::get_entries_by_category($g1->id, $cat1b->id, 0, 20,
|
482 |
$return = mod_glossary_external::get_entries_by_category($g1->id, $cat1b->id, 0, 20,
|
483 |
array('includenotapproved' => true));
|
483 |
['includenotapproved' => true]);
|
484 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_category_returns(), $return);
|
484 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_category_returns(), $return);
|
485 |
$this->assertCount(2, $return['entries']);
|
485 |
$this->assertCount(2, $return['entries']);
|
486 |
$this->assertEquals(2, $return['count']);
|
486 |
$this->assertEquals(2, $return['count']);
|
487 |
$this->assertEquals($e1b1->id, $return['entries'][0]['id']);
|
487 |
$this->assertEquals($e1b1->id, $return['entries'][0]['id']);
|
Línea 488... |
Línea 488... |
488 |
$this->assertEquals($e1b2->id, $return['entries'][1]['id']);
|
488 |
$this->assertEquals($e1b2->id, $return['entries'][1]['id']);
|
489 |
|
489 |
|
490 |
// Using limit.
|
490 |
// Using limit.
|
491 |
$return = mod_glossary_external::get_entries_by_category($g1->id, GLOSSARY_SHOW_ALL_CATEGORIES, 0, 3,
|
491 |
$return = mod_glossary_external::get_entries_by_category($g1->id, GLOSSARY_SHOW_ALL_CATEGORIES, 0, 3,
|
492 |
array('includenotapproved' => true));
|
492 |
['includenotapproved' => true]);
|
493 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_category_returns(), $return);
|
493 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_category_returns(), $return);
|
494 |
$this->assertCount(3, $return['entries']);
|
494 |
$this->assertCount(3, $return['entries']);
|
495 |
$this->assertEquals(6, $return['count']);
|
495 |
$this->assertEquals(6, $return['count']);
|
496 |
$this->assertEquals($e1b1->id, $return['entries'][0]['id']);
|
496 |
$this->assertEquals($e1b1->id, $return['entries'][0]['id']);
|
497 |
$this->assertEquals($e1b2->id, $return['entries'][1]['id']);
|
497 |
$this->assertEquals($e1b2->id, $return['entries'][1]['id']);
|
498 |
$this->assertEquals($e1a1->id, $return['entries'][2]['id']);
|
498 |
$this->assertEquals($e1a1->id, $return['entries'][2]['id']);
|
499 |
$return = mod_glossary_external::get_entries_by_category($g1->id, GLOSSARY_SHOW_ALL_CATEGORIES, 3, 2,
|
499 |
$return = mod_glossary_external::get_entries_by_category($g1->id, GLOSSARY_SHOW_ALL_CATEGORIES, 3, 2,
|
500 |
array('includenotapproved' => true));
|
500 |
['includenotapproved' => true]);
|
501 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_category_returns(), $return);
|
501 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_category_returns(), $return);
|
502 |
$this->assertCount(2, $return['entries']);
|
502 |
$this->assertCount(2, $return['entries']);
|
503 |
$this->assertEquals(6, $return['count']);
|
503 |
$this->assertEquals(6, $return['count']);
|
Línea 534... |
Línea 534... |
534 |
$this->assertEquals(2, $return['count']);
|
534 |
$this->assertEquals(2, $return['count']);
|
535 |
$this->assertEquals($u2->id, $return['authors'][0]['id']);
|
535 |
$this->assertEquals($u2->id, $return['authors'][0]['id']);
|
536 |
$this->assertEquals($u1->id, $return['authors'][1]['id']);
|
536 |
$this->assertEquals($u1->id, $return['authors'][1]['id']);
|
Línea 537... |
Línea 537... |
537 |
|
537 |
|
538 |
// Include users with entries pending approval.
|
538 |
// Include users with entries pending approval.
|
539 |
$return = mod_glossary_external::get_authors($g1->id, 0, 20, array('includenotapproved' => true));
|
539 |
$return = mod_glossary_external::get_authors($g1->id, 0, 20, ['includenotapproved' => true]);
|
540 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_authors_returns(), $return);
|
540 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_authors_returns(), $return);
|
541 |
$this->assertCount(3, $return['authors']);
|
541 |
$this->assertCount(3, $return['authors']);
|
542 |
$this->assertEquals(3, $return['count']);
|
542 |
$this->assertEquals(3, $return['count']);
|
543 |
$this->assertEquals($u2->id, $return['authors'][0]['id']);
|
543 |
$this->assertEquals($u2->id, $return['authors'][0]['id']);
|
544 |
$this->assertEquals($u3->id, $return['authors'][1]['id']);
|
544 |
$this->assertEquals($u3->id, $return['authors'][1]['id']);
|
Línea 545... |
Línea 545... |
545 |
$this->assertEquals($u1->id, $return['authors'][2]['id']);
|
545 |
$this->assertEquals($u1->id, $return['authors'][2]['id']);
|
546 |
|
546 |
|
547 |
// Pagination.
|
547 |
// Pagination.
|
548 |
$return = mod_glossary_external::get_authors($g1->id, 1, 1, array('includenotapproved' => true));
|
548 |
$return = mod_glossary_external::get_authors($g1->id, 1, 1, ['includenotapproved' => true]);
|
549 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_authors_returns(), $return);
|
549 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_authors_returns(), $return);
|
550 |
$this->assertCount(1, $return['authors']);
|
550 |
$this->assertCount(1, $return['authors']);
|
551 |
$this->assertEquals(3, $return['count']);
|
551 |
$this->assertEquals(3, $return['count']);
|
Línea 611... |
Línea 611... |
611 |
$this->assertEquals($e1b2->id, $return['entries'][1]['id']);
|
611 |
$this->assertEquals($e1b2->id, $return['entries'][1]['id']);
|
Línea 612... |
Línea 612... |
612 |
|
612 |
|
613 |
// Including non-approved.
|
613 |
// Including non-approved.
|
614 |
$this->setAdminUser();
|
614 |
$this->setAdminUser();
|
615 |
$return = mod_glossary_external::get_entries_by_author($g1->id, 'ALL', 'LASTNAME', 'ASC', 0, 20,
|
615 |
$return = mod_glossary_external::get_entries_by_author($g1->id, 'ALL', 'LASTNAME', 'ASC', 0, 20,
|
616 |
array('includenotapproved' => true));
|
616 |
['includenotapproved' => true]);
|
617 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_author_returns(), $return);
|
617 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_author_returns(), $return);
|
618 |
$this->assertCount(7, $return['entries']);
|
618 |
$this->assertCount(7, $return['entries']);
|
619 |
$this->assertEquals(7, $return['count']);
|
619 |
$this->assertEquals(7, $return['count']);
|
620 |
$this->assertEquals($e1d1->id, $return['entries'][0]['id']);
|
620 |
$this->assertEquals($e1d1->id, $return['entries'][0]['id']);
|
Línea 748... |
Línea 748... |
748 |
$this->assertEquals($e1a3->id, $return['entries'][1]['id']);
|
748 |
$this->assertEquals($e1a3->id, $return['entries'][1]['id']);
|
749 |
$this->assertEquals($e1a1->id, $return['entries'][2]['id']);
|
749 |
$this->assertEquals($e1a1->id, $return['entries'][2]['id']);
|
Línea 750... |
Línea 750... |
750 |
|
750 |
|
751 |
// Including non approved.
|
751 |
// Including non approved.
|
752 |
$return = mod_glossary_external::get_entries_by_author_id($g1->id, $u1->id, 'CONCEPT', 'ASC', 0, 20,
|
752 |
$return = mod_glossary_external::get_entries_by_author_id($g1->id, $u1->id, 'CONCEPT', 'ASC', 0, 20,
|
753 |
array('includenotapproved' => true));
|
753 |
['includenotapproved' => true]);
|
754 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_author_id_returns(), $return);
|
754 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_author_id_returns(), $return);
|
755 |
$this->assertCount(4, $return['entries']);
|
755 |
$this->assertCount(4, $return['entries']);
|
756 |
$this->assertEquals(4, $return['count']);
|
756 |
$this->assertEquals(4, $return['count']);
|
757 |
$this->assertEquals($e1a2->id, $return['entries'][0]['id']);
|
757 |
$this->assertEquals($e1a2->id, $return['entries'][0]['id']);
|
758 |
$this->assertEquals($e1a4->id, $return['entries'][1]['id']);
|
758 |
$this->assertEquals($e1a4->id, $return['entries'][1]['id']);
|
759 |
$this->assertEquals($e1a3->id, $return['entries'][2]['id']);
|
759 |
$this->assertEquals($e1a3->id, $return['entries'][2]['id']);
|
Línea 760... |
Línea 760... |
760 |
$this->assertEquals($e1a1->id, $return['entries'][3]['id']);
|
760 |
$this->assertEquals($e1a1->id, $return['entries'][3]['id']);
|
761 |
|
761 |
|
762 |
// Pagination.
|
762 |
// Pagination.
|
763 |
$return = mod_glossary_external::get_entries_by_author_id($g1->id, $u1->id, 'CONCEPT', 'ASC', 0, 2,
|
763 |
$return = mod_glossary_external::get_entries_by_author_id($g1->id, $u1->id, 'CONCEPT', 'ASC', 0, 2,
|
764 |
array('includenotapproved' => true));
|
764 |
['includenotapproved' => true]);
|
765 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_author_id_returns(), $return);
|
765 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_author_id_returns(), $return);
|
766 |
$this->assertCount(2, $return['entries']);
|
766 |
$this->assertCount(2, $return['entries']);
|
767 |
$this->assertEquals(4, $return['count']);
|
767 |
$this->assertEquals(4, $return['count']);
|
768 |
$this->assertEquals($e1a2->id, $return['entries'][0]['id']);
|
768 |
$this->assertEquals($e1a2->id, $return['entries'][0]['id']);
|
769 |
$this->assertEquals($e1a4->id, $return['entries'][1]['id']);
|
769 |
$this->assertEquals($e1a4->id, $return['entries'][1]['id']);
|
770 |
$return = mod_glossary_external::get_entries_by_author_id($g1->id, $u1->id, 'CONCEPT', 'ASC', 1, 2,
|
770 |
$return = mod_glossary_external::get_entries_by_author_id($g1->id, $u1->id, 'CONCEPT', 'ASC', 1, 2,
|
771 |
array('includenotapproved' => true));
|
771 |
['includenotapproved' => true]);
|
772 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_author_id_returns(), $return);
|
772 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_author_id_returns(), $return);
|
773 |
$this->assertCount(2, $return['entries']);
|
773 |
$this->assertCount(2, $return['entries']);
|
774 |
$this->assertEquals(4, $return['count']);
|
774 |
$this->assertEquals(4, $return['count']);
|
Línea 870... |
Línea 870... |
870 |
$this->assertEquals($e7->id, $return['entries'][0]['id']);
|
870 |
$this->assertEquals($e7->id, $return['entries'][0]['id']);
|
Línea 871... |
Línea 871... |
871 |
|
871 |
|
872 |
// Including not approved.
|
872 |
// Including not approved.
|
873 |
$query = 'ou';
|
873 |
$query = 'ou';
|
874 |
$return = mod_glossary_external::get_entries_by_search($g1->id, $query, false, 'CONCEPT', 'ASC', 0, 20,
|
874 |
$return = mod_glossary_external::get_entries_by_search($g1->id, $query, false, 'CONCEPT', 'ASC', 0, 20,
|
875 |
array('includenotapproved' => true));
|
875 |
['includenotapproved' => true]);
|
876 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_search_returns(), $return);
|
876 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_search_returns(), $return);
|
877 |
$this->assertCount(4, $return['entries']);
|
877 |
$this->assertCount(4, $return['entries']);
|
878 |
$this->assertEquals(4, $return['count']);
|
878 |
$this->assertEquals(4, $return['count']);
|
879 |
$this->assertEquals($e1->id, $return['entries'][0]['id']);
|
879 |
$this->assertEquals($e1->id, $return['entries'][0]['id']);
|
Línea 882... |
Línea 882... |
882 |
$this->assertEquals($e7->id, $return['entries'][3]['id']);
|
882 |
$this->assertEquals($e7->id, $return['entries'][3]['id']);
|
Línea 883... |
Línea 883... |
883 |
|
883 |
|
884 |
// Advanced query string.
|
884 |
// Advanced query string.
|
885 |
$query = '+Heroes -Abcd';
|
885 |
$query = '+Heroes -Abcd';
|
886 |
$return = mod_glossary_external::get_entries_by_search($g1->id, $query, true, 'CONCEPT', 'ASC', 0, 20,
|
886 |
$return = mod_glossary_external::get_entries_by_search($g1->id, $query, true, 'CONCEPT', 'ASC', 0, 20,
|
887 |
array('includenotapproved' => true));
|
887 |
['includenotapproved' => true]);
|
888 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_search_returns(), $return);
|
888 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_search_returns(), $return);
|
889 |
$this->assertCount(2, $return['entries']);
|
889 |
$this->assertCount(2, $return['entries']);
|
890 |
$this->assertEquals(2, $return['count']);
|
890 |
$this->assertEquals(2, $return['count']);
|
891 |
$this->assertEquals($e6->id, $return['entries'][0]['id']);
|
891 |
$this->assertEquals($e6->id, $return['entries'][0]['id']);
|
Línea 912... |
Línea 912... |
912 |
$e3 = $gg->create_content($g1, array('userid' => $u1->id, 'approved' => 1), array('dog'));
|
912 |
$e3 = $gg->create_content($g1, array('userid' => $u1->id, 'approved' => 1), array('dog'));
|
913 |
$e4 = $gg->create_content($g1, array('userid' => $u1->id, 'approved' => 0, 'concept' => 'dog'));
|
913 |
$e4 = $gg->create_content($g1, array('userid' => $u1->id, 'approved' => 0, 'concept' => 'dog'));
|
914 |
$e5 = $gg->create_content($g2, array('userid' => $u1->id, 'approved' => 1, 'concept' => 'dog'), array('cat'));
|
914 |
$e5 = $gg->create_content($g2, array('userid' => $u1->id, 'approved' => 1, 'concept' => 'dog'), array('cat'));
|
Línea 915... |
Línea 915... |
915 |
|
915 |
|
916 |
// Search concept + alias.
|
916 |
// Search concept + alias.
|
917 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'cat', 0, 20, array('includenotapproved' => false));
|
917 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'cat', 0, 20, ['includenotapproved' => false]);
|
918 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
918 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
919 |
$this->assertCount(2, $return['entries']);
|
919 |
$this->assertCount(2, $return['entries']);
|
920 |
$this->assertEquals(2, $return['count']);
|
920 |
$this->assertEquals(2, $return['count']);
|
921 |
// Compare ids, ignore ordering of array, using canonicalize parameter of assertEquals.
|
921 |
// Compare ids, ignore ordering of array, using canonicalize parameter of assertEquals.
|
Línea 931... |
Línea 931... |
931 |
}
|
931 |
}
|
932 |
}
|
932 |
}
|
933 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
933 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
Línea 934... |
Línea 934... |
934 |
|
934 |
|
935 |
// Search alias.
|
935 |
// Search alias.
|
936 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 0, 20, array('includenotapproved' => false));
|
936 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 0, 20, ['includenotapproved' => false]);
|
Línea 937... |
Línea 937... |
937 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
937 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
938 |
|
938 |
|
939 |
$this->assertCount(2, $return['entries']);
|
939 |
$this->assertCount(2, $return['entries']);
|
940 |
$this->assertEquals(2, $return['count']);
|
940 |
$this->assertEquals(2, $return['count']);
|
941 |
// Compare ids, ignore ordering of array, using canonicalize parameter of assertEquals.
|
941 |
// Compare ids, ignore ordering of array, using canonicalize parameter of assertEquals.
|
942 |
$expected = array($e2->id, $e3->id);
|
942 |
$expected = array($e2->id, $e3->id);
|
Línea 943... |
Línea 943... |
943 |
$actual = array($return['entries'][0]['id'], $return['entries'][1]['id']);
|
943 |
$actual = array($return['entries'][0]['id'], $return['entries'][1]['id']);
|
944 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
944 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
945 |
|
945 |
|
946 |
// Search including not approved.
|
946 |
// Search including not approved.
|
947 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 0, 20, array('includenotapproved' => true));
|
947 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 0, 20, ['includenotapproved' => true]);
|
948 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
948 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
949 |
$this->assertCount(3, $return['entries']);
|
949 |
$this->assertCount(3, $return['entries']);
|
950 |
$this->assertEquals(3, $return['count']);
|
950 |
$this->assertEquals(3, $return['count']);
|
951 |
// Compare ids, ignore ordering of array, using canonicalize parameter of assertEquals.
|
951 |
// Compare ids, ignore ordering of array, using canonicalize parameter of assertEquals.
|
Línea 952... |
Línea 952... |
952 |
$expected = array($e4->id, $e2->id, $e3->id);
|
952 |
$expected = array($e4->id, $e2->id, $e3->id);
|
953 |
$actual = array($return['entries'][0]['id'], $return['entries'][1]['id'], $return['entries'][2]['id']);
|
953 |
$actual = array($return['entries'][0]['id'], $return['entries'][1]['id'], $return['entries'][2]['id']);
|
954 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
954 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
955 |
|
955 |
|
956 |
// Pagination.
|
956 |
// Pagination.
|
957 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 0, 1, array('includenotapproved' => true));
|
957 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 0, 1, ['includenotapproved' => true]);
|
958 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
958 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
- |
|
959 |
$this->assertCount(1, $return['entries']);
|
- |
|
960 |
// We don't compare the returned entry id because it may be different depending on the DBMS,
|
- |
|
961 |
// for example, Postgres does a random sorting in this case.
|
- |
|
962 |
$this->assertEquals(3, $return['count']);
|
- |
|
963 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 1, 1, ['includenotapproved' => true]);
|
- |
|
964 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
- |
|
965 |
$this->assertCount(1, $return['entries']);
|
- |
|
966 |
$this->assertEquals(3, $return['count']);
|
- |
|
967 |
}
|
- |
|
968 |
|
- |
|
969 |
/**
|
- |
|
970 |
* Test get_entries_by_multilingual_term.
|
- |
|
971 |
*
|
- |
|
972 |
* @covers \mod_glossary_external::get_entries_by_term
|
- |
|
973 |
* @return void
|
- |
|
974 |
* @throws \coding_exception
|
- |
|
975 |
* @throws \invalid_response_exception
|
- |
|
976 |
* @throws \moodle_exception
|
- |
|
977 |
*/
|
- |
|
978 |
public function test_get_entries_by_multilingual_term(): void {
|
- |
|
979 |
$this->resetAfterTest(true);
|
- |
|
980 |
|
- |
|
981 |
// Enable multilang filter to on content and heading.
|
- |
|
982 |
filter_set_global_state('multilang', TEXTFILTER_ON);
|
- |
|
983 |
filter_set_applies_to_strings('multilang', 1);
|
- |
|
984 |
|
- |
|
985 |
// Generate all the things.
|
- |
|
986 |
$gg = $this->getDataGenerator()->get_plugin_generator('mod_glossary');
|
- |
|
987 |
$c1 = $this->getDataGenerator()->create_course();
|
- |
|
988 |
$g1 = $this->getDataGenerator()->create_module('glossary', ['course' => $c1->id]);
|
- |
|
989 |
$g2 = $this->getDataGenerator()->create_module('glossary', ['course' => $c1->id]);
|
- |
|
990 |
$u1 = $this->getDataGenerator()->create_user();
|
- |
|
991 |
$this->getDataGenerator()->enrol_user($u1->id, $c1->id);
|
- |
|
992 |
|
- |
|
993 |
$this->setAdminUser();
|
- |
|
994 |
|
- |
|
995 |
$e1 = $gg->create_content($g1, ['userid' => $u1->id, 'approved' => 1, 'concept' => '<span lang="en" ' .
|
- |
|
996 |
'class="multilang">cat</span><span lang="fr" class="multilang">chat</span>', 'tags' => ['Cats', 'Dogs']]);
|
- |
|
997 |
$e2 = $gg->create_content($g1, ['userid' => $u1->id, 'approved' => 1], ['<span lang="en" class="' .
|
- |
|
998 |
'multilang">cat</span><span lang="fr" class="multilang">chat</span>', '<span lang="en" class="multilang">' .
|
- |
|
999 |
'dog</span><span lang="fr" class="multilang">chien</span>']);
|
- |
|
1000 |
$e3 = $gg->create_content($g1, ['userid' => $u1->id, 'approved' => 1], ['<span lang="en" class="' .
|
- |
|
1001 |
'multilang">dog</span><span lang="fr" class="multilang">chien</span>']);
|
- |
|
1002 |
$e4 = $gg->create_content($g1, ['userid' => $u1->id, 'approved' => 0, 'concept' => '<span lang="en" class="' .
|
- |
|
1003 |
'multilang">dog</span><span lang="fr" class="multilang">chien</span>']);
|
- |
|
1004 |
$e5 = $gg->create_content($g2, ['userid' => $u1->id, 'approved' => 1, 'concept' => '<span lang="en" class="' .
|
- |
|
1005 |
'multilang">cog</span><span lang="fr" class="multilang">chien</span>'], ['cat']);
|
- |
|
1006 |
|
- |
|
1007 |
// Search concept + alias.
|
- |
|
1008 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'cat', 0, 20, ['includenotapproved' => false]);
|
- |
|
1009 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
- |
|
1010 |
$this->assertCount(2, $return['entries']);
|
- |
|
1011 |
$this->assertEquals(2, $return['count']);
|
- |
|
1012 |
// Compare ids, ignore ordering of array, using canonicalize parameter of assertEquals.
|
- |
|
1013 |
$expected = [$e1->id, $e2->id];
|
- |
|
1014 |
$actual = [$return['entries'][0]['id'], $return['entries'][1]['id']];
|
- |
|
1015 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
- |
|
1016 |
// Compare rawnames of all expected tags, ignore ordering of array, using canonicalize parameter of assertEquals.
|
- |
|
1017 |
$expected = ['Cats', 'Dogs']; // Only $e1 has 2 tags.
|
- |
|
1018 |
$actual = []; // Accumulate all tags returned.
|
- |
|
1019 |
foreach ($return['entries'] as $entry) {
|
- |
|
1020 |
foreach ($entry['tags'] as $tag) {
|
- |
|
1021 |
$actual[] = $tag['rawname'];
|
- |
|
1022 |
}
|
- |
|
1023 |
}
|
- |
|
1024 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
- |
|
1025 |
|
- |
|
1026 |
// Search alias.
|
- |
|
1027 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 0, 20, ['includenotapproved' => false]);
|
- |
|
1028 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
- |
|
1029 |
|
- |
|
1030 |
$this->assertCount(2, $return['entries']);
|
- |
|
1031 |
$this->assertEquals(2, $return['count']);
|
- |
|
1032 |
// Compare ids, ignore ordering of array, using canonicalize parameter of assertEquals.
|
- |
|
1033 |
$expected = [$e2->id, $e3->id];
|
- |
|
1034 |
$actual = [$return['entries'][0]['id'], $return['entries'][1]['id']];
|
- |
|
1035 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
- |
|
1036 |
|
- |
|
1037 |
// Search including not approved.
|
- |
|
1038 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 0, 20, ['includenotapproved' => true]);
|
- |
|
1039 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
- |
|
1040 |
$this->assertCount(3, $return['entries']);
|
- |
|
1041 |
$this->assertEquals(3, $return['count']);
|
- |
|
1042 |
// Compare ids, ignore ordering of array, using canonicalize parameter of assertEquals.
|
- |
|
1043 |
$expected = [$e4->id, $e2->id, $e3->id];
|
- |
|
1044 |
$actual = [$return['entries'][0]['id'], $return['entries'][1]['id'], $return['entries'][2]['id']];
|
- |
|
1045 |
$this->assertEqualsCanonicalizing($expected, $actual);
|
- |
|
1046 |
|
- |
|
1047 |
// Pagination.
|
- |
|
1048 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 0, 1, ['includenotapproved' => true]);
|
- |
|
1049 |
$return = external_api::clean_returnvalue(mod_glossary_external::get_entries_by_term_returns(), $return);
|
959 |
$this->assertCount(1, $return['entries']);
|
1050 |
$this->assertCount(1, $return['entries']);
|
960 |
// We don't compare the returned entry id because it may be different depending on the DBMS,
|
1051 |
// We don't compare the returned entry id because it may be different depending on the DBMS,
|
961 |
// for example, Postgres does a random sorting in this case.
|
1052 |
// for example, Postgres does a random sorting in this case.
|
962 |
$this->assertEquals(3, $return['count']);
|
1053 |
$this->assertEquals(3, $return['count']);
|
963 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 1, 1, array('includenotapproved' => true));
|
1054 |
$return = mod_glossary_external::get_entries_by_term($g1->id, 'dog', 1, 1, ['includenotapproved' => true]);
|