diff --git a/pact/spec/discussions_spec.rb b/pact/spec/discussions_spec.rb index f7cc4ae2f82..7734c59c0e1 100644 --- a/pact/spec/discussions_spec.rb +++ b/pact/spec/discussions_spec.rb @@ -158,5 +158,53 @@ describe 'Discussions', :pact do expect(response['id']).to eq 1 expect(response['title']).to eq 'New Discussion' end + + it 'should Post a Discussion Response' do + canvas_lms_api.given('a teacher in a course with a discussion'). + upon_receiving('Post a Discussion Response'). + with( + method: :post, + headers: { + 'Authorization': 'Bearer some_token', + 'Auth-User': 'Teacher1', + 'Connection': 'close', + 'Host': PactConfig.mock_provider_service_base_uri, + 'Version': 'HTTP/1.1', + 'Content-Type': 'application/json' + }, + 'path' => '/api/v1/courses/1/discussion_topics/1/entries', + 'body' => + { + 'message': 'Great Discussion!' + }, + query: '' + ). + will_respond_with( + status: 201, + body: Pact.like( + "id": 1, + "user_id": 7, + "parent_id": nil, + "created_at": "2018-07-12T17:55:37Z", + "updated_at": "2018-07-12T17:55:37Z", + "rating_count": nil, + "rating_sum": nil, + "user_name": "T1", + "message": "Great Discussion!", + "user": { + "id": 7, + "display_name": "T1", + "avatar_image_url": "http://canvas.instructure.com/images/messages/avatar-50.png", + "html_url": "http://localhost:3000/courses/3/users/7" + }, + "read_state": "read", + "forced_read_state": false + ) + ) + discussions_api.authenticate_as_user('Teacher1') + response = discussions_api.post_discussion_response(1, 1, 'Great Discussion!') + expect(response['id']).to eq 1 + expect(response['message']).to eq 'Great Discussion!' + end end diff --git a/pact/spec/helper/api_client/discussions.rb b/pact/spec/helper/api_client/discussions.rb index e2f8d1112f0..5878bc8e896 100644 --- a/pact/spec/helper/api_client/discussions.rb +++ b/pact/spec/helper/api_client/discussions.rb @@ -51,7 +51,22 @@ module Helper } }.to_json, :headers => {'Content-Type' => 'application/json'} - ).body + ).body + ) + rescue + nil + end + + def post_discussion_response(course_id, topic_id, discussion_response) + JSON.parse( + self.class.post( + "/api/v1/courses/#{course_id}/discussion_topics/#{topic_id}/entries", + :body => + { + :message => discussion_response + }.to_json, + :headers => {'Content-Type' => 'application/json'} + ).body ) rescue nil