require 'spec_helper' describe JSONAPI::Deserializable::Resource, '.id' do it 'creates corresponding field if id is present' do payload = { 'data' => { 'type' => 'foo', 'id' => 'bar' } } klass = Class.new(JSONAPI::Deserializable::Resource) do id { |i| field id: i } end actual = klass.call(payload) expected = { id: 'bar' } expect(actual).to eq(expected) end it 'does not create corresponding field if id is absent' do payload = { 'data' => { 'type' => 'foo' } } klass = Class.new(JSONAPI::Deserializable::Resource) do id { |i| field id: i } end actual = klass.call(payload) expected = {} expect(actual).to eq(expected) end it 'defaults to creating an id field' do payload = { 'data' => { 'type' => 'foo', 'id' => 'bar' } } klass = Class.new(JSONAPI::Deserializable::Resource) do id end actual = klass.call(payload) expected = { id: 'bar' } expect(actual).to eq(expected) end end