mirror of
https://github.com/discourse/discourse.git
synced 2024-12-27 09:15:58 +08:00
6e161d3e75
The most common thing that we do with fab! is: fab!(:thing) { Fabricate(:thing) } This commit adds a shorthand for this which is just simply: fab!(:thing) i.e. If you omit the block, then, by default, you'll get a `Fabricate`d object using the fabricator of the same name.
48 lines
1.3 KiB
Ruby
48 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe PostLocker do
|
|
fab!(:moderator)
|
|
fab!(:post)
|
|
|
|
it "doesn't allow regular users to lock posts" do
|
|
expect { PostLocker.new(post, post.user).lock }.to raise_error(Discourse::InvalidAccess)
|
|
|
|
expect(post).not_to be_locked
|
|
expect(post.locked_by_id).to be_blank
|
|
end
|
|
|
|
it "doesn't allow regular users to unlock posts" do
|
|
PostLocker.new(post, moderator).lock
|
|
|
|
expect { PostLocker.new(post, post.user).lock }.to raise_error(Discourse::InvalidAccess)
|
|
|
|
expect(post).to be_locked
|
|
expect(post.locked_by_id).to eq(moderator.id)
|
|
end
|
|
|
|
it "allows staff to lock and unlock posts" do
|
|
expect(post).not_to be_locked
|
|
expect(post.locked_by_id).to be_blank
|
|
|
|
PostLocker.new(post, moderator).lock
|
|
expect(post).to be_locked
|
|
expect(post.locked_by_id).to eq(moderator.id)
|
|
expect(
|
|
UserHistory.where(
|
|
acting_user_id: moderator.id,
|
|
action: UserHistory.actions[:post_locked],
|
|
).exists?,
|
|
).to eq(true)
|
|
|
|
PostLocker.new(post, moderator).unlock
|
|
expect(post).not_to be_locked
|
|
expect(post.locked_by_id).to be_blank
|
|
expect(
|
|
UserHistory.where(
|
|
acting_user_id: moderator.id,
|
|
action: UserHistory.actions[:post_unlocked],
|
|
).exists?,
|
|
).to eq(true)
|
|
end
|
|
end
|