This extends the step
Given the following "users" exist:
to also support things like
Given the following "mod_quiz > user overrides" exist:
Instructions are on the behat_data_generators and
behat_generator_base classes.
There is a proposed change MDL-66816 which will change the question
bank UI. This will break any Behat tests which uses low-level steps
like
When I click on "Duplicate" "link" in the "Test question" "table_row"
to perform an action on a question in the question bank. This commit
introduces a new step:
When I choose "Duplicate" action for "Test question" in the question bank
This commit also converts all core Behat tests to use the new step.
This converts all the navigation to quiz pages when that is not
the thing under test. Also, I decided that the Quiz settings form
belonged to the course, so did not do that here.
By adding a new optional param to quiz_prepare_and_start_new_attempt()
it can be used by the surrounding code to create an attempt for anybody
else (different from current $USER)
quiz attempt API should let you create an attempt for a different user
Plus:
* On the attempts report pages, the "Regrade selected attempts"
and "Delete selected attempts" buttons are now only enabled when
there's at least one item selected.
* Behat fixes for quiz edit feature after this patch
When some activities are manually completed by students, some are still showing in students' timeline.
This commit fix that for module assign,chat,choice,feedback,lesson,quiz,scorm and workshop.
Behat backgrounds and scenarios must observe the new
interdependencies between quiz completion settings.
This commits just applies that to the tests missing it.
There are some mod_quiz generator issues where the new chain
of dependencies between completion settings was not being observed.
This patch just ensures that the now 3 chained settings are
enabled together (or new quiz options logic will proceed to
disable them).
Before this fix, test_repeated_usage_saving_new_usage was failing but
test_repeated_usage_saving_existing_usage was passing. Now the
behaviour is consistent and they both pass.
The background is for set up, the scenario is for the test. Logging in
to start the test is the start of the test and the end of the background
itself.
Namely:
- 3rd param of assertEquals() cannot be null.
- Some incorrect uses of assertNotEmpty().
- Comparing 2 strings now uses strict (===) evaluation.
Link: https://github.com/sebastianbergmann/phpunit/issues/3185
Solution here is one of:
a) Return to the previous situation, making the comparison
softer. That can achieved by forcing different types, so
float == string works.
b) Changing APIs (both forms and database return strings) to
perform some conversion to floats. That would make float
comparison (with floats or strings) to work too.
The patch here follows the a) approach. Changing all the internals
for proper float handling sounds excesive when it has been working
perfectly since ever. So we went the easier route, just getting
rid of the new === comparisons when needed by changing expectation
types to float.