Commit graph

117 commits

Author SHA1 Message Date
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)
8a14a7bd22 MDL-71036 phpunit: assertContains() now performs strict comparison
The methods assertContains() and assertNotContains() now perform
strict (type and value) comparison, pretty much like assertSame()
does.

A couple of new assertContainsEquals() and assertNotContainsEquals()
methods have been created to provide old (non-strict) behavior, pretty
much like assertEquals() do.

Apart from replacing the calls needing a relaxed comparison to those
new methods, there are also a couple of alternative, about how to
fix this, depending of every case:

- If the test is making any array_values() conversion, then it's better
  to remove that conversion and use assertArrayHasKey(), that is not
  strict.
- Sometimes if may be also possible to, simply, cast the expectation
  to the exact type coming in the array. I've not applied this technique
  to any of the cases in core.

Link: https://github.com/sebastianbergmann/phpunit/issues/3426
2021-03-11 23:04:31 +01:00
Andrew Nicols
31402aa406 MDL-69107 user: Fix autocomplete usages 2020-12-16 07:50:56 +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
Eloy Lafuente (stronk7)
d95c378771 MDL-67673 phpunit: Remove expectedException annotations
While this is not strictly required, because removal will
happen in PHPUnit 9.0, we are already getting rid of all
uses in core.

From release notes:https://phpunit.de/announcements/phpunit-8.html

The annotations `@expectedException`, `@expectedExceptionCode`,
`@expectedExceptionMessage`, and `@expectedExceptionMessageRegExp`
are now deprecated.
Using these annotations will trigger a deprecation warning
in PHPUnit 8 and in PHPUnit 9 these annotations will be removed.

Also, all uses of expectExceptionMessageRegExp() has been moved
to expectExceptionMessageMatches(). See https://github.com/sebastianbergmann/phpunit/issues/3957

TODO: Various weirdness found while doing the changes with these tests:
- vendor/bin/phpunit lib/tests/exporter_test.php (created MDL-69700)
- vendor/bin/phpunit competency/tests/external_test.php (same issue than prev one)
- vendor/bin/phpunit question/engine/tests/questionengine_test.php (created MDL-69624)
- vendor/bin/phpunit lib/tests/event_test.php (created MDL-69688)
2020-10-21 12:46:00 +02:00
Eloy Lafuente (stronk7)
f94195c320 MDL-67673 phpunit: Remove deprecated assertInternalType()
While this is not strictly required, because removal will
happen in PHPUnit 9.0, we are already getting rid of all
uses in core.

From release notes:https://phpunit.de/announcements/phpunit-8.html

assertInternalType() is deprecated and will be removed in
PHPUnit 9. Refactor your test to use assertIsArray(), assertIsBool(),
assertIsFloat(), assertIsInt(), assertIsNumeric(), assertIsObject(),
assertIsResource(), assertIsString(), assertIsScalar(),
assertIsCallable(), or assertIsIterable() instead.
2020-10-21 12:45:59 +02:00
Eloy Lafuente (stronk7)
f6711bb394 MDL-67673 phpunit: Fix the return type of template methods
All the setup/teardown/pre/post/conditions template methods
now are required to return void. This was warned with phpunit 7
and now is enforced.

At the same time, fix a few wrong function names,
provider data and param types, return statements...
2020-10-21 12:45:59 +02:00
Andrew Nicols
a2bc97a386 MDL-68750 analytics: Correct behat test modal checks 2020-05-26 12:55:29 +08:00
Jun Pataleta
1eac44f128 Merge branch 'MDL-67217_master' of git://github.com/dmonllao/moodle 2019-11-25 16:13:01 +08:00
David Monllaó
e477e1350a MDL-67217 unittest: usleep and windows don't get along well 2019-11-22 07:41:07 +08:00
David Monllaó
b92c764872 MDL-67039 analytics: Unit tests for unidimensional arrays 2019-11-04 09:33:50 +08:00
David Monllaó
06579b18cc MDL-64739 analytics: Contexts autocomplete with ajax 2019-10-21 15:33:29 +08:00
David Monllaó
76b5ee4545 MDL-64739 tool_analytics: Restrict models to specific contexts 2019-10-21 09:54:39 +08:00
David Monllaó
63c15f6c58 MDL-66004 mlbackend_python: Purge testing output dirs properly 2019-10-03 09:45:57 +08:00
Eloy Lafuente (stronk7)
20502fa30c Merge branch 'MDL-66004_master' of git://github.com/dmonllao/moodle 2019-10-02 20:53:24 +02:00
David Monllaó
463b63db2a MDL-66004 analytics: mlbackend_python tested just once
Either running locally from the web server or using a server if
TEST_MLBACKEND_* vars are set. The tests will still be skipped if
the python backend is not available in the web server.
2019-10-02 08:41:14 +08:00
David Monllaó
aa5b705607 MDL-66004 mlbackend_python: Package installed on a separate server 2019-10-02 08:41:14 +08:00
David Monllaó
386d109172 MDL-62191 analytics: Support for bulk actions 2019-09-27 14:13:52 +08:00
David Monllaó
2d9280e0df MDL-65588 analytics: New models for student accesses 2019-09-20 08:14:13 +08:00
David Monllaó
16cb4f32a0 MDL-66536 analytics: Indicators can add extra data for targets 2019-09-18 13:07:21 +08:00
Andrew Nicols
82704b0d2e Merge branch 'MDL-66498_master' of git://github.com/dmonllao/moodle 2019-09-12 11:15:21 +08:00
David Monllaó
abc745fbd0 MDL-66498 analytics: get_samples() with no params limit 2019-09-11 12:44:55 +08:00
David Monllao
500111c5d3 MDL-66498 analytics: SQL IN in chunks 2019-09-11 12:44:55 +08:00
Vlad Apetrei
8cb90066d4 MDL-58992 analytics: add multi-classification to predictors
Adds multi-class capabilities to prediction processors
as well as multi-classification unit tests
2019-09-09 08:49:56 +08:00
Jun Pataleta
74a9ee3277 Merge branch 'MDL-66241_master' of git://github.com/dmonllao/moodle 2019-08-21 19:52:03 +08:00
Jun Pataleta
7c50f31dad Merge branch 'MDL-66210_master' of git://github.com/dmonllao/moodle 2019-08-21 19:48:10 +08:00
Víctor Déniz Falcón
93c539d220 MDL-66311 core_analytics: better handling of action menus in behat tests 2019-08-20 22:58:33 +01:00
David Monllaó
2bbe76bf06 MDL-66210 analytics: Unit test for reuseprevanalysed 2019-08-14 14:31:54 +08:00
David Monllaó
6981d823a2 MDL-66241 analytics: Verify that activities_due works on at-risk 2019-08-14 14:29:16 +08:00
Victor Deniz Falcon
a9e58c14f9 MDL-58974 core_analytics: Add behat tests
Behat testing to cover model management and predictions generation
and visualization.
2019-07-31 11:13:05 +01:00
David Monllaó
5ef49c591a MDL-65633 tool_analytics: Notification for invalid analysis intervals 2019-07-18 18:38:13 +02:00
David Monllaó
3cb0aaaa8c MDL-65633 analytics: New interfaces for time-splitting methods 2019-07-18 18:38:13 +02:00
David Monllaó
b209893dd0 MDL-65769 mlbackend_php: Proper algo init & unit test fix 2019-07-12 06:28:31 +08:00
David Monllaó
1d5cb38292 MDL-65562 analytics: New get_prediction_actions API 2019-07-09 13:36:11 +02:00
Andrew Nicols
a2f81b201e MDL-65656 analytics: Stop covering memory-intensive tests 2019-06-04 10:16:50 +08:00
David Monllaó
73f8085f3f MDL-65680 analytics: Fix random failure on slow test environments 2019-05-24 10:59:13 +02:00
Adrian Greeve
d15589bc08 Merge branch 'MDL-65601_master' of git://github.com/dmonllao/moodle 2019-05-16 13:25:44 +08:00
David Monllaó
589a3f57a0 MDL-65601 analytics: Add missing set_modelid calls 2019-05-15 09:34:35 +02:00
David Monllaó
bc2f679bca MDL-65582 analytics: Upcoming activities due enabled by default 2019-05-13 18:04:13 +02:00
David Monllaó
352ab7464e MDL-65348 analytics: Upcoming periodic from time() 2019-04-29 16:51:04 +02:00
Eloy Lafuente (stronk7)
0d575a542a Merge branch 'MDL-65248_master' of git://github.com/dmonllao/moodle 2019-04-23 13:50:22 +02:00
David Monllaó
7063b665e0 MDL-65248 core_course: Move analytics targets to course
MOV [coursealreadyfinished, moodle], [coursealreadyfinished, course]
MOV [coursenotyetstarted, moodle], [coursenotyetstarted, course]
MOV [coursenotyetfinished, moodle], [coursenotyetfinished, course]
MOV [nocourseactivity, moodle], [nocourseactivity, course]
MOV [nocourseendtime, moodle], [nocourseendtime, course]
MOV [nocoursesections, moodle], [nocoursesections, course]
MOV [nocoursestudents, moodle], [nocoursestudents, course]
MOV [studentsatriskincourse, moodle], [studentsatriskincourse, course]
MOV [target:coursecompletion, moodle], [target:coursecompletion, course]
MOV [target:coursecompletion_help, moodle], [target:coursecompletion_help, course]
MOV [target:coursecompetencies, moodle], [target:coursecompetencies, course]
MOV [target:coursecompetencies_help, moodle], [target:coursecompetencies_help, course]
MOV [target:coursedropout, moodle], [target:coursedropout, course]
MOV [target:coursedropout_help, moodle], [target:coursedropout_help, course]
MOV [target:coursegradetopass, moodle], [target:coursegradetopass, course]
MOV [target:coursegradetopass_help, moodle], [target:coursegradetopass_help, course]
MOV [target:noteachingactivity, moodle], [target:noteachingactivity, course]
MOV [target:noteachingactivity_help, moodle], [target:noteachingactivity_help, course]
MOV [target:upcomingactivitiesdue, moodle], [target:upcomingactivitiesdue, course]
MOV [target:upcomingactivitiesdue_help, moodle], [target:upcomingactivitiesdue_help, course]
MOV [targetlabelstudentcompletionno, moodle], [targetlabelstudentcompletionno, course]
MOV [targetlabelstudentcompletionyes, moodle], [targetlabelstudentcompletionyes, course]
MOV [targetlabelstudentcompetenciesno, moodle], [targetlabelstudentcompetenciesno, course]
MOV [targetlabelstudentcompetenciesyes, moodle], [targetlabelstudentcompetenciesyes, course]
MOV [targetlabelstudentdropoutyes, moodle], [targetlabelstudentdropoutyes, course]
MOV [targetlabelstudentdropoutno, moodle], [targetlabelstudentdropoutno, course]
MOV [targetlabelstudentgradetopassno, moodle], [targetlabelstudentgradetopassno, course]
MOV [targetlabelstudentgradetopassyes, moodle], [targetlabelstudentgradetopassyes, course]
MOV [targetlabelteachingyes, moodle], [targetlabelteachingyes, course]
MOV [targetlabelteachingno, moodle], [targetlabelteachingno, course]
MOV [coursetoolong, analytics], [coursetoolong, course]
MOV [errorendbeforestart, analytics], [errorendbeforestart, course]
2019-04-15 09:45:50 +02:00
David Monllaó
5f1f0ee6a1 MDL-65175 analytics: Time-splittings can be invalid for evaluation 2019-04-10 12:19:52 +02:00
David Monllaó
baa6c29cc1 MDL-65175 analytics: Rm references to unexisting time-splittings 2019-04-10 12:19:52 +02:00
David Monllaó
982fef46f4 MDL-64783 analytics: Activities due insight forwards to calendar
The patch includes changes applied after the peer review.
2019-04-09 00:29:57 +02:00
David Monllaó
fccc728fcc MDL-64783 analytics: Performance improvements
- Removed redundant query to analytics_predict_samples
- Analysers API now uses recordsets to iterate through the analysable
  elements. They take the last analysed time into account.
- New method for targets so there is no need to always update the last
  analysis time. Useful for lightweight targets.
2019-04-09 00:29:57 +02:00
David Monllaó
9f690999ec MDL-64783 analytics: Performance improvements and internal refactoring
The base classes analyser and time-splitting method had too many
reponsibilities. A new analysis class has been created.
2019-04-09 00:26:39 +02:00
David Monllaó
e85c2f372b MDL-64783 analytics: Improvements to the insights system 2019-04-09 00:26:23 +02:00
David Monllaó
50935afba4 MDL-64783 analytics: Upcoming activities due and related API changes 2019-04-09 00:25:24 +02:00
Eloy Lafuente (stronk7)
481c1ae4ce Merge branch 'MDL-64779_master' of git://github.com/dmonllao/moodle 2019-04-02 23:23:13 +02:00