Skip to content

Commit 1c1b177

Browse files
committed
Update error response and tests
1 parent 27a1438 commit 1c1b177

3 files changed

Lines changed: 36 additions & 25 deletions

File tree

lib/concepts/feedback/set_read.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def call(feedback:)
1111
response
1212
rescue StandardError => e
1313
Sentry.capture_exception(e)
14-
response[:error] = response[:feedback]&.errors
14+
response[:error] = e.message
1515
response
1616
end
1717
end

spec/concepts/feedback/set_read_at_spec.rb

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
it 'returns the updated feedback' do
1616
response = described_class.call(feedback: feedback)
17-
expect(response[:feedback]).to eq(feedback)
17+
expect(response[:feedback]).to be_a(Feedback)
1818
end
1919

2020
it 'returns read_at' do
@@ -30,28 +30,23 @@
3030

3131
context 'when set_read fails' do
3232
before do
33-
allow(feedback).to receive(:save!).and_raise(StandardError, 'Transition failed')
33+
allow(feedback).to receive(:save!).and_raise(StandardError, 'Some API error')
3434
end
3535

3636
it 'returns a failed operation response' do
3737
response = described_class.call(feedback: feedback)
3838
expect(response.success?).to be(false)
3939
end
4040

41-
it 'returns the original feedback' do
42-
response = described_class.call(feedback: feedback)
43-
expect(response[:feedback]).to eq(feedback)
44-
end
45-
4641
it 'does not persist read_at' do
4742
described_class.call(feedback: feedback)
4843
feedback.reload
4944
expect(feedback.read_at).to be_nil
5045
end
5146

52-
it 'includes an error object in the response' do
47+
it 'includes the correct error response' do
5348
response = described_class.call(feedback: feedback)
54-
expect(response[:error]).to be_a(ActiveModel::Errors)
49+
expect(response[:error]).to eq('Some API error')
5550
end
5651
end
5752
end

spec/features/feedback/setting_read_at_spec.rb

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,44 @@
4444
context 'when logged in as the student' do
4545
before do
4646
authenticated_in_hydra_as(student)
47-
put("/api/projects/#{student_project.identifier}/feedback/#{feedback.id}/read", headers: headers)
48-
feedback.reload
4947
end
5048

51-
it 'returns ok response' do
52-
expect(response).to have_http_status(:ok)
53-
end
49+
context 'when feedback exists' do
50+
before do
51+
put("/api/projects/#{student_project.identifier}/feedback/#{feedback.id}/read", headers: headers)
52+
feedback.reload
53+
end
5454

55-
it 'returns the feedback json' do
56-
expect(response.body).to eq(feedback_json)
57-
end
55+
it 'returns ok response' do
56+
expect(response).to have_http_status(:ok)
57+
end
5858

59-
it 'does set the read_at on feedback' do
60-
expect(feedback.read_at).to be_present
61-
end
59+
it 'returns the feedback json' do
60+
expect(response.body).to eq(feedback_json)
61+
end
62+
63+
it 'does set the read_at on feedback' do
64+
expect(feedback.read_at).to be_present
65+
end
6266

63-
it 'sets read_at to be a time' do
64-
expect(feedback.read_at).to be_a(ActiveSupport::TimeWithZone)
67+
it 'sets read_at to be a time' do
68+
expect(feedback.read_at).to be_a(ActiveSupport::TimeWithZone)
69+
end
70+
71+
it 'sets read_at to a recent time' do
72+
expect(feedback.read_at).to be_within(5.seconds).of(Time.current)
73+
end
6574
end
6675

67-
it 'sets read_at to a recent time' do
68-
expect(feedback.read_at).to be_within(5.seconds).of(Time.current)
76+
context 'when feedback does not exist' do
77+
before do
78+
put("/api/projects/#{student_project.identifier}/feedback/does-not-exist/read", headers: headers)
79+
feedback.reload
80+
end
81+
82+
it 'returns not found response' do
83+
expect(response).to have_http_status(:not_found)
84+
end
6985
end
7086
end
7187
end

0 commit comments

Comments
 (0)