e3885aacc4f26c817827173a754510807b6bc84cTim Reddehaserequire 'spec_helper'
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehasedescribe Api::V1::SentencesController do
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase let(:sentence) { create :sentence }
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase let(:ontology) { sentence.ontology }
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase let(:repository) { ontology.repository }
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase context 'on GET to index' do
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase context 'requesting json representation', api_specification: true do
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase let(:sentences_schema) do
e568cc4d63d7d940acafc114bc74287b9cc0e480Eugen Kuksa schema_for_command('ontology/sentences', :get, 200)
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase end
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase before do
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase get :index,
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase repository_id: repository.to_param,
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase ontology_id: ontology.to_param,
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase locid: ontology.locid,
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase format: :json
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase end
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase it { should respond_with :success }
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase it 'respond with json content type' do
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase expect(response.content_type.to_s).to eq('application/json')
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase end
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase it 'should return a representation that validates against the schema' do
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase VCR.use_cassette 'api/json-schemata/ontology/sentences' do
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase expect(response.body).
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase to match_json_schema(sentences_schema)
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase end
3da7bc412bbfe11a5fec5a93e938c7f9369dfd51Tim Reddehase end
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase end
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase end
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase
ad0951c31d4cb89b36e3ada932a86de475cb68e4Tim Reddehase context 'on GET to show' do
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase context 'requesting json representation', api_specification: true do
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase let(:sentence_schema) { schema_for('sentence') }
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase before do
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase get :show,
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase repository_id: ontology.repository.to_param,
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase ontology_id: ontology.to_param,
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase id: sentence.to_param,
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase locid: sentence.locid,
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase format: :json
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase end
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase it { should respond_with :success }
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase it 'respond with json content type' do
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase expect(response.content_type.to_s).to eq('application/json')
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase end
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase it 'should return a representation that validates against the schema' do
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase VCR.use_cassette 'api/json-schemata/sentence' do
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase expect(response.body).to match_json_schema(sentence_schema)
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase end
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase end
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase end
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehase end
e3885aacc4f26c817827173a754510807b6bc84cTim Reddehaseend