diff --git a/app/views/papers/_show_published.html.erb b/app/views/papers/_show_published.html.erb index e68d57ef..fd89188f 100644 --- a/app/views/papers/_show_published.html.erb +++ b/app/views/papers/_show_published.html.erb @@ -22,58 +22,6 @@ - -
+ <%= render partial: "sidebar_published" %> diff --git a/app/views/papers/_sidebar_published.html.erb b/app/views/papers/_sidebar_published.html.erb new file mode 100644 index 00000000..900732a1 --- /dev/null +++ b/app/views/papers/_sidebar_published.html.erb @@ -0,0 +1,73 @@ + diff --git a/spec/factories/papers_factory.rb b/spec/factories/papers_factory.rb index 45f70ef9..0abf896b 100644 --- a/spec/factories/papers_factory.rb +++ b/spec/factories/papers_factory.rb @@ -47,8 +47,7 @@ state { 'retracted' } accepted_at { Time.now } review_issue_id { 0 } - retraction_paper { create(:paper) } - sequence(:doi) {|n| "10.21105/joss.0000#{n}" } + sequence(:doi) {|n| "10.21105/joss.4000#{n}" } end factory :submitted_paper_with_sha do diff --git a/spec/system/papers/show_published_spec.rb b/spec/system/papers/show_published_spec.rb new file mode 100644 index 00000000..d0d92f68 --- /dev/null +++ b/spec/system/papers/show_published_spec.rb @@ -0,0 +1,73 @@ +require "rails_helper" + +feature "Published paper's show page" do + before do + @accepted_paper = create(:accepted_paper, title: "Astronomy paper", doi: "10.21105/joss.00001", review_issue_id: 1) + @accepted_paper.metadata['paper']['title'] = "Astronomy paper" + @accepted_paper.metadata['paper']['authors'] = [{'given_name' => "Vera", 'last_name' => "Rubin"}] + @accepted_paper.metadata['paper']['tags'] = ["Galaxy rotation curves"] + @accepted_paper.save! + + @retracted_paper = create(:retracted_paper, title: "Bad paper", doi: "10.21105/joss.00002", review_issue_id: 2) + @retracted_paper.metadata['paper']['title'] = "Bad paper" + @retracted_paper.save! + + @retraction_notice = create(:accepted_paper, title: "Retraction notice for: Bad paper", doi: "10.21105/joss.00002R") + @retraction_notice.update(retracted_paper: @retracted_paper) + end + + scenario "Accepted paper" do + visit paper_path(@accepted_paper) + + expect(page).to have_content("Astronomy paper") + expect(page).to_not have_content("This paper has been retracted") + expect(page).to_not have_content("This paper is a retraction notice") + + expect(page).to have_link("Software repository") + expect(page).to have_link("Paper review") + expect(page).to have_link("Download paper") + expect(page).to have_link("Software archive") + + expect(page).to_not have_link("Retraction notice") + expect(page).to_not have_link("Retracted Paper") + expect(page).to_not have_link("Download Retraction Notice") + end + + scenario "Retracted paper" do + visit paper_path(@retracted_paper) + + expect(page).to have_content("Bad paper") + expect(page).to have_content("This paper has been retracted") + expect(page).to_not have_content("This paper is a retraction notice") + + expect(page).to have_link("Software repository") + expect(page).to have_link("Paper review") + expect(page).to have_link("Download paper") + expect(page).to have_link("Software archive") + + expect(page).to have_link("Retraction notice") + expect(page).to have_link("read details here") + + expect(page).to_not have_link("Retracted Paper") + expect(page).to_not have_link("Download Retraction Notice") + end + + scenario "Retraction notice" do + visit paper_path(@retraction_notice) + + expect(page).to have_content("Retraction notice for: Bad paper") + expect(page).to have_content("This paper is a retraction notice for: Bad paper") + expect(page).to_not have_content("This paper has been retracted") + + expect(page).to_not have_link("Software repository") + expect(page).to_not have_link("Paper review") + expect(page).to_not have_link("Download paper") + expect(page).to_not have_link("Software archive") + + expect(page).to_not have_link("Retraction notice") + expect(page).to_not have_link("read details here") + + expect(page).to have_link("Retracted Paper") + expect(page).to have_link("Download Retraction Notice") + end +end