Skip to content

Commit f30d740

Browse files
feat(reference_times_controller): disallow update :lesson_plan_item
1 parent 4b41858 commit f30d740

File tree

2 files changed

+12
-20
lines changed

2 files changed

+12
-20
lines changed

app/controllers/course/reference_times_controller.rb

+7-7
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def create
1111
end
1212

1313
def update
14-
if @reference_time.update(reference_time_params)
14+
if @reference_time.update(update_params)
1515
head :ok
1616
else
1717
render json: { errors: @reference_time.errors.full_messages.to_sentence }, status: :bad_request
@@ -26,13 +26,13 @@ def destroy
2626
end
2727
end
2828

29-
def self.base_params
30-
[:lesson_plan_item_id, :start_at, :bonus_end_at, :end_at]
31-
end
32-
3329
private
3430

35-
def reference_time_params
36-
params.require(:reference_time).permit(*self.class.base_params)
31+
def create_params
32+
params.require(:reference_time).permit([:lesson_plan_item_id, :start_at, :bonus_end_at, :end_at])
33+
end
34+
35+
def update_params
36+
params.require(:reference_time).permit([:start_at, :bonus_end_at, :end_at])
3737
end
3838
end

spec/controllers/course/reference_times_controller_spec.rb

+5-13
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@
112112
reference_timeline_id: timeline,
113113
id: time,
114114
reference_time: {
115-
lesson_plan_item_id: unassigned_item.id,
116115
start_at: new_start_time,
117116
bonus_end_at: new_bonus_end_time,
118117
end_at: new_end_time
@@ -123,23 +122,16 @@
123122
context 'when the user is a Course Manager' do
124123
let(:user) { create(:course_manager, course: course).user }
125124

126-
it 'changes the assigned lesson plan item and times' do
127-
expect { subject }.
128-
to change { assigned_item.reference_times.size }.by(-1).
129-
and change { unassigned_item.reference_times.size }.by(1)
130-
125+
it 'changes the assigned times' do
131126
is_expected.to have_http_status(:ok)
132127

133128
updated_time = assigns(:reference_time)
134-
expect(updated_time.lesson_plan_item.id).to eq(unassigned_item.id)
135129
expect(updated_time.start_at).to eq(new_start_time)
136130
expect(updated_time.bonus_end_at).to eq(new_bonus_end_time)
137131
expect(updated_time.end_at).to eq(new_end_time)
138132
end
139133

140-
context 'when about to be reassigned to an assigned lesson plan item in the same timeline' do
141-
before { create(:course_reference_time, reference_timeline: timeline, lesson_plan_item: unassigned_item) }
142-
134+
context 'when about to have its lesson plan item changed' do
143135
subject do
144136
patch :update, as: :json, params: {
145137
course_id: course,
@@ -149,9 +141,9 @@
149141
}
150142
end
151143

152-
it 'fails and responds bad request with errors' do
153-
is_expected.to have_http_status(:bad_request)
154-
expect(JSON.parse(response.body)['errors']).not_to be_nil
144+
it 'does not change the assigned lesson plan item' do
145+
is_expected.to have_http_status(:ok)
146+
expect(time.lesson_plan_item.id).to eq(assigned_item.id)
155147
end
156148
end
157149

0 commit comments

Comments
 (0)