From 9a81c434d31e1c8c2101921016da4eae8602e705 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Sun, 3 May 2015 18:31:59 +0000 Subject: [PATCH 1/4] Restore default value for AR include_root_in_json --- config/initializers/wrap_parameters.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/initializers/wrap_parameters.rb b/config/initializers/wrap_parameters.rb index a7b1b91..33725e9 100644 --- a/config/initializers/wrap_parameters.rb +++ b/config/initializers/wrap_parameters.rb @@ -9,6 +9,6 @@ ActiveSupport.on_load(:action_controller) do end # To enable root element in JSON for ActiveRecord objects. -ActiveSupport.on_load(:active_record) do - self.include_root_in_json = true -end +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end From 4e0c422a6f8c2ef8c471ea74aee640a042cba5d0 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Sun, 3 May 2015 18:34:46 +0000 Subject: [PATCH 2/4] Remove rabl initializer --- config/initializers/rabl_init.rb | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 config/initializers/rabl_init.rb diff --git a/config/initializers/rabl_init.rb b/config/initializers/rabl_init.rb deleted file mode 100644 index fd674bf..0000000 --- a/config/initializers/rabl_init.rb +++ /dev/null @@ -1,16 +0,0 @@ -Rabl.configure do |config| - # Commented as these are defaults - # config.cache_sources = false - # config.json_engine = nil # Any multi\_json engines - # config.msgpack_engine = nil # Defaults to ::MessagePack - # config.bson_engine = nil # Defaults to ::BSON - # config.plist_engine = nil # Defaults to ::Plist::Emit - # config.include_json_root = true - config.include_json_root = false - # config.include_msgpack_root = true - # config.include_bson_root = true - # config.include_plist_root = true - # config.include_xml_root = false - # config.enable_json_callbacks = false - # config.xml_options = { dasherize: true, skip_types: false } -end From bdfd0edff0b0584bea08766fefdeddf4fbf4e0c2 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Sun, 3 May 2015 18:59:57 +0000 Subject: [PATCH 3/4] Include roots for resources in rabl index views --- app/views/api/playlists/index.rabl | 2 +- app/views/api/tracks/index.rabl | 2 +- spec/integration/api/api_sign_in_spec.rb | 2 +- spec/integration/api/playlists_spec.rb | 30 +++++++++++----------- spec/integration/api/tracks_spec.rb | 32 +++++++++++++----------- 5 files changed, 37 insertions(+), 31 deletions(-) diff --git a/app/views/api/playlists/index.rabl b/app/views/api/playlists/index.rabl index 3dc40de..4d2c53c 100644 --- a/app/views/api/playlists/index.rabl +++ b/app/views/api/playlists/index.rabl @@ -1,4 +1,4 @@ -collection @playlists +collection @playlists, root: :playlists, object_root: false attribute :id attribute :name diff --git a/app/views/api/tracks/index.rabl b/app/views/api/tracks/index.rabl index 4b952c3..665c930 100644 --- a/app/views/api/tracks/index.rabl +++ b/app/views/api/tracks/index.rabl @@ -1,4 +1,4 @@ -collection @tracks +collection @tracks, root: :tracks, object_root: false attribute :id attribute :name diff --git a/spec/integration/api/api_sign_in_spec.rb b/spec/integration/api/api_sign_in_spec.rb index 042afac..acc3246 100644 --- a/spec/integration/api/api_sign_in_spec.rb +++ b/spec/integration/api/api_sign_in_spec.rb @@ -13,7 +13,7 @@ describe 'API sign in' do it 'signs the user in with valid credentials' do do_create - expect(json).to eq(id: user.id) + expect(json).to eq(user: { id: user.id }) end [:email, :password].each do |attr| diff --git a/spec/integration/api/playlists_spec.rb b/spec/integration/api/playlists_spec.rb index 4251281..bf1d32b 100644 --- a/spec/integration/api/playlists_spec.rb +++ b/spec/integration/api/playlists_spec.rb @@ -7,33 +7,35 @@ describe 'API playlists' do playlist = create :playlist get api_playlists_path, format: :json - expect(json).to match [ - a_hash_including( - id: an_instance_of(Fixnum), - name: playlist[:name] - ) - ] + expect(json).to eq( + playlists: [{ + id: playlist.id, + name: playlist.name + }] + ) end it 'shows a playlist' do playlist = create :playlist get api_playlist_path playlist, format: :json - expect(json).to match( - id: playlist.id, - name: playlist.name + expect(json).to eq( + playlist: { + id: playlist.id, + name: playlist.name + } ) end it 'creates playlist' do playlist = attributes_for :playlist - post api_playlists_path, - format: :json, - playlist: playlist + post api_playlists_path, format: :json, playlist: playlist expect(json).to match( - id: an_instance_of(Fixnum), - name: playlist[:name] + playlist: { + id: an_instance_of(Fixnum), + name: playlist[:name] + } ) end end diff --git a/spec/integration/api/tracks_spec.rb b/spec/integration/api/tracks_spec.rb index 9f00375..3ade868 100644 --- a/spec/integration/api/tracks_spec.rb +++ b/spec/integration/api/tracks_spec.rb @@ -8,26 +8,30 @@ describe 'API tracks' do track_2 = create :track, name: 'Track 2' get api_tracks_path, format: :json - expect(json).to eq [ - { - id: track_1.id, - name: 'Track 1', - sound_url: api_sound_url(track_1.sound) - }, - { - id: track_2.id, - name: 'Track 2' - } - ] + expect(json).to eq( + tracks: [ + { + id: track_1.id, + name: 'Track 1', + sound_url: api_sound_url(track_1.sound) + }, + { + id: track_2.id, + name: 'Track 2' + } + ] + ) end it 'shows a track' do track = create :track get api_track_path track, format: :json - expect(json).to match( - id: track.id, - name: track.name + expect(json).to eq( + track: { + id: track.id, + name: track.name + } ) end end From 5a1082e93f2b231d2ceb0f55e47326368b2f86b7 Mon Sep 17 00:00:00 2001 From: Thibault Jouan Date: Sun, 3 May 2015 19:05:41 +0000 Subject: [PATCH 4/4] Refactor API rabl views --- app/views/api/playlists/index.rabl | 3 +-- app/views/api/tracks/index.rabl | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/views/api/playlists/index.rabl b/app/views/api/playlists/index.rabl index 4d2c53c..2f8b123 100644 --- a/app/views/api/playlists/index.rabl +++ b/app/views/api/playlists/index.rabl @@ -1,4 +1,3 @@ collection @playlists, root: :playlists, object_root: false -attribute :id -attribute :name +extends 'api/playlists/show' diff --git a/app/views/api/tracks/index.rabl b/app/views/api/tracks/index.rabl index 665c930..7e57276 100644 --- a/app/views/api/tracks/index.rabl +++ b/app/views/api/tracks/index.rabl @@ -1,6 +1,5 @@ collection @tracks, root: :tracks, object_root: false -attribute :id -attribute :name +extends 'api/tracks/show' node(:sound_url, if: ->(t) { t.sound? }) { |t| api_sound_url t.sound }