From 55cfc8ff60cbaa0fb28f00b143032ae459f8b893 Mon Sep 17 00:00:00 2001 From: Nishanth Vijayan Date: Sun, 13 Mar 2016 21:19:58 +0530 Subject: [PATCH 1/2] Fix API endpoints conferences/id/rooms/ & tracks/ issue #874 --- app/controllers/api/v1/rooms_controller.rb | 3 +-- app/controllers/api/v1/tracks_controller.rb | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/api/v1/rooms_controller.rb b/app/controllers/api/v1/rooms_controller.rb index 7ffd67c8..fb25e08b 100644 --- a/app/controllers/api/v1/rooms_controller.rb +++ b/app/controllers/api/v1/rooms_controller.rb @@ -8,8 +8,7 @@ module Api if params[:conference_id].blank? rooms = Room.all else - conference = Conference.find_by_guid(params[:conference_id]) - rooms = conference.venue.rooms if conference.venue + @conference.venue ? (rooms = @conference.venue.rooms) : (rooms = []) end respond_with rooms end diff --git a/app/controllers/api/v1/tracks_controller.rb b/app/controllers/api/v1/tracks_controller.rb index f477cc0c..5ddcafd1 100644 --- a/app/controllers/api/v1/tracks_controller.rb +++ b/app/controllers/api/v1/tracks_controller.rb @@ -5,7 +5,7 @@ module Api respond_to :json def index - @conference ? (tracks = @conference.tracks) : (tracks = Track.all) + @conference ? (tracks = @conference.program.tracks) : (tracks = Track.all) respond_with tracks end From 864245fec251360e54681bdad39f3ddd3d893901 Mon Sep 17 00:00:00 2001 From: Nishanth Vijayan Date: Mon, 14 Mar 2016 04:02:15 +0530 Subject: [PATCH 2/2] Add specs for api/v1/rooms_controller & api/v1/tracks_controller and cleanup api/v1/tracks and api/v1/rooms controllers --- app/controllers/api/v1/rooms_controller.rb | 7 ++-- app/controllers/api/v1/tracks_controller.rb | 2 +- .../api/v1/rooms_controller_spec.rb | 37 +++++++++++++++++++ .../api/v1/tracks_controller_spec.rb | 36 ++++++++++++++++++ 4 files changed, 77 insertions(+), 5 deletions(-) create mode 100644 spec/controllers/api/v1/rooms_controller_spec.rb create mode 100644 spec/controllers/api/v1/tracks_controller_spec.rb diff --git a/app/controllers/api/v1/rooms_controller.rb b/app/controllers/api/v1/rooms_controller.rb index fb25e08b..fe70fcfe 100644 --- a/app/controllers/api/v1/rooms_controller.rb +++ b/app/controllers/api/v1/rooms_controller.rb @@ -5,12 +5,11 @@ module Api respond_to :json def index - if params[:conference_id].blank? - rooms = Room.all + if @conference + respond_with @conference.venue ? @conference.venue.rooms : Room.none else - @conference.venue ? (rooms = @conference.venue.rooms) : (rooms = []) + respond_with Room.all end - respond_with rooms end end end diff --git a/app/controllers/api/v1/tracks_controller.rb b/app/controllers/api/v1/tracks_controller.rb index 5ddcafd1..879713cf 100644 --- a/app/controllers/api/v1/tracks_controller.rb +++ b/app/controllers/api/v1/tracks_controller.rb @@ -5,7 +5,7 @@ module Api respond_to :json def index - @conference ? (tracks = @conference.program.tracks) : (tracks = Track.all) + tracks = @conference ? @conference.program.tracks : Track.all respond_with tracks end diff --git a/spec/controllers/api/v1/rooms_controller_spec.rb b/spec/controllers/api/v1/rooms_controller_spec.rb new file mode 100644 index 00000000..8976b628 --- /dev/null +++ b/spec/controllers/api/v1/rooms_controller_spec.rb @@ -0,0 +1,37 @@ +require 'spec_helper' + +describe Api::V1::RoomsController do + let!(:conference) { create(:conference) } + let!(:venue) { create(:venue, conference: conference) } + let!(:conference_room) { create(:room, name: 'Conference Room', venue: venue) } + let!(:room) { create(:room, name: 'Test Room') } + + context 'GET #index' do + context 'without conference scope' do + it 'returns all rooms' do + + get :index, format: :json + json = JSON.parse(response.body) + + expect(response).to be_success + + expect(json.length).to eq(2) + expect(json[0]['name']).to eq('Conference Room') + expect(json[1]['name']).to eq('Test Room') + end + end + + context 'with conference scope' do + it 'returns all rooms of conference' do + + get :index, conference_id: conference.short_title, format: :json + json = JSON.parse(response.body) + + expect(response).to be_success + + expect(json.length).to eq(1) + expect(json[0]['name']).to eq('Conference Room') + end + end + end +end diff --git a/spec/controllers/api/v1/tracks_controller_spec.rb b/spec/controllers/api/v1/tracks_controller_spec.rb new file mode 100644 index 00000000..c9cdc09e --- /dev/null +++ b/spec/controllers/api/v1/tracks_controller_spec.rb @@ -0,0 +1,36 @@ +require 'spec_helper' + +describe Api::V1::TracksController do + let!(:conference) { create(:conference) } + let!(:conference_track) { create(:track, name: 'Conference Track', program_id: conference.program.id) } + let!(:track) { create(:track, name: 'Test Track') } + + context 'GET #index' do + context 'without conference scope' do + it 'returns all tracks' do + + get :index, format: :json + json = JSON.parse(response.body) + + expect(response).to be_success + + expect(json.length).to eq(2) + expect(json[0]['name']).to eq('Conference Track') + expect(json[1]['name']).to eq('Test Track') + end + end + + context 'with conference scope' do + it 'returns all rooms of conference' do + + get :index, conference_id: conference.short_title, format: :json + json = JSON.parse(response.body) + + expect(response).to be_success + + expect(json.length).to eq(1) + expect(json[0]['name']).to eq('Conference Track') + end + end + end +end