Add collaborative legislation summary again

It was removed in commit 128a8164 because we hadn't reviewed it nor
tested it properly. We're now adding it again, fixing the issues we've
found while reviewing.
This commit is contained in:
Javi Martín
2020-07-16 19:23:04 +02:00
parent a8a79fe97f
commit 14df74fed7
20 changed files with 513 additions and 37 deletions

View File

@@ -0,0 +1,172 @@
require "rails_helper"
describe "Legislation" do
context "process summary page" do
scenario "summary tab is not shown for open processes" do
process = create(:legislation_process, :open)
visit legislation_process_path(process)
expect(page).not_to have_content "Summary"
end
scenario "summary tab is shown por past processes" do
process = create(:legislation_process, :past)
visit legislation_process_path(process)
expect(page).to have_content "Summary"
end
end
scenario "empty process" do
process = create(:legislation_process, :empty,
result_publication_enabled: true,
end_date: Date.current - 1.day
)
visit summary_legislation_process_path(process)
expect(page).to have_content "This process didn't have any participation phases"
end
scenario "empty phases" do
process = create(:legislation_process, end_date: Date.current - 1.day)
visit summary_legislation_process_path(process)
expect(page).to have_content "Debate phase"
expect(page).to have_content "No debates"
expect(page).to have_content "There aren't any questions"
expect(page).to have_content "Proposals phase"
expect(page).to have_content "No proposals"
expect(page).to have_content "There are no proposals"
expect(page).to have_content "Comments phase"
expect(page).to have_content "No comments"
expect(page).to have_content "There are no comments"
end
context "only debates exist" do
let(:process) { create(:legislation_process, end_date: Date.current - 1.day) }
let(:user) { create(:user, :level_two) }
before do
create(:legislation_question, process: process, title: "Question 1") do |question|
create(:comment, user: user, commentable: question, body: "Answer 1")
create(:comment, user: user, commentable: question, body: "Answer 2")
end
create(:legislation_question, process: process, title: "Question 2") do |question|
create(:comment, user: user, commentable: question, body: "Answer 3")
create(:comment, user: user, commentable: question, body: "Answer 4")
end
end
scenario "shows debates list" do
visit summary_legislation_process_path(process)
expect(page).to have_content "Debate phase"
expect(page).to have_content "2 debates"
expect(page).to have_link "Question 1"
expect(page).to have_content "Answer 1"
expect(page).to have_content "Answer 2"
expect(page).to have_link "Question 2"
expect(page).to have_content "Answer 3"
expect(page).to have_content "Answer 4"
expect(page).to have_content "Proposals phase"
expect(page).to have_content "No proposals"
expect(page).to have_content "There are no proposals"
expect(page).to have_content "Comments phase"
expect(page).to have_content "No comments"
expect(page).to have_content "There are no comments"
end
end
context "only proposals exist" do
let(:process) { create(:legislation_process, end_date: Date.current - 1.day) }
before do
create(:legislation_proposal, legislation_process_id: process.id,
title: "Legislation proposal 1", selected: true)
create(:legislation_proposal, legislation_process_id: process.id,
title: "Legislation proposal 2", selected: false)
create(:legislation_proposal, legislation_process_id: process.id,
title: "Legislation proposal 3", selected: true)
create(:legislation_proposal, legislation_process_id: process.id,
title: "Legislation proposal 4", selected: false)
end
scenario "shows proposals list" do
visit summary_legislation_process_path(process)
expect(page).to have_content "Debate phase"
expect(page).to have_content "No debates"
expect(page).to have_content "There aren't any questions"
expect(page).to have_content "Proposals phase"
expect(page).to have_content "2 proposals"
expect(page).to have_link "Legislation proposal 1"
expect(page).not_to have_content "Legislation proposal 2"
expect(page).to have_link "Legislation proposal 3"
expect(page).not_to have_content "Legislation proposal 4"
expect(page).to have_content "Comments phase"
expect(page).to have_content "No comments"
expect(page).to have_content "There are no comments"
end
end
context "only text comments exist" do
let(:process) { create(:legislation_process, end_date: Date.current - 1.day) }
before do
user = create(:user, :level_two)
draft_version_1 = create(:legislation_draft_version, process: process,
title: "Version 1", body: "Body of the first version",
status: "published")
draft_version_2 = create(:legislation_draft_version, process: process,
title: "Version 2", body: "Body of the second version and that's it all of it",
status: "published")
annotation0 = create(:legislation_annotation,
draft_version: draft_version_1, text: "my annotation123",
ranges: annotation_ranges(5, 10))
annotation1 = create(:legislation_annotation,
draft_version: draft_version_2, text: "hola",
ranges: annotation_ranges(5, 10))
annotation2 = create(:legislation_annotation,
draft_version: draft_version_2,
ranges: annotation_ranges(12, 19))
create(:comment, user: user, commentable: annotation0, body: "Comment 0")
create(:comment, user: user, commentable: annotation1, body: "Comment 1")
create(:comment, user: user, commentable: annotation2, body: "Comment 2")
create(:comment, user: user, commentable: annotation2, body: "Comment 3")
end
scenario "shows coments list" do
visit summary_legislation_process_path(process)
expect(page).to have_content "Debate phase"
expect(page).to have_content "No debates"
expect(page).to have_content "There aren't any questions"
expect(page).to have_content "Proposals phase"
expect(page).to have_content "No proposals"
expect(page).to have_content "There are no proposals"
expect(page).to have_content "Comments phase"
expect(page).to have_content "Top comments"
expect(page).not_to have_content "Comment 0"
expect(page).to have_link "Comment 1"
expect(page).to have_link "Comment 2"
expect(page).to have_link "Comment 3"
end
end
def annotation_ranges(start_offset, end_offset)
[{ "start" => "/p[1]", "startOffset" => start_offset, "end" => "/p[1]", "endOffset" => end_offset }]
end
end