sentences_controller_spec.rb revision b7a6e3e25c8160f135b5e6cbc7d0d674249f6b94
5a580c3a38ced62d4bcc95b8ac7c4f2935b5d294Timo Sirainenrequire 'spec_helper'
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde
fc71e94957d0c2959a609450a2f303640d681858Sascha Wildedescribe SentencesController do
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen let!(:sentence) { create :sentence }
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde let!(:ontology) { sentence.ontology }
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde
9bb91f1dbf7cf8cfbd2df7784101df98d59fb46dTimo Sirainen context 'on GET to index' do
bdd36cfdba3ff66d25570a9ff568d69e1eb543cfTimo Sirainen render_views
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde before do
fc464e5b2b2ab4d415a5d5b90ce4475d34620a75Timo Sirainen get :index,
a43145989f87ec68754e21234e7b6d892c4a4421Timo Sirainen repository_id: ontology.repository.to_param,
d99107ddf4d9bccb710994482daf65276a9d6321Timo Sirainen ontology_id: ontology.to_param
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde end
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde it { should respond_with :success }
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde it { should render_template :index }
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde it { should render_template 'sentences/_sentence' }
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen end
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen context 'on GET to show' do
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen context 'requesting json representation', api_specification: true do
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen let(:sentence_schema) { schema_for('sentence') }
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen before do
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde get :show,
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen repository_id: ontology.repository.to_param,
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen ontology_id: ontology.to_param,
64bfe7b4a42512971db154937905dfa2bdb9cf2cTimo Sirainen id: sentence.to_param,
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen format: :json
c5a6a6565be93224fc26522eda855b0990f256e8Timo Sirainen end
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde it { should respond_with :success }
0f4fb03953afa4a39d5e32e9ca0527c0a84f9aeeTimo Sirainen
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde it 'respond with json content type' do
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde expect(response.content_type.to_s).to eq('application/json')
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde end
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen it 'should return a representation that validates against the schema' do
fc71e94957d0c2959a609450a2f303640d681858Sascha Wilde VCR.use_cassette 'api/json-schemata/sentence' do
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen expect(response.body).to match_json_schema(sentence_schema)
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen end
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen end
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen end
4b1359bde7d32667197548652a4b4f540062e2acTimo Sirainen end
fc71e94957d0c2959a609450a2f303640d681858Sascha Wildeend
aba994a4e79a020b4748e0ceffc194e5a18e1d1aTimo Sirainen