From b2054ac531c017ac8a6be3c4d17d94b9477dd028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mar=C3=ADa=20Checa?= Date: Thu, 11 Jan 2018 17:11:51 +0100 Subject: [PATCH] Improved relationable tests for budget investments --- spec/features/budgets/investments_spec.rb | 1 + spec/shared/features/relationable.rb | 28 +++++++++++------------ 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb index 69ab52df1..d1fdcc474 100644 --- a/spec/features/budgets/investments_spec.rb +++ b/spec/features/budgets/investments_spec.rb @@ -20,6 +20,7 @@ feature 'Budget Investments' do context "Concerns" do it_behaves_like 'notifiable in-app', Budget::Investment + it_behaves_like 'relationable', Budget::Investment end scenario 'Index' do diff --git a/spec/shared/features/relationable.rb b/spec/shared/features/relationable.rb index e0aa4f0b1..9753e79ff 100644 --- a/spec/shared/features/relationable.rb +++ b/spec/shared/features/relationable.rb @@ -1,39 +1,39 @@ shared_examples "relationable" do |relationable_model_name| - let(:relationable) { create(relationable_model_name.name.downcase.to_sym) } - let(:related1) { create([:proposal, :debate].sample) } - let(:related2) { create([:proposal, :debate].sample) } + let(:relationable) { create(relationable_model_name.name.parameterize('_').to_sym) } + let(:related1) { create([:proposal, :debate, :budget_investment].sample) } + let(:related2) { create([:proposal, :debate, :budget_investment].sample) } let(:user) { create(:user) } scenario 'related contents are listed' do related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1, author: build(:user)) - visit send("#{relationable.class.name.downcase}_path", relationable) + visit relationable.url within("#related-content-list") do expect(page).to have_content(related1.title) end - visit send("#{related1.class.name.downcase}_path", related1) + visit related1.url within("#related-content-list") do expect(page).to have_content(relationable.title) end end scenario 'related contents list is not rendered if there are no relations' do - visit send("#{relationable.class.name.downcase}_path", relationable) + visit relationable.url expect(page).not_to have_css("#related-content-list") end scenario 'related contents can be added' do login_as(user) - visit send("#{relationable.class.name.downcase}_path", relationable) + visit relationable.url expect(page).to have_selector('#related_content', visible: false) click_on("Add related content") expect(page).to have_selector('#related_content', visible: true) within("#related_content") do - fill_in 'url', with: "#{Setting['url']}/#{related1.class.name.downcase.pluralize}/#{related1.to_param}" + fill_in 'url', with: "#{Setting['url'] + related1.url}" click_button "Add" end @@ -41,14 +41,14 @@ shared_examples "relationable" do |relationable_model_name| expect(page).to have_content(related1.title) end - visit send("#{related1.class.name.downcase}_path", related1) + visit related1.url within("#related-content-list") do expect(page).to have_content(relationable.title) end within("#related_content") do - fill_in 'url', with: "#{Setting['url']}/#{related2.class.name.downcase.pluralize}/#{related2.to_param}" + fill_in 'url', with: "#{Setting['url'] + related2.url}" click_button "Add" end @@ -59,7 +59,7 @@ shared_examples "relationable" do |relationable_model_name| scenario 'if related content URL is invalid returns error' do login_as(user) - visit send("#{relationable.class.name.downcase}_path", relationable) + visit relationable.url click_on("Add related content") @@ -75,7 +75,7 @@ shared_examples "relationable" do |relationable_model_name| related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1, author: build(:user)) login_as(user) - visit send("#{relationable.class.name.downcase}_path", relationable) + visit relationable.url within("#related-content-list") do find("#related-content-#{related_content.opposite_related_content.id}").hover @@ -92,7 +92,7 @@ shared_examples "relationable" do |relationable_model_name| related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1, author: build(:user)) login_as(user) - visit send("#{relationable.class.name.downcase}_path", relationable) + visit relationable.url within("#related-content-list") do find("#related-content-#{related_content.opposite_related_content.id}").hover @@ -117,7 +117,7 @@ shared_examples "relationable" do |relationable_model_name| login_as(user) - visit send("#{relationable.class.name.downcase}_path", relationable) + visit relationable.url expect(page).not_to have_css("#related-content-list") end