diff --git a/staff_features/resources/resource_tree_navigate.feature b/staff_features/resources/resource_tree_navigate.feature index 2abd391..c0f6853 100644 --- a/staff_features/resources/resource_tree_navigate.feature +++ b/staff_features/resources/resource_tree_navigate.feature @@ -1,26 +1,27 @@ -Feature: Navigating a Resource Record Tree +Feature: Resource Tree navigate Background: Given an administrator user is logged in - And a Resource has been created - And 2 Archival Objects attached to the Resource record have been created - Scenario: Viewing the Resource Record tree + And a Resource with two Archival Objects has been created + Scenario: View the Resource Record tree When the Resource is opened in edit mode - Then the Resource Record is displayed as the top level of the navigation tree - And the tree includes the 2 attached Archival Object Records - And the current record is highlighted in the tree - Scenario: Expanding all levels of the tree - Given the Resource Record tree is displayed + Then the Resource is displayed as the top level of the navigation tree + And the Resource is highlighted in the tree + And only the top-level Archival Objects are displayed + Scenario: Expand all levels of the tree + Given the Resource is opened in edit mode + And only the first-level Archival Objects are displayed When the user clicks on 'Auto-Expand All' - Then all files of Archival Objects are displayed - And the button has the label 'Disable Auto-Expand' - And the expand arrow is disabled - Scenario: Disabling auto-expand - Given all levels of hierarchy in the tree are expanded + Then all Archival Objects are displayed + And the button has text 'Disable Auto-Expand' + And the expand arrows are disabled + Scenario: Disable auto-expand + Given the Resource is opened in edit mode + And all levels of hierarchy in the tree are expanded When the user clicks on 'Disable Auto-Expand' - Then the button has the label 'Auto-Expand All' - And the expand arrow is enabled - And all sections remain expanded until manually collapsed - Scenario: Collapsing all levels of the tree - Given the Resource Record tree is displayed + Then the button has text 'Auto-Expand All' + And the expand arrows are enabled + Scenario: Collapse all levels of the tree + Given the Resource is opened in edit mode + And all levels of hierarchy in the tree are expanded When the user clicks on 'Collapse Tree' - Then the Resource Record and its top-level Archival Object Records are displayed + Then only the top-level Archival Objects are displayed diff --git a/staff_features/resources/step_definitions/resource_tree_navigate.rb b/staff_features/resources/step_definitions/resource_tree_navigate.rb new file mode 100644 index 0000000..035aaf1 --- /dev/null +++ b/staff_features/resources/step_definitions/resource_tree_navigate.rb @@ -0,0 +1,133 @@ +# frozen_string_literal: true + +Given 'a Resource with two Archival Objects has been created' do + visit "#{STAFF_URL}/resources/new" + + fill_in 'resource_title_', with: "Resource #{@uuid}" + fill_in 'resource_id_0_', with: "Resource #{@uuid}" + select 'Class', from: 'resource_level_' + element = find('#resource_lang_materials__0__language_and_script__language_') + element.send_keys('AU') + element.send_keys(:tab) + + select 'Single', from: 'resource_dates__0__date_type_' + fill_in 'resource_dates__0__begin_', with: '2024' + + fill_in 'resource_extents__0__number_', with: '10' + select 'Cassettes', from: 'resource_extents__0__extent_type_' + + element = find('#resource_finding_aid_language_') + element.send_keys('ENG') + element.send_keys(:tab) + + element = find('#resource_finding_aid_script_') + element.send_keys('Latin') + element.send_keys(:tab) + + find('button', text: 'Save Resource', match: :first).click + + wait_for_ajax + expect(page).to have_text "Resource Resource #{@uuid} created" + + url_parts = current_url.split('/') + url_parts.pop + @resource_id = url_parts.pop + + click_on 'Add Child' + wait_for_ajax + fill_in 'Title', with: "Archival Object 1 #{@uuid}" + select 'Class', from: 'Level of Description' + click_on 'Save' + wait_for_ajax + expect(page).to have_text "Archival Object Archival Object 1 #{@uuid} on Resource Resource #{@uuid} created" + + click_on 'Add Child' + wait_for_ajax + fill_in 'Title', with: "Archival Object 2 #{@uuid}" + select 'Class', from: 'Level of Description' + click_on 'Save' + wait_for_ajax + expect(page).to have_text "Archival Object Archival Object 2 #{@uuid} created as child of Archival Object 1 #{@uuid} on Resource Resource #{@uuid}" +end + +Given 'the Resource is opened in edit mode' do + visit "#{STAFF_URL}/resources/#{@resource_id}/edit" + + wait_for_ajax +end + +Then 'the Resource is displayed as the top level of the navigation tree' do + rows = all('#tree-container .table .table-row', visible: :all) + + expect(rows.length).to eq 4 + expect(rows[0].text).to include "Resource #{@uuid}" +end + +Then 'the Resource is highlighted in the tree' do + rows = all('#tree-container .table .table-row') + + expect(rows.length).to eq 2 + expect(rows[0].text).to include "Resource #{@uuid}" + expect(rows[0][:class]).to include 'current' +end + +Given 'only the first-level Archival Objects are displayed' do + rows = all('#tree-container .table .table-row') + + expect(rows.length).to eq 2 + expect(rows[1].text).to include "Archival Object 1 #{@uuid}" +end + +Then 'the button has text {string}' do |button_text| + expect(page).to have_text button_text +end + +Then 'the expand arrows are disabled' do + arrows = all('.expandme') + + expect(arrows.length).to eq 1 + + expect(arrows[0][:class]).to include 'disabled' + arrows[0].click + expect(page).to have_text "Archival Object 2 #{@uuid}" +end + +Then 'all Archival Objects are displayed' do + wait_for_ajax + + rows = all('#tree-container .table .table-row') + + expect(rows.length).to eq 3 + expect(rows[1].text).to include "Archival Object 1 #{@uuid}" + expect(rows[2].text).to include "Archival Object 2 #{@uuid}" +end + +Then 'only the top-level Archival Objects are displayed' do + rows = all('#tree-container .table .table-row') + + tries = 0 + loop do + break if rows.length == 2 || tries == 3 + + sleep 1 + tries += 1 + rows = all('#tree-container .table .table-row') + end + + expect(rows.length).to eq 2 + expect(rows[1].text).to include "Archival Object 1 #{@uuid}" +end + +Given 'all levels of hierarchy in the tree are expanded' do + click_on 'Auto-Expand All' + + wait_for_ajax +end + +Then 'the expand arrows are enabled' do + arrows = all('.expandme') + + arrows.each do |arrow| + expect(arrow[:class]).to_not include 'disabled' + end +end