Skip to content

Commit c2d63ea

Browse files
test(reference_timeline): add ability tests
1 parent 0067fd5 commit c2d63ea

File tree

3 files changed

+64
-6
lines changed

3 files changed

+64
-6
lines changed

app/models/components/course/course_ability_component.rb

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,6 @@ def define_owners_course_permissions
6363
def allow_owners_managing_course
6464
can :manage, Course, id: course.id
6565
can :manage, CourseUser, course_id: course.id
66-
can :manage, Course::EnrolRequest, course_id: course.id
67-
end
68-
69-
def allow_owners_managing_reference_timelines
70-
can :manage, Course::ReferenceTimeline, course_id: course.id
71-
can :manage, Course::ReferenceTime, reference_timeline: { course_id: course.id }
66+
can :manage, Course::EnrolRequest, course_id: course.id
7267
end
7368
end
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# frozen_string_literal: true
2+
module Course::TimelinesAbilityComponent
3+
include AbilityHost::Component
4+
5+
def define_permissions
6+
allow_owners_managing_reference_timelines if course_user&.manager_or_owner?
7+
8+
super
9+
end
10+
11+
private
12+
13+
def allow_owners_managing_reference_timelines
14+
can :manage, Course::ReferenceTimeline, course_id: course.id
15+
can :manage, Course::ReferenceTime, reference_timeline: { course_id: course.id }
16+
end
17+
end
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# frozen_string_literal: true
2+
require 'rails_helper'
3+
4+
RSpec.describe Course::ReferenceTimeline, type: :model do
5+
let(:instance) { create(:instance) }
6+
7+
with_tenant(:instance) do
8+
subject { Ability.new(user, course, course_user) }
9+
let(:course) { create(:course) }
10+
let(:timeline) { create(:course_reference_timeline, course: course) }
11+
let(:item) { create(:course_lesson_plan_item, course: course) }
12+
let!(:time) { create(:course_reference_time, reference_timeline: timeline, lesson_plan_item: item) }
13+
14+
context 'when the user is a Course Student' do
15+
let(:course_user) { create(:course_student, course: course) }
16+
let(:user) { course_user.user }
17+
18+
it { is_expected.not_to be_able_to(:manage, timeline) }
19+
it { is_expected.not_to be_able_to(:manage, time) }
20+
end
21+
22+
context 'when the user is a Course Teaching Assistant' do
23+
let(:course_user) { create(:course_teaching_assistant, course: course) }
24+
let(:user) { course_user.user }
25+
26+
it { is_expected.not_to be_able_to(:manage, timeline) }
27+
it { is_expected.not_to be_able_to(:manage, time) }
28+
end
29+
30+
context 'when the user is a Course Observer' do
31+
let(:course_user) { create(:course_observer, course: course) }
32+
let(:user) { course_user.user }
33+
34+
it { is_expected.not_to be_able_to(:manage, timeline) }
35+
it { is_expected.not_to be_able_to(:manage, time) }
36+
end
37+
38+
context 'when the user is a Course Manager' do
39+
let(:course_user) { create(:course_manager, course: course) }
40+
let(:user) { course_user.user }
41+
42+
it { is_expected.to be_able_to(:manage, timeline) }
43+
it { is_expected.to be_able_to(:manage, time) }
44+
end
45+
end
46+
end

0 commit comments

Comments
 (0)