diff --git a/spec/shared/features/admin_milestoneable.rb b/spec/shared/features/admin_milestoneable.rb index c12fd7624..ece014689 100644 --- a/spec/shared/features/admin_milestoneable.rb +++ b/spec/shared/features/admin_milestoneable.rb @@ -1,5 +1,5 @@ shared_examples "admin_milestoneable" do |factory_name, path_name| - it_behaves_like "progressable", factory_name, path_name + it_behaves_like "admin_progressable", factory_name, path_name feature "Admin milestones" do let!(:milestoneable) { create(factory_name) } diff --git a/spec/shared/features/admin_progressable.rb b/spec/shared/features/admin_progressable.rb new file mode 100644 index 000000000..31347942d --- /dev/null +++ b/spec/shared/features/admin_progressable.rb @@ -0,0 +1,122 @@ +shared_examples "admin_progressable" do |factory_name, path_name| + let!(:progressable) { create(factory_name) } + + feature "Manage progress bars" do + let(:progressable_path) { send(path_name, *resource_hierarchy_for(progressable)) } + + let(:path) do + polymorphic_path([:admin, *resource_hierarchy_for(progressable.progress_bars.new)]) + end + + context "Index" do + scenario "Link to index path" do + create(:progress_bar, :secondary, progressable: progressable, + title: "Reading documents", + percentage: 20) + + visit progressable_path + click_link "Manage progress bars" + + expect(page).to have_content "Reading documents" + end + + scenario "No progress bars" do + visit path + + expect(page).to have_content("There are no progress bars") + end + end + + context "New" do + scenario "Primary progress bar", :js do + visit path + click_link "Create new progress bar" + + select "Primary", from: "Type" + + expect(page).not_to have_field "Title" + expect(page).not_to have_content "Add language" + + fill_in "Current progress", with: 43 + click_button "Create Progress bar" + + expect(page).to have_content "Progress bar created successfully" + expect(page).to have_content "43%" + expect(page).to have_content "Primary" + expect(page).to have_content "Primary progress bar" + end + + scenario "Secondary progress bar", :js do + visit path + click_link "Create new progress bar" + + select "Secondary", from: "Type" + + expect(page).to have_content "Add language" + + fill_in "Current progress", with: 36 + fill_in "Title", with: "Plant trees" + click_button "Create Progress bar" + + expect(page).to have_content "Progress bar created successfully" + expect(page).to have_content "36%" + expect(page).to have_content "Secondary" + expect(page).to have_content "Plant trees" + end + end + + context "Edit" do + scenario "Primary progress bar", :js do + bar = create(:progress_bar, progressable: progressable) + + visit path + within("#progress_bar_#{bar.id}") { click_link "Edit" } + + expect(page).to have_field "Current progress" + expect(page).not_to have_field "Title" + expect(page).not_to have_content "Add language" + + fill_in "Current progress", with: 44 + click_button "Update Progress bar" + + expect(page).to have_content "Progress bar updated successfully" + + within("#progress_bar_#{bar.id}") do + expect(page).to have_content "44%" + end + end + + scenario "Secondary progress bar", :js do + bar = create(:progress_bar, :secondary, progressable: progressable) + + visit path + within("#progress_bar_#{bar.id}") { click_link "Edit" } + + expect(page).to have_content "Add language" + + fill_in "Current progress", with: 76 + fill_in "Title", with: "Updated title" + click_button "Update Progress bar" + + expect(page).to have_content "Progress bar updated successfully" + + within("#progress_bar_#{bar.id}") do + expect(page).to have_content "76%" + expect(page).to have_content "Updated title" + end + end + end + + context "Delete" do + scenario "Remove progress bar" do + bar = create(:progress_bar, progressable: progressable, percentage: 34) + + visit path + within("#progress_bar_#{bar.id}") { click_link "Delete" } + + expect(page).to have_content "Progress bar deleted successfully" + expect(page).not_to have_content "34%" + end + end + end +end diff --git a/spec/shared/features/progressable.rb b/spec/shared/features/progressable.rb index 5cdc0c750..280efc5d5 100644 --- a/spec/shared/features/progressable.rb +++ b/spec/shared/features/progressable.rb @@ -11,7 +11,7 @@ shared_examples "progressable" do |factory_name, path_name| find("#tab-milestones-label").click within("#tab-milestones") do - expect(page).to have_content "Progress" + expect(page).to have_css "progress" end end @@ -24,7 +24,7 @@ shared_examples "progressable" do |factory_name, path_name| find("#tab-milestones-label").click within("#tab-milestones") do - expect(page).to have_content "Progress" + expect(page).to have_css "progress" expect(page).to have_content "Build laboratory" end end @@ -37,7 +37,6 @@ shared_examples "progressable" do |factory_name, path_name| find("#tab-milestones-label").click within("#tab-milestones") do - expect(page).not_to have_content "Progress" expect(page).not_to have_content "Defeat Evil Lords" end end