diff --git a/app/helpers/proposals_helper.rb b/app/helpers/proposals_helper.rb
index 42090a276..d4d7bca64 100644
--- a/app/helpers/proposals_helper.rb
+++ b/app/helpers/proposals_helper.rb
@@ -18,4 +18,14 @@ module ProposalsHelper
end
end
+ def namespaced_proposal_path(proposal, options={})
+ @namespace_proposal_path ||= namespace
+ case @namespace_proposal_path
+ when "management"
+ management_proposal_path(proposal, options)
+ else
+ proposal_path(proposal, options)
+ end
+ end
+
end
\ No newline at end of file
diff --git a/app/views/proposals/_proposal.html.erb b/app/views/proposals/_proposal.html.erb
index ac2f0ec2f..89e1b3b0e 100644
--- a/app/views/proposals/_proposal.html.erb
+++ b/app/views/proposals/_proposal.html.erb
@@ -6,10 +6,10 @@
<%= t("proposals.proposal.proposal") %>
-
<%= link_to proposal.title, proposal %>
+
<%= link_to proposal.title, namespaced_proposal_path(proposal) %>
- <%= link_to t("proposals.proposal.comments", count: proposal.comments_count), proposal_path(proposal, anchor: "comments") %>
+ <%= link_to t("proposals.proposal.comments", count: proposal.comments_count), namespaced_proposal_path(proposal, anchor: "comments") %>
•
<%= l proposal.created_at.to_date %>
@@ -39,7 +39,7 @@
<% end %>
-
<%= link_to proposal.summary, proposal %>
+
<%= link_to proposal.summary, namespaced_proposal_path(proposal) %>
<%= render "shared/tags", taggable: proposal, limit: 5 %>
diff --git a/spec/features/management/proposals_spec.rb b/spec/features/management/proposals_spec.rb
index 46411c7af..2a296cf5f 100644
--- a/spec/features/management/proposals_spec.rb
+++ b/spec/features/management/proposals_spec.rb
@@ -49,9 +49,52 @@ feature 'Proposals' do
end
end
+ scenario "Searching" do
+ proposal1 = create(:proposal, title: "Show me what you got")
+ proposal2 = create(:proposal, title: "Get Schwifty")
+
+ user = create(:user, :level_two)
+ login_managed_user(user)
+
+ click_link "Support proposals"
+
+ fill_in "search", with: "what you got"
+ click_button "Search"
+
+ expect(current_path).to eq(management_proposals_path)
+
+ within("#proposals") do
+ expect(page).to have_css('.proposal', count: 1)
+ expect(page).to have_content(proposal1.title)
+ expect(page).to_not have_content(proposal2.title)
+ expect(page).to have_css("a[href='#{management_proposal_path(proposal1)}']", text: proposal1.title)
+ expect(page).to have_css("a[href='#{management_proposal_path(proposal1)}']", text: proposal1.summary)
+ end
+ end
+
+ scenario "Listing" do
+ proposal1 = create(:proposal, title: "Show me what you got")
+ proposal2 = create(:proposal, title: "Get Schwifty")
+
+ user = create(:user, :level_two)
+ login_managed_user(user)
+
+ click_link "Support proposals"
+
+ expect(current_path).to eq(management_proposals_path)
+
+ within("#proposals") do
+ expect(page).to have_css('.proposal', count: 2)
+ expect(page).to have_css("a[href='#{management_proposal_path(proposal1)}']", text: proposal1.title)
+ expect(page).to have_css("a[href='#{management_proposal_path(proposal1)}']", text: proposal1.summary)
+ expect(page).to have_css("a[href='#{management_proposal_path(proposal2)}']", text: proposal2.title)
+ expect(page).to have_css("a[href='#{management_proposal_path(proposal2)}']", text: proposal2.summary)
+ end
+ end
+
context "Voting" do
- scenario 'Voting proposals on behalf of someone', :js do
+ scenario 'Voting proposals on behalf of someone in index view', :js do
proposal = create(:proposal)
user = create(:user, :level_two)
@@ -68,6 +111,24 @@ feature 'Proposals' do
expect(URI.parse(current_url).path).to eq(management_proposals_path)
end
+ scenario 'Voting proposals on behalf of someone in show view', :js do
+ proposal = create(:proposal)
+
+ user = create(:user, :level_two)
+ login_managed_user(user)
+
+ click_link "Support proposals"
+
+ within("#proposals") do
+ click_link proposal.title
+ end
+
+ find('.in-favor a').click
+ expect(page).to have_content "1 support"
+ expect(page).to have_content "You already supported this proposal"
+ expect(current_path).to eq(management_proposal_path(proposal))
+ end
+
scenario "Should not allow unverified users to vote proposals" do
proposal = create(:proposal)
@@ -78,27 +139,6 @@ feature 'Proposals' do
expect(page).to have_content "User is not verified"
end
-
- scenario "Searching" do
- proposal1 = create(:proposal, title: "Show me what you got")
- proposal2 = create(:proposal, title: "Get Schwifty")
-
- user = create(:user, :level_two)
- login_managed_user(user)
-
- click_link "Support proposals"
-
- fill_in "search", with: "what you got"
- click_button "Search"
-
- expect(current_path).to eq(management_proposals_path)
-
- within("#proposals") do
- expect(page).to have_css('.proposal', count: 1)
- expect(page).to have_content(proposal1.title)
- expect(page).to_not have_content(proposal2.title)
- end
- end
end
context "Printing" do
diff --git a/spec/features/proposals_spec.rb b/spec/features/proposals_spec.rb
index 8706afd42..5b83e37b3 100644
--- a/spec/features/proposals_spec.rb
+++ b/spec/features/proposals_spec.rb
@@ -20,6 +20,7 @@ feature 'Proposals' do
proposals.each do |proposal|
within('#proposals') do
expect(page).to have_content proposal.title
+ expect(page).to have_css("a[href='#{proposal_path(proposal)}']", text: proposal.title)
expect(page).to have_css("a[href='#{proposal_path(proposal)}']", text: proposal.summary)
end
end