Add CRUD operations for Programming Groups

* Correct sorting in table
* Modify page when nested in exercises
* Fix links between pages
* Link from statistics page to programming_groups/index
* Link from submission page to programming_groups/<id>
* Allow filtering for exercise ID on ProgrammingGroup#index
* Add search fields for internal and external user id on pg/index
This commit is contained in:
kiragrammel
2023-09-14 16:56:36 +02:00
committed by Sebastian Serth
parent f1ca5da44d
commit 79ce069f68
23 changed files with 543 additions and 38 deletions

View File

@ -7,11 +7,13 @@ RSpec.describe ExercisePolicy do
let(:exercise) { build(:dummy, public: true) }
permissions :batch_update? do
it 'grants access to admins only' do
expect(policy).to permit(build(:admin), exercise)
%i[external_user teacher].each do |factory_name|
expect(policy).not_to permit(create(factory_name), exercise)
%i[batch_update? programming_groups_for_exercise?].each do |action|
permissions(action) do
it 'grants access to admins only' do
expect(policy).to permit(build(:admin), exercise)
%i[external_user teacher].each do |factory_name|
expect(policy).not_to permit(create(factory_name), exercise)
end
end
end
end

View File

@ -7,6 +7,17 @@ RSpec.describe ProgrammingGroupPolicy do
let(:programming_group) { build(:programming_group) }
%i[index? destroy? show? edit? update?].each do |action|
permissions(action) do
it 'grants access to admins only' do
expect(policy).to permit(create(:admin), programming_group)
%i[external_user teacher].each do |factory_name|
expect(policy).not_to permit(create(factory_name), programming_group)
end
end
end
end
%i[new? create?].each do |action|
permissions(action) do
it 'grants access to everyone' do