Sha256: 839e399a5d644e77a9c391e00fe2fc4367e486da82e1d74801f12271902df1ae
Contents?: true
Size: 1.36 KB
Versions: 33
Compression:
Stored size: 1.36 KB
Contents
describe QuizApiClient::Services::QuizSessionsService do let(:host) { 'api.host' } let(:config) { QuizApiClient::Config.new { |c| c.host = host } } let(:subject) { described_class.new(config) } describe '#create' do let(:params) { { quiz_id: 1 } } let(:stubbed_response) { { 'id' => '1' } } let(:expected_url) { "https://#{host}/api/quizzes/#{params[:quiz_id]}/quiz_sessions" } let(:expected_body) { { quiz_session: { quiz_id: 1 } }.to_json } let(:status_code) { 200 } before do stub_request(:post, expected_url) .with(body: expected_body) .to_return( status: status_code, body: stubbed_response.to_json, headers: { 'Content-Type' => 'application/json' } ) end it 'posts to quiz_api/api/quizzes and returns the response' do result = subject.create(params: params, token: 'token') expect(result.parsed_response).to eql(stubbed_response) end it 'raises an error when no quiz_id is specified' do params = {} expect do subject.create(params: params, token: 'token') end.to raise_error 'Quiz Id Required' end context 'response' do it 'returns the response with the correct status code' do response = subject.create(params: params, token: 'token') expect(response.code).to eq(status_code) end end end end
Version data entries
33 entries across 33 versions & 1 rubygems