
Since both projects are developed together and by the same team, we also want to have the same code structure and utility methods available in both projects. Therefore, this commit changes many files, but without a functional change.
36 lines
1013 B
Ruby
36 lines
1013 B
Ruby
# frozen_string_literal: true
|
|
|
|
require 'rails_helper'
|
|
|
|
RSpec.describe ProgrammingGroupPolicy do
|
|
subject(:policy) { described_class }
|
|
|
|
let(:programming_group) { build(:programming_group) }
|
|
|
|
%i[new? create?].each do |action|
|
|
permissions(action) do
|
|
it 'grants access to everyone' do
|
|
%i[external_user teacher admin].each do |factory_name|
|
|
expect(policy).to permit(create(factory_name), programming_group)
|
|
end
|
|
end
|
|
end
|
|
|
|
permissions(:stream_sync_editor?) do
|
|
it 'grants access to admins' do
|
|
expect(policy).to permit(create(:admin), programming_group)
|
|
end
|
|
|
|
it 'grants access to members of the programming group' do
|
|
programming_group.users do |user|
|
|
expect(policy).to permit(user, programming_group)
|
|
end
|
|
end
|
|
|
|
it 'does not grant access to someone who is not a member of the programming group' do
|
|
expect(policy).not_to permit(create(:external_user), programming_group)
|
|
end
|
|
end
|
|
end
|
|
end
|