mirror of
https://github.com/mastodon/mastodon.git
synced 2026-04-25 07:56:08 -05:00
49 lines
1.3 KiB
Ruby
49 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe AnnouncementPolicy do
|
|
subject { described_class }
|
|
|
|
let(:admin) { Fabricate(:admin_user).account }
|
|
let(:john) { Fabricate(:account) }
|
|
|
|
permissions :index?, :create?, :update?, :destroy? do
|
|
context 'with an admin' do
|
|
it { is_expected.to permit(admin, Announcement) }
|
|
end
|
|
|
|
context 'with a non-admin' do
|
|
it { is_expected.to_not permit(john, Announcement) }
|
|
end
|
|
end
|
|
|
|
permissions :distribute? do
|
|
let(:announcement) { Fabricate :announcement }
|
|
|
|
context 'with non admin role' do
|
|
it { is_expected.to_not permit(john, announcement) }
|
|
end
|
|
|
|
context 'with admin role' do
|
|
context 'with unpublished announcement' do
|
|
let(:announcement) { Fabricate :announcement, published: false, scheduled_at: 5.days.from_now }
|
|
|
|
it { is_expected.to_not permit(admin, announcement) }
|
|
end
|
|
|
|
context 'with published already sent announcement' do
|
|
let(:announcement) { Fabricate :announcement, notification_sent_at: 3.days.ago }
|
|
|
|
it { is_expected.to_not permit(admin, announcement) }
|
|
end
|
|
|
|
context 'with published not sent announcement' do
|
|
let(:announcement) { Fabricate :announcement }
|
|
|
|
it { is_expected.to permit(admin, announcement) }
|
|
end
|
|
end
|
|
end
|
|
end
|