Sha256: 63413f195bcef186cccf5f63e013ec96c9ccb5220523d3cd48d86466dee6777b

Contents?: true

Size: 1.68 KB

Versions: 23

Compression:

Stored size: 1.68 KB

Contents

require 'spec_helper'

describe RestPack::Serializer::Resource do
  before(:each) do
    @album = FactoryGirl.create(:album_with_songs, song_count: 11)
    @song = @album.songs.first
  end

  let(:resource) { MyApp::SongSerializer.resource(params, scope, context) }
  let(:params) { { id: @song.id } }
  let(:scope) { nil }
  let(:context) { { } }

  it "returns a resource by id" do
    resource[:songs].count.should == 1
    resource[:songs][0][:id].should == @song.id.to_s
  end

  context "with context" do
    let(:context) { { reverse_title?: true } }

    it "returns reversed titles" do
      resource[:songs][0][:title].should == @song.title.reverse
    end
  end

  describe "side-loading" do
    let(:params) { { id: @song.id, include: 'albums' } }

    it "includes side-loaded models" do
      resource[:linked][:albums].count.should == 1
      resource[:linked][:albums].first[:id].should == @song.album.id.to_s
    end

    it "includes the side-loads in the main meta data" do
      resource[:meta][:songs][:include].should == [:albums]
    end
  end

  describe "missing resource" do
    let(:params) { { id: "-99" } }
    it "returns no resource" do
      resource[:songs].length.should == 0
    end

    #TODO: add specs for jsonapi error format when it has been standardised
    # https://github.com/RestPack/restpack_serializer/issues/27
    # https://github.com/json-api/json-api/issues/7
  end

  describe "song with no artist" do
    let(:song) { FactoryGirl.create(:song, :artist => nil) }
    let(:resource) { MyApp::SongSerializer.resource(id: song.id.to_s) }

    it "should not have an artist link" do
      resource[:songs][0][:links].keys.should_not include(:artist)
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
restpack_serializer-0.5.6 spec/serializable/resource_spec.rb
restpack_serializer-0.5.5 spec/serializable/resource_spec.rb
restpack_serializer-0.5.4 spec/serializable/resource_spec.rb
restpack_serializer-0.5.3 spec/serializable/resource_spec.rb
restpack_serializer-0.5.2 spec/serializable/resource_spec.rb
restpack_serializer-0.5.1 spec/serializable/resource_spec.rb
restpack_serializer-0.5.0 spec/serializable/resource_spec.rb
restpack_serializer-0.4.28 spec/serializable/resource_spec.rb
restpack_serializer-0.4.27 spec/serializable/resource_spec.rb
restpack_serializer-0.4.26 spec/serializable/resource_spec.rb
restpack_serializer-0.4.25 spec/serializable/resource_spec.rb
restpack_serializer-0.4.24 spec/serializable/resource_spec.rb
restpack_serializer-0.4.23 spec/serializable/resource_spec.rb
restpack_serializer-0.4.21 spec/serializable/resource_spec.rb
restpack_serializer-0.4.20 spec/serializable/resource_spec.rb
restpack_serializer-0.4.19 spec/serializable/resource_spec.rb
restpack_serializer-0.4.18 spec/serializable/resource_spec.rb
restpack_serializer-0.4.17 spec/serializable/resource_spec.rb
restpack_serializer-0.4.16 spec/serializable/resource_spec.rb
restpack_serializer-0.4.15 spec/serializable/resource_spec.rb