49 Commits

Author SHA1 Message Date
Paul Holden
70a5e38b2c MDL-70070 phpunit: correct data provider method names.
They should not be prefixed `test_` because that's how actual
test methods containing assertions are identified by PHPUnit.
2023-01-16 08:28:31 +00:00
Ilya Tregubov
057f732bf1 Merge branch 'MDL-58266-master' of https://github.com/JBThong/moodle 2022-10-17 12:51:59 +03:00
hieuvu
c6e018e04e MDL-58266 core_completion: Add new view table. 2022-10-14 00:30:28 +07:00
Marina Glancy
41b93bd7e5 MDL-73424 general: Internal methods must have same type as parent
Otherwise the error is thrown in PHP8.1
2022-10-10 16:46:13 +02:00
Andrew Nicols
70cc41eec8 MDL-72246 core_completion: Only fetch other completion data on requested
Prior to this patch, the code was fetching all completion data for all
activities in a course, even when the activity was not requested. This
leads to recursion issues as the data has not been added to the cache
before this operation occurs.

To handle this situation, only the requested CM is fetched in full, and
a boolean flag is used to store whether the full data has been fetched.

When returning a partially fetched value from the cache, the flag is
used to determine whether more data must be fetched, and the cache
updated.

The flag is filtered out before the value is returned.

Note: Many of the tests were updated as these were inspecting private
features of the API which should not really be tested.
2022-02-08 11:35:23 +08:00
Andrew Nicols
adc61dddc3 MDL-72246 core_completion: Test coverage improvements for completion 2022-02-08 11:22:14 +08:00
Andrew Nicols
a999b12e02 MDL-72246 core_completion: Stop testing the inner workings of get_data() 2022-02-08 11:22:14 +08:00
Peter Dias
cb2afc668d MDL-72827 completion: Revert completion flow logic
- Reverts the custom flow logic introduced in the 52206
- Expand unit tests to cover different grade based completion settings
2021-10-28 11:38:10 +08:00
Peter
90acd8d381 MDL-52206 core: Add completion criteria to course_modules 2021-10-04 19:44:02 +08:00
Ilya Tregubov
4819625349 MDL-32103 completion: Allow instant completion updates.
For activity based course completion criteria allow instant
course completion updates if the activity completion state was changed
for a single user.
2021-07-13 12:07:53 +02:00
David Mudrák
a949a151f3 MDL-71659 completion: Consider modules without grade_item incomplete
Activity modules may not have the associated grade_item created yet. It
used to throw fatal error in that case - even when trying to view the
course or edit the activity. So there was no easy way to recover from
this situation.

The patch is based on reasoning that an activity without grade item is
same as activity without any grades. And as such it is considered
incomplete.

A new unit test is added to cover this specific scenario. The existing
unit test is modified and it does not expect the exception any more.
There does not seem to be any good reason why this situation should be
exceptional.
2021-05-18 20:59:51 +02:00
Michael Hawkins
8e843696a2 MDL-71401 core_completion: Fix completion status caching
When an automatic completion condition may have had its state change,
we now unset the cached value for the user's completion in the relevant
activity, so up-to-date values are re-fetched and available to students.
The previous behaviour was that custom conditions would remain cached
until the activity reached overall completion.
2021-05-04 12:18:36 +08:00
Michael Hawkins
fd302dc842 MDL-71104 core_completion: Fix fetching of grade completion status
We should be able to fetch the grade completion status for modules
that do not have custom completion configured. This also improves
unit testing coverage.
2021-03-23 12:25:22 +08:00
Jun Pataleta
6770a2949a MDL-71104 completion: Fix completion_info::get_data() unit tests
* Fixed inverted $sameuser test data.
* Fixed caching expectation check. Caching only relies on whether the
user accessing the completion data is the same user or not.
* Fixed checking for the caching of other modules. Should have been
checking cm ID and not instance ID.
* Additional test case when whole course parameter is passed as
true, but the requesting user is different from the target user.
2021-03-23 11:53:26 +08:00
Eloy Lafuente (stronk7)
713722c3fb MDL-71036 phpunit: Coding style changes, 99% whitespace only
I've gone over a few of the mofified files (those
which were showing warnings and errors to CiBoT. Some of them
have been fixed completely, while others only have fixed
for the lines belonging to this issue (lib/tests/moodlelib_test.php)
for example.
2021-03-11 23:04:32 +01:00
Eloy Lafuente (stronk7)
81407f18ec MDL-71036 phpunit: Mock->setMethods() silently deprecated
The current ->setMethods() has been silently (won't emit any
warning) in PHPUnit 9. And will stop working (current plans)
in PHPUnit 10.

Basically the now deprecated method has been split into:

- onlyMethods(): To point to existing methods in the mocked artifact.
- addMethods(): To point to non existing (yet) methods in the mocked
  artifact.

In practice that means that all our current setMethods() calls can be
converted to onlyMethods() (existing) and done. The addMethods() is
mostly useful on development phases, not final testing.

Finally note that <null> isn't accepted anymore as parameter to
double all the methods. Instead empty array [] must be used.

Link: https://github.com/sebastianbergmann/phpunit/issues/3770
2021-03-11 23:04:31 +01:00
Eloy Lafuente (stronk7)
4a1df0219e MDL-71036 phpunit: ->at() matcher is deprecated
Mocke at() matcher is being deprecated with phpunit9 and
will be removed with phpunit10.

Source: https://github.com/sebastianbergmann/phpunit/issues/4297

Luckily we are using those deprecated matchers only in completionlib
tests, so there aren't many cases to modify. Now, we are using
supported matchers (once, exactly, never...) and the tests have
been reorganised to better represent the expected behavior (how
many times stuff is called, with which params and return values).
2021-03-11 23:04:19 +01:00
Jun Pataleta
8d29653fbc MDL-70815 completion: Test internal_get_state() with custom completion
Use the custom completion implementation for mod_choice to test
completion_info::get_state() to cover the case where the completion
state is being determined from the custom completion condition.
2021-03-09 20:15:28 +08:00
Jun Pataleta
18ef213da5 MDL-70815 core_completion: completion_info::get_grade_completion()
Move the current logic for determining the completion status for the
"Student must receive grade" completion rule to a function so it cann
be reused.
Unit test included.
2021-03-09 20:15:28 +08:00
Jun Pataleta
236033151d MDL-70815 core_completion: Fix unit tests
* Unit tests for completion_info::get_data() and
completion_info::internal_get_state are mocked which causes failures
with the new implementation. It's more straightforward and realistic
to generate real course and modules to test these methods.
2021-03-09 20:15:24 +08:00
Eloy Lafuente (stronk7)
40de097e65 MDL-67673 phpunit: Remove deprecated assertContains() uses on strings
Both assertContains() and assertNotContains() are deprecated in PHPUnit 8
for operations on strings. Also the optional case parameter is. All uses
must be changed to one of:

- assertStringContainsString()
- assertStringContainsStringIgnoringCase()
- assertStringNotContainsString()
- assertStringNotContainsStringIgnoringCase()

More info: https://github.com/sebastianbergmann/phpunit/issues/3422

Regexp to find all uses:

ag 'assert(Not)?Contains\('
2020-10-21 12:46:00 +02:00
Juan Leyva
417e5b9f84 MDL-65976 completion: New course completion message provider 2020-09-29 13:40:32 +02:00
Paul Holden
abde761cb6 MDL-40081 completion: clean up criteria records for deleted courses. 2020-04-06 12:22:51 +01:00
Jun Pataleta
6bcc5dfdb4 MDL-65204 phpunit: Fix valid CiBoT errors and warnings 2019-04-03 10:44:24 +08:00
Eloy Lafuente (stronk7)
26218b7852 MDL-65204 phpunit: make testcases match their expected signature 2019-04-03 10:39:19 +08:00
Jake Dallimore
8fbc41d8d5 MDL-37361 completion: minor code fixes. 2017-10-10 17:12:09 +08:00
Jake Dallimore
86f359bf68 MDL-37361 completion: automatic completion disabled when overridden
Changes:
- Activities with auto completion and a completion status overridden to
COMPLETION_COMPLETE are no longer processed by normal completion
triggers.
- All activities can still be completed by students when their
completion status has been overridden to COMPLETION_INCOMPLETE, via
either auto or manual triggers.
- Completion unit tests updated
2017-10-10 17:10:49 +08:00
Eiz Eddin Al Katrib
60a6b36cd5 MDL-37361 completion: Modified and Added phpunit tests 2017-10-10 17:10:37 +08:00
sam marshall
5c2ef08fa3 MDL-55628 Completion: Use simpledata for completion cache
The completion cache is currently not marked as simpledata. On the
course page it is frequently retrieved hundreds of times which results
in many calls to the slow unserialize function. By making a slight
change to the data format (using arrays instead of objects) we can
mark it as simpledata, which will avoid using unserialize.
2016-08-22 17:13:36 +01:00
Rajesh Taneja
52f3e060e4
MDL-55091 phpunit: Following has been deprecated.
1. getMock()
2. setExpectedException()
3. checkForUnintentionallyCoveredCode renamed to beStrictAboutCoversAnnotation
4. beStrictAboutTestSize renamed to enforceTimeLimit
5. UnitTestCase class is now fully removed.
2016-07-26 10:11:30 +08:00
Dan Poltawski
ef5df7b721 MDL-52471 tests: simplify setup code
Test code was not using the generator for simple enrollments, couldn't
help to fix when noticed.
2015-12-10 15:47:11 +00:00
Dan Poltawski
194a02e409 MDL-52471 completion: fix deprecated use of 'object'
And add a unit test covering completion_can_view_data() without
full course object passed.
2015-12-10 15:47:11 +00:00
Andrew Nicols
97b1a48204 MDL-47449 completion: Ignore timemodified when comparing 2015-08-14 10:53:20 +08:00
Marina Glancy
0cc9d709ab MDL-46960 completionlib: adjustments to caching 2015-03-31 11:06:53 +08:00
Michael Wheeler
3871db0ac2 MDL-46960 completionlib: Move completion cache to MUC. 2015-03-31 09:31:30 +08:00
Mark Nelson
02a5a4b2ff MDL-43557 events: fixed minor issues in existing events 2014-04-29 19:16:11 -07:00
Marina Glancy
cd5be9a504 MDL-44321 events: make sure the full object is passed to add_record_snapshot() 2014-02-28 16:37:36 +08:00
Russell Smith
74b63eae76 MDL-43440 unit testing: Use cmid in unit tests when it should be used.
instance is has been used instead of cmid.  This works as all id's are 1
in most cases, but not always.

accesslib_clear_all_caches_for_unit_testing was updated to clear the
$USER->access cache which would fail test when the wrong user's data was used.
2014-01-25 08:57:32 +11:00
Damyon Wiese
d04bea30da Merge branch 'wip-MDL-42400-master' of git://github.com/marinaglancy/moodle 2013-11-04 13:11:42 +08:00
Petr Škoda
fc4365d0fe MDL-42555 fix moodle_url typo in namespaces 2013-10-29 17:03:58 +08:00
Marina Glancy
7fbe33fcf1 MDL-42400 generator: module generators call add_moduleinfo instead of direct inserts 2013-10-26 14:00:23 +11:00
Petr Škoda
2a67e105b6 MDL-41935 attempt to work around random time comparison test failures 2013-10-12 15:53:25 +02:00
Rajesh Taneja
135dde74ed MDL-40042 Completion: added course_completion_updated event to remove related add_to_log 2013-08-16 09:34:23 +08:00
Rajesh Taneja
1cb1e5fe32 MDL-39955 completion: Added unittest for course_completed event 2013-08-13 09:43:38 +08:00
Rajesh Taneja
cdc541990e MDL-39955 completion: Added unittest for course_module_completion_updated event 2013-08-09 17:06:12 +08:00
Petr Škoda
82ff8e2937 MDL-39915 cleanup core_completionlib_testcase 2013-07-27 12:50:21 +02:00
Frederic Massart
1530fe2192 MDL-39536 completion: Unit tests for get_activities and has_activities 2013-06-04 12:57:13 +08:00
Aaron Barnes
1caeb4b450 MDL-32386 completion: Fix incorrect method parameters 2012-08-27 10:57:52 +12:00
Petr Skoda
4059b64510 MDL-32400 convert completion tests 2012-04-15 12:23:41 +02:00