From f8822b8745c5ea18cf418325662b87250187b3fe Mon Sep 17 00:00:00 2001 From: Nishanth Vijayan Date: Thu, 31 Mar 2016 14:55:19 +0530 Subject: [PATCH] Add tests for api/v1/events_controller and api/v1/speakers_controller --- .../api/v1/events_controller_spec.rb | 35 +++++++++++++++ .../api/v1/speakers_controller_spec.rb | 43 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 spec/controllers/api/v1/events_controller_spec.rb create mode 100644 spec/controllers/api/v1/speakers_controller_spec.rb diff --git a/spec/controllers/api/v1/events_controller_spec.rb b/spec/controllers/api/v1/events_controller_spec.rb new file mode 100644 index 00000000..daee0002 --- /dev/null +++ b/spec/controllers/api/v1/events_controller_spec.rb @@ -0,0 +1,35 @@ +require 'spec_helper' + +describe Api::V1::EventsController do + let!(:conference) { create(:conference) } + let!(:event) { create(:event_full, state: 'confirmed', title: 'Example Event') } + let!(:conference_event) { create(:event_full, state: 'confirmed', title: 'Conference Event', program: conference.program) } + + describe 'GET #index' do + context 'without conference scope' do + it 'returns all confirmed events' do + + get :index, format: :json + json = JSON.parse(response.body)['events'] + expect(response).to be_success + + expect(json.length).to eq(2) + expect(json[0]['title']).to eq('Example Event') + expect(json[1]['title']).to eq('Conference Event') + end + end + + context 'with conference scope' do + it 'returns all confirmed events of conference' do + + get :index, conference_id: conference.short_title, format: :json + json = JSON.parse(response.body)['events'] + + expect(response).to be_success + + expect(json.length).to eq(1) + expect(json[0]['title']).to eq('Conference Event') + end + end + end +end diff --git a/spec/controllers/api/v1/speakers_controller_spec.rb b/spec/controllers/api/v1/speakers_controller_spec.rb new file mode 100644 index 00000000..8efefa57 --- /dev/null +++ b/spec/controllers/api/v1/speakers_controller_spec.rb @@ -0,0 +1,43 @@ +require 'spec_helper' + +describe Api::V1::SpeakersController do + let!(:conference) { create(:conference) } + let!(:event) { create(:event_full) } + let!(:conference_event) { create(:event_full, program: conference.program) } + + let(:speaker) { create(:user, name: 'Speaker') } + let(:conference_speaker) { create(:user, name: 'Conf_Speaker') } + + describe 'GET #index' do + before do + event.event_users << create(:speaker, user: speaker) + conference_event.event_users << create(:speaker, user: conference_speaker) + end + + context 'without conference scope' do + it 'returns all speakers' do + + get :index, format: :json + json = JSON.parse(response.body)['speakers'] + expect(response).to be_success + + expect(json.length).to eq(2) + expect(json[0]['name']).to eq('Speaker') + expect(json[1]['name']).to eq('Conf_Speaker') + end + end + + context 'with conference scope' do + it 'returns all speakers of conference' do + + get :index, conference_id: conference.short_title, format: :json + json = JSON.parse(response.body)['speakers'] + + expect(response).to be_success + + expect(json.length).to eq(1) + expect(json[0]['name']).to eq('Conf_Speaker') + end + end + end +end