diff --git a/spec/factories/grading_period_group_factory.rb b/spec/factories/grading_period_group_factory.rb index 53957f72ee7..befc89c9184 100644 --- a/spec/factories/grading_period_group_factory.rb +++ b/spec/factories/grading_period_group_factory.rb @@ -12,6 +12,13 @@ module Factories account.grading_period_groups.create!(title: TITLE) end + def create_for_account_with_term(account, term_name, group_title = TITLE) + custom_term = account.enrollment_terms.create!(name: term_name) + group = account.grading_period_groups.create!(title: group_title) + group.enrollment_terms << custom_term + group + end + def legacy_create_for_course(course) # This relationship will eventually go away. # Please use this helper so that old associations can be easily diff --git a/spec/selenium/grading_standards_mgp_spec.rb b/spec/selenium/grading_standards_mgp_spec.rb index cd9858ca339..cd363ad7e85 100644 --- a/spec/selenium/grading_standards_mgp_spec.rb +++ b/spec/selenium/grading_standards_mgp_spec.rb @@ -48,6 +48,38 @@ describe "multiple grading periods account page" do edit_first_grading_period("Edited Title") expect(period_present?("Edited Title")).to be true end + + context "page functionality" do + group_name_1 = "Group 1" + group_name_2 = "Group 2" + term_name_1 = "First Term" + term_name_2 = "Second Term" + period_name_1 = "A Grading Period" + period_name_2 = "Another Grading Period" + + before(:each) do + group1 = group_helper.create_for_account_with_term(Account.default, term_name_1, group_name_1) + group2 = group_helper.create_for_account_with_term(Account.default, term_name_2, group_name_2) + period_helper.create_for_group(group1, title: period_name_1) + period_helper.create_for_group(group2, title: period_name_2) + + visit_account_grading_standards(Account.default.id) + end + + it "term dropdown filters grading period sets", test_id: 2528643, priority: "1" do + select_term_filter(term_name_1) + expect(find_set(group_name_1)).to be_displayed + expect(set_present?(group_name_2)).to be false + + select_term_filter(term_name_2) + expect(find_set(group_name_2)).to be_displayed + expect(set_present?(group_name_1)).to be false + + select_term_filter("All Terms") + expect(find_set(group_name_1)).to be_displayed + expect(find_set(group_name_2)).to be_displayed + end + end end end diff --git a/spec/selenium/helpers/multiple_grading_periods_common.rb b/spec/selenium/helpers/multiple_grading_periods_common.rb index a37c22b1227..e41c4c8ccdb 100644 --- a/spec/selenium/helpers/multiple_grading_periods_common.rb +++ b/spec/selenium/helpers/multiple_grading_periods_common.rb @@ -8,6 +8,7 @@ module MultipleGradingPeriods # Main page components let(:grading_periods_tab) { f("#grading-periods-tab") } let(:add_set_of_grading_periods_button) { f('button[aria-label="Add Set of Grading Periods"]') } + let(:term_dropdown) { f('select[aria-label="Enrollment Term"]')} # Set components let(:set_name_input) { f('#set-name')} @@ -20,6 +21,8 @@ module MultipleGradingPeriods let(:edit_grading_period_set_button) { f('.edit_grading_period_set_button')} let(:edit_set_save_button) { f('button[aria-label="Save Grading Period Set"]') } let(:first_collapsed_set) { f('.GradingPeriodSet--collapsed') } + let(:all_collapsed_set_titles_css) { '.GradingPeriodSet--collapsed .GradingPeriodSet__title' } + # Period components let(:period_title_input) { f('#title') } @@ -91,5 +94,23 @@ module MultipleGradingPeriods replace_content(period_title_input, title) save_period_button.click end + + def select_term_filter(term) + term_dropdown.click + options = ff('select[aria-label="Enrollment Term"] option') + options.each do |option| + if option.text == term then option.click end + end + end + + def all_collapsed_set_titles + ff(all_collapsed_set_titles_css) + end + + def find_set(set_name) + all_collapsed_set_titles.each do |title| + if title.text == set_name then return title end + end + end end end