|
|
|
|
@@ -3,30 +3,30 @@ shared_examples "relationable" do |relationable_model_name|
|
|
|
|
|
let(:related1) { create([:proposal, :debate, :budget_investment].sample) }
|
|
|
|
|
let(:related2) { create([:proposal, :debate, :budget_investment].sample) }
|
|
|
|
|
let(:user) { create(:user) }
|
|
|
|
|
let!(:url) { Setting["url"] }
|
|
|
|
|
before { Setting["url"] = Capybara.app_host }
|
|
|
|
|
|
|
|
|
|
scenario "related contents are listed" do
|
|
|
|
|
create(:related_content, parent_relationable: relationable, child_relationable: related1, author: build(:user))
|
|
|
|
|
|
|
|
|
|
visit relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
within("#related-content-list") do
|
|
|
|
|
expect(page).to have_content related1.title
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
visit related1.url
|
|
|
|
|
visit polymorphic_path(related1)
|
|
|
|
|
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 relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
expect(page).not_to have_css "#related-content-list"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
scenario "related contents can be added" do
|
|
|
|
|
login_as(user)
|
|
|
|
|
visit relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
|
|
|
|
|
expect(page).not_to have_css "#related_content"
|
|
|
|
|
expect(page).to have_css ".add-related-content[aria-expanded='false']"
|
|
|
|
|
@@ -36,7 +36,7 @@ shared_examples "relationable" do |relationable_model_name|
|
|
|
|
|
expect(page).to have_css ".add-related-content[aria-expanded='true']"
|
|
|
|
|
|
|
|
|
|
within("#related_content") do
|
|
|
|
|
fill_in "Link to related content", with: "#{url}#{related1.url}"
|
|
|
|
|
fill_in "Link to related content", with: polymorphic_url(related1)
|
|
|
|
|
click_button "Add"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@@ -44,7 +44,7 @@ shared_examples "relationable" do |relationable_model_name|
|
|
|
|
|
expect(page).to have_content related1.title
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
visit related1.url
|
|
|
|
|
visit polymorphic_path(related1)
|
|
|
|
|
|
|
|
|
|
within("#related-content-list") do
|
|
|
|
|
expect(page).to have_content relationable.title
|
|
|
|
|
@@ -53,7 +53,7 @@ shared_examples "relationable" do |relationable_model_name|
|
|
|
|
|
click_button "Add related content"
|
|
|
|
|
|
|
|
|
|
within("#related_content") do
|
|
|
|
|
fill_in "Link to related content", with: "#{url}#{related2.url}"
|
|
|
|
|
fill_in "Link to related content", with: polymorphic_url(related2)
|
|
|
|
|
click_button "Add"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@@ -64,7 +64,7 @@ shared_examples "relationable" do |relationable_model_name|
|
|
|
|
|
|
|
|
|
|
scenario "if related content URL is invalid returns error" do
|
|
|
|
|
login_as(user)
|
|
|
|
|
visit relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
|
|
|
|
|
click_button "Add related content"
|
|
|
|
|
|
|
|
|
|
@@ -73,17 +73,17 @@ shared_examples "relationable" do |relationable_model_name|
|
|
|
|
|
click_button "Add"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
expect(page).to have_content "Link not valid. Remember to start with #{url}."
|
|
|
|
|
expect(page).to have_content "Link not valid. Remember to start with #{Capybara.app_host}."
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
scenario "returns error when relating content URL to itself" do
|
|
|
|
|
login_as(user)
|
|
|
|
|
visit relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
|
|
|
|
|
click_button "Add related content"
|
|
|
|
|
|
|
|
|
|
within("#related_content") do
|
|
|
|
|
fill_in "Link to related content", with: url + relationable.url.to_s
|
|
|
|
|
fill_in "Link to related content", with: polymorphic_url(relationable)
|
|
|
|
|
click_button "Add"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@@ -102,12 +102,12 @@ shared_examples "relationable" do |relationable_model_name|
|
|
|
|
|
related = create(:debate, title: "My path is the only one I've walked")
|
|
|
|
|
|
|
|
|
|
login_as(user)
|
|
|
|
|
visit relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
|
|
|
|
|
click_button "Add related content"
|
|
|
|
|
|
|
|
|
|
within("#related_content") do
|
|
|
|
|
fill_in "Link to related content", with: "#{url}/mypath/#{related.id}"
|
|
|
|
|
fill_in "Link to related content", with: "#{Capybara.app_host}/mypath/#{related.id}"
|
|
|
|
|
click_button "Add"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@@ -120,12 +120,12 @@ shared_examples "relationable" do |relationable_model_name|
|
|
|
|
|
scenario "returns an error when the related content already exists" do
|
|
|
|
|
create(:related_content, parent_relationable: relationable, child_relationable: related1)
|
|
|
|
|
login_as(user)
|
|
|
|
|
visit relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
|
|
|
|
|
click_button "Add related content"
|
|
|
|
|
|
|
|
|
|
within("#related_content") do
|
|
|
|
|
fill_in "url", with: url + related1.url.to_s
|
|
|
|
|
fill_in "url", with: polymorphic_url(related1)
|
|
|
|
|
click_button "Add"
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
@@ -136,7 +136,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 relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
|
|
|
|
|
within("#related-content-list") do
|
|
|
|
|
click_link "Yes"
|
|
|
|
|
@@ -153,7 +153,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 relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
|
|
|
|
|
within("#related-content-list") do
|
|
|
|
|
click_link "No"
|
|
|
|
|
@@ -179,7 +179,7 @@ shared_examples "relationable" do |relationable_model_name|
|
|
|
|
|
|
|
|
|
|
login_as(user)
|
|
|
|
|
|
|
|
|
|
visit relationable.url
|
|
|
|
|
visit polymorphic_path(relationable)
|
|
|
|
|
|
|
|
|
|
expect(page).not_to have_css "#related-content-list"
|
|
|
|
|
end
|
|
|
|
|
|