45317d6db5
* Add "Preview" and "Use this preset" menus to the preset plugin page's burger menu * Refactor importmapping dialogue to use the 'data-action' selector * Add a new set_kebab_trigger action menu method * Use set_additional_classes method for action menu * Remove redundant parameter to add_action_menu
353 lines
19 KiB
Gherkin
353 lines
19 KiB
Gherkin
@mod @mod_data
|
|
Feature: Users can view and manage data presets
|
|
In order to use presets
|
|
As a user
|
|
I need to view, manage and use presets
|
|
|
|
Background:
|
|
Given the following "users" exist:
|
|
| username | firstname | lastname | email |
|
|
| teacher1 | Teacher | 1 | teacher1@example.com |
|
|
And the following "courses" exist:
|
|
| fullname | shortname | category |
|
|
| Course 1 | C1 | 0 |
|
|
And the following "course enrolments" exist:
|
|
| user | course | role |
|
|
| teacher1 | C1 | editingteacher |
|
|
And the following "activities" exist:
|
|
| activity | name | intro | course | idnumber |
|
|
| data | Mountain landscapes | n | C1 | data1 |
|
|
And the following "mod_data > presets" exist:
|
|
| database | name | description | user |
|
|
| data1 | Saved preset 1 | The preset1 has description | admin |
|
|
| data1 | Saved preset 2 | | admin |
|
|
| data1 | Saved preset by teacher1 | This preset has also a description | teacher1 |
|
|
|
|
@javascript
|
|
Scenario: Admins can delete saved presets
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as admin
|
|
When I follow "Presets"
|
|
Then I should see "Choose a preset to use as a starting point."
|
|
And I should see "Image gallery"
|
|
And I should see "Saved preset 1"
|
|
And I should see "Saved preset 2"
|
|
And I should see "Saved preset by teacher1"
|
|
# Plugin presets can't be removed.
|
|
And I should not see "Actions" in the "Image gallery" "table_row"
|
|
# The admin should be able to delete saved presets.
|
|
But I open the action menu in "Saved preset 1" "table_row"
|
|
And I should see "Delete"
|
|
And I press the escape key
|
|
And I open the action menu in "Saved preset 2" "table_row"
|
|
And I should see "Delete"
|
|
And I press the escape key
|
|
And I open the action menu in "Saved preset by teacher1" "table_row"
|
|
And I should see "Delete"
|
|
|
|
@javascript
|
|
Scenario: Teachers can see and use presets
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
When I follow "Presets"
|
|
Then I should see "Choose a preset to use as a starting point."
|
|
And I should see "Image gallery"
|
|
And I should see "Use this preset to collect images." in the "Image gallery" "table_row"
|
|
And I should see "Saved preset 1"
|
|
And I should see "The preset1 has description" in the "Saved preset 1" "table_row"
|
|
And I should see "Saved preset 2"
|
|
And I should see "Saved preset by teacher1"
|
|
And I should see "This preset has also a description" in the "Saved preset by teacher1" "table_row"
|
|
# Plugin presets can't be removed.
|
|
And I should not see "Actions" in the "Image gallery" "table_row"
|
|
# Teachers should be able to delete their saved presets.
|
|
And I open the action menu in "Saved preset by teacher1" "table_row"
|
|
And I should see "Delete"
|
|
# Teachers can't delete the presets they haven't created.
|
|
And I should not see "Actions" in the "Saved preset 1" "table_row"
|
|
# The "Use this preset" button should be enabled only when a preset is selected.
|
|
And the "Use this preset" "button" should be disabled
|
|
And I click on "fullname" "radio" in the "Image gallery" "table_row"
|
|
And the "Use this preset" "button" should be enabled
|
|
|
|
@javascript
|
|
Scenario: Only users with the viewalluserpresets capability can see presets created by other users
|
|
Given the following "permission override" exists:
|
|
| role | editingteacher |
|
|
| capability | mod/data:viewalluserpresets |
|
|
| permission | Prohibit |
|
|
| contextlevel | System |
|
|
| reference | |
|
|
When I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
And I follow "Presets"
|
|
Then I should see "Image gallery"
|
|
And I should not see "Saved preset 1"
|
|
And I should not see "Saved preset 2"
|
|
But I should see "Saved preset by teacher1"
|
|
|
|
@javascript
|
|
Scenario: Teachers can save presets
|
|
Given the following "mod_data > fields" exist:
|
|
| database | type | name | description |
|
|
| data1 | text | Test field name | Test field description |
|
|
And I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
And I follow "Templates"
|
|
When I click on "Actions" "button"
|
|
And I choose "Publish preset on this site" in the open action menu
|
|
Then I should see "Name" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I should see "Description" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And "Replace existing preset with this name and overwrite its contents" "checkbox" should not be visible
|
|
# Teacher should be able to save preset.
|
|
And I set the field "Name" to "New saved preset"
|
|
And I set the field "Description" to "My funny description goes here."
|
|
And I click on "Save" "button" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I should see "Preset saved."
|
|
And I follow "Presets"
|
|
And I should see "New saved preset"
|
|
And I should see "My funny description goes here." in the "New saved preset" "table_row"
|
|
# Teacher can't overwrite an existing preset that they haven't created.
|
|
And I follow "Templates"
|
|
And I click on "Actions" "button"
|
|
And I choose "Publish preset on this site" in the open action menu
|
|
And I set the field "Name" to "Saved preset 1"
|
|
And I click on "Save" "button" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I should see "A preset with this name already exists. Choose a different name."
|
|
And "Replace existing preset with this name and overwrite its contents" "checkbox" should not be visible
|
|
# Teacher can overwrite existing presets created by them, but they are not overwritten if the checkbox is not marked.
|
|
And I set the field "Name" to "New saved preset"
|
|
And I set the field "Description" to "This is a new description that shouldn't be saved."
|
|
And I click on "Save" "button" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I should see "A preset with this name already exists."
|
|
And "Replace existing preset with this name and overwrite its contents" "checkbox" should be visible
|
|
# Confirm the checkbox is still displayed and nothing happens if it's not checked and no change is done in the name.
|
|
And I click on "Save" "button" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I should see "A preset with this name already exists."
|
|
And "Replace existing preset with this name and overwrite its contents" "checkbox" should be visible
|
|
And I click on "Cancel" "button" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I follow "Presets"
|
|
And I should see "New saved preset"
|
|
And I should see "My funny description goes here." in the "New saved preset" "table_row"
|
|
And I should not see "This is a new description that shouldn't be saved."
|
|
# But teacher can overwrite existing presets created by them.
|
|
But I follow "Templates"
|
|
And I click on "Actions" "button"
|
|
And I choose "Publish preset on this site" in the open action menu
|
|
And I set the field "Name" to "New saved preset"
|
|
And I set the field "Description" to "This is a new description that will be overwritten."
|
|
And I click on "Save" "button" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I should see "A preset with this name already exists."
|
|
And "Replace existing preset with this name and overwrite its contents" "checkbox" should be visible
|
|
And I click on "Replace existing preset with this name and overwrite its contents" "checkbox" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I click on "Save" "button" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I should see "Preset saved."
|
|
And I follow "Presets"
|
|
And I should see "New saved preset"
|
|
And I should see "This is a new description that will be overwritten." in the "New saved preset" "table_row"
|
|
And I should not see "My funny description goes here." in the "New saved preset" "table_row"
|
|
|
|
@javascript
|
|
Scenario: Teachers can edit presets
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
When I follow "Presets"
|
|
# Plugin presets can't be edited.
|
|
Then I should not see "Actions" in the "Image gallery" "table_row"
|
|
# Teachers can't edit the presets they haven't created.
|
|
And I should not see "Actions" in the "Saved preset 1" "table_row"
|
|
# Teachers should be able to edit their saved presets.
|
|
And I open the action menu in "Saved preset by teacher1" "table_row"
|
|
And I choose "Edit" in the open action menu
|
|
And I set the field "Name" to "RENAMED preset by teacher1"
|
|
And I set the field "Description" to "My funny description goes here."
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
And I should see "Preset saved."
|
|
And I should see "RENAMED preset by teacher1"
|
|
And I should see "My funny description goes here." in the "RENAMED preset by teacher1" "table_row"
|
|
And I should not see "Saved preset by teacher1"
|
|
And I should not see "This preset has also a description"
|
|
|
|
@javascript
|
|
Scenario: Nothing happens when teachers edit a preset and do not change anything
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
When I follow "Presets"
|
|
And I open the action menu in "Saved preset by teacher1" "table_row"
|
|
And I choose "Edit" in the open action menu
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
Then I should not see "Preset saved."
|
|
And I should see "Saved preset by teacher1"
|
|
|
|
@javascript
|
|
Scenario: Teachers can edit presets and overwrite them if they are the authors
|
|
Given the following "mod_data > preset" exists:
|
|
| database | data1 |
|
|
| name | Another preset created by teacher1 |
|
|
| description | This description will be overwritten |
|
|
| user | teacher1 |
|
|
And I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
When I follow "Presets"
|
|
And I open the action menu in "Saved preset by teacher1" "table_row"
|
|
And I choose "Edit" in the open action menu
|
|
And I set the field "Name" to "Another preset created by teacher1"
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
Then I should see "A preset with this name already exists."
|
|
And "Replace existing preset with this name and overwrite its contents" "checkbox" should be visible
|
|
# If the checkbox is not selected, the preset shoudn't be saved.
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
And I should see "A preset with this name already exists."
|
|
# But when I select the overwrite checkbox, the preset should be overwritten.
|
|
But I click on "Replace existing preset with this name and overwrite its contents" "checkbox" in the "Edit preset" "dialogue"
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
And I should see "Preset saved."
|
|
And I should see "Another preset created by teacher1"
|
|
And I should see "This preset has also a description" in the "Another preset created by teacher1" "table_row"
|
|
And I should not see "Saved preset by teacher1"
|
|
And I should not see "This description will be overwritten"
|
|
|
|
@javascript
|
|
Scenario: Teachers cannot overwrite presets if they are not the authors
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
When I follow "Presets"
|
|
And I open the action menu in "Saved preset by teacher1" "table_row"
|
|
And I choose "Edit" in the open action menu
|
|
And I set the field "Name" to "Saved preset 1"
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
Then I should see " A preset with this name already exists. Choose a different name."
|
|
And "Replace existing preset with this name and overwrite its contents" "checkbox" should not be visible
|
|
# If the teacher clicks again the Save button, the preset shoudn't be saved.
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
And I should see " A preset with this name already exists. Choose a different name."
|
|
# But if they set a different name (which doesn't exist), the preset should be saved.
|
|
And I set the field "Name" to "New saved preset"
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
And I should see "Preset saved."
|
|
And I should see "New saved preset"
|
|
And I should see "This preset has also a description" in the "New saved preset" "table_row"
|
|
And I should not see "Saved preset by teacher1"
|
|
|
|
@javascript
|
|
Scenario: Admins can overwrite presets even if they are not the authors
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as admin
|
|
When I follow "Presets"
|
|
And I open the action menu in "Saved preset by teacher1" "table_row"
|
|
And I choose "Edit" in the open action menu
|
|
And I set the field "Name" to "Saved preset 1"
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
Then I should see " A preset with this name already exists."
|
|
And "Replace existing preset with this name and overwrite its contents" "checkbox" should be visible
|
|
# But when admin selects the overwrite checkbox, the preset should be overwritten.
|
|
But I click on "Replace existing preset with this name and overwrite its contents" "checkbox" in the "Edit preset" "dialogue"
|
|
And I click on "Save" "button" in the "Edit preset" "dialogue"
|
|
And I should see "Preset saved."
|
|
And I should see "Saved preset 1"
|
|
And I should see "This preset has also a description" in the "Saved preset 1" "table_row"
|
|
And I should not see "Saved preset by teacher1"
|
|
And I should not see "The preset1 has description"
|
|
|
|
@javascript
|
|
Scenario: Teachers can delete their own presets
|
|
Given the following "mod_data > fields" exist:
|
|
| database | type | name | description |
|
|
| data1 | text | Test field name | Test field description |
|
|
And the following "mod_data > presets" exist:
|
|
| database | name | description | user |
|
|
| data1 | Saved preset by teacher1 | My funny description goes here. | teacher1 |
|
|
And I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
When I follow "Presets"
|
|
And I should see "Image gallery"
|
|
And I should see "Saved preset 1"
|
|
And I should see "Saved preset by teacher1"
|
|
# Plugin presets can't be removed.
|
|
And I should not see "Actions" in the "Image gallery" "table_row"
|
|
# The teacher should not be able to delete presets saved by others.
|
|
And I should not see "Actions" in the "Saved preset 1" "table_row"
|
|
# The teacher should be able to delete their own preset.
|
|
And I open the action menu in "Saved preset by teacher" "table_row"
|
|
And I follow "Delete"
|
|
And I click on "Delete" "button" in the "Delete preset Saved preset by teacher1?" "dialogue"
|
|
And I should see "Preset deleted"
|
|
And I should not see "Saved preset by teacher1"
|
|
|
|
@javascript
|
|
Scenario: Teachers can preview a saved preset from the notification
|
|
Given the following "mod_data > fields" exist:
|
|
| database | type | name | description |
|
|
| data1 | text | Test field name | Test field description |
|
|
And the following "mod_data > templates" exist:
|
|
| database | name |
|
|
| data1 | singletemplate |
|
|
| data1 | listtemplate |
|
|
| data1 | addtemplate |
|
|
| data1 | asearchtemplate |
|
|
| data1 | rsstemplate |
|
|
And I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
And I follow "Templates"
|
|
And I click on "Actions" "button"
|
|
And I choose "Publish preset on this site" in the open action menu
|
|
And I set the field "Name" to "New saved preset"
|
|
And I set the field "Description" to "My funny description goes here."
|
|
And I click on "Save" "button" in the "Save all fields and templates and publish as preset on this site" "dialogue"
|
|
And I should see "Preset saved"
|
|
When I click on "Preview preset" "link"
|
|
Then I should see "Preview"
|
|
And I should see "New saved preset"
|
|
And I should see "Test field name"
|
|
And I should see "This is a short text"
|
|
Then "Use this preset" "button" should exist
|
|
|
|
@javascript
|
|
Scenario: Teachers can export any saved preset
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
When I follow "Presets"
|
|
# Plugin presets can't be exported.
|
|
And I should not see "Actions" in the "Image gallery" "table_row"
|
|
# The teacher should be able to export any saved preset.
|
|
And I open the action menu in "Saved preset by teacher1" "table_row"
|
|
Then I should see "Export"
|
|
And following "Export" "link" in the "Saved preset by teacher1" "table_row" should download between "1" and "5000" bytes
|
|
And I open the action menu in "Saved preset 1" "table_row"
|
|
And I should see "Export"
|
|
And following "Export" "link" in the "Saved preset 1" "table_row" should download between "1" and "5000" bytes
|
|
|
|
@javascript @_file_upload
|
|
Scenario Outline: Admins and Teachers can load a preset from a file
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as <user>
|
|
When I follow "Presets"
|
|
Then I click on "Actions" "button"
|
|
And I choose "Import preset" in the open action menu
|
|
And I upload "mod/data/tests/fixtures/image_gallery_preset.zip" file to "Preset file" filemanager
|
|
Then I click on "Import preset and apply" "button" in the ".modal-dialog" "css_element"
|
|
Then I should see "Preset applied"
|
|
# I am on the field page.
|
|
And I should see "Manage fields"
|
|
Then I should see "Preset applied"
|
|
|
|
Examples:
|
|
| user |
|
|
| admin |
|
|
| teacher1 |
|
|
|
|
@javascript
|
|
Scenario Outline: Teachers can use "Use this preset" actions menu next to each preset.
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
And I follow "Presets"
|
|
And I open the action menu in "<Preset Name>" "table_row"
|
|
When I click on "Use this preset" "link" in the "<Preset Name>" "table_row"
|
|
Then I should see "Preset applied"
|
|
|
|
Examples:
|
|
| Preset Name |
|
|
| Image gallery |
|
|
| Saved preset 1 (Admin User) |
|
|
| Saved preset by teacher1 (Teacher 1) |
|
|
|
|
@javascript
|
|
Scenario Outline: Teachers can use "Preview" actions menu next to each preset.
|
|
Given I am on the "Mountain landscapes" "data activity" page logged in as teacher1
|
|
And I follow "Presets"
|
|
And I open the action menu in "<Preset Name>" "table_row"
|
|
When I click on "Preview" "link" in the "<Preset Name>" "table_row"
|
|
Then I should see "Preview of <Preset preview name>"
|
|
|
|
Examples:
|
|
| Preset Name | Preset preview name |
|
|
| Image gallery | Image gallery |
|
|
| Saved preset 1 (Admin User) | Saved preset 1 |
|
|
| Saved preset by teacher1 (Teacher 1) | Saved preset by teacher1 |
|