78 lines
2.3 KiB
Ruby
78 lines
2.3 KiB
Ruby
|
|
require "spec_helper"
|
||
|
|
|
||
|
|
describe "Works#show" do
|
||
|
|
include LoginMacros
|
||
|
|
|
||
|
|
let(:work) { create(:work) }
|
||
|
|
let(:chapter) { work.chapters.first }
|
||
|
|
|
||
|
|
context "when the first chapter of a work is unposted" do
|
||
|
|
before do
|
||
|
|
work.chapters.create(position: 1, posted: false, content: "Draft content")
|
||
|
|
chapter.update!(position: 2)
|
||
|
|
end
|
||
|
|
|
||
|
|
context "when logged in as an admin" do
|
||
|
|
let(:admin) { create(:admin) }
|
||
|
|
|
||
|
|
before { fake_login_admin(admin) }
|
||
|
|
|
||
|
|
it "displays the unposted chapter" do
|
||
|
|
get work_url(work)
|
||
|
|
expect(response).to render_template(:show)
|
||
|
|
expect(response.body).not_to include(chapter.content)
|
||
|
|
expect(response.body).to include("Draft content")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
context "when logged in as a random user" do
|
||
|
|
before { fake_login }
|
||
|
|
|
||
|
|
it "displays the first posted chapter" do
|
||
|
|
get work_url(work)
|
||
|
|
expect(response).to render_template(:show)
|
||
|
|
expect(response.body).to include(chapter.content)
|
||
|
|
expect(response.body).not_to include("Draft content")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
context "when logged in as the work creator" do
|
||
|
|
let(:user) { work.creatorships.first.pseud.user }
|
||
|
|
|
||
|
|
before { fake_login_known_user(user) }
|
||
|
|
|
||
|
|
it "displays the unposted chapter" do
|
||
|
|
get work_url(work)
|
||
|
|
expect(response).to render_template(:show)
|
||
|
|
expect(response.body).not_to include(chapter.content)
|
||
|
|
expect(response.body).to include("Draft content")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
context "when logged in as a user who is an invited co-creator" do
|
||
|
|
let(:user) { create(:user) }
|
||
|
|
|
||
|
|
before do
|
||
|
|
work.creatorships.find_or_create_by(pseud: user.default_pseud, approved: false)
|
||
|
|
fake_login_known_user(user)
|
||
|
|
end
|
||
|
|
|
||
|
|
it "displays the unposted chapter" do
|
||
|
|
get work_url(work)
|
||
|
|
expect(response).to render_template(:show)
|
||
|
|
expect(response.body).not_to include(chapter.content)
|
||
|
|
expect(response.body).to include("Draft content")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
context "when logged out" do
|
||
|
|
it "displays the first posted chapter" do
|
||
|
|
get work_url(work)
|
||
|
|
expect(response).to render_template(:show)
|
||
|
|
expect(response.body).to include(chapter.content)
|
||
|
|
expect(response.body).not_to include("Draft content")
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|