jsonapi-deserializable/spec/deserializable_relationships_spec.rb
2016-10-26 05:37:57 +02:00

45 lines
1.0 KiB
Ruby

require 'jsonapi/deserializable'
describe JSONAPI::Deserializable::Relationship, '#to_h' do
it 'deserializes has_one relationships' do
deserializable_klass = Class.new(JSONAPI::Deserializable::Relationship) do
has_one do |rel|
field sponsor_id: (rel['data'] && rel['data']['id'])
end
end
payload = {
'data' => {
'type' => 'users',
'id' => '1'
}
}
actual = deserializable_klass.(payload)
expected = { sponsor_id: '1' }
expect(actual).to eq(expected)
end
it 'deserializes has_many relationships' do
deserializable_klass = Class.new(JSONAPI::Deserializable::Relationship) do
has_many do |rel|
field post_ids: rel['data'].map { |ri| ri['id'] }
end
end
payload = {
'data' => [
{ 'type' => 'postd', 'id' => '1' },
{ 'type' => 'postd', 'id' => '2' },
{ 'type' => 'postd', 'id' => '3' }
]
}
actual = deserializable_klass.(payload)
expected = { post_ids: %w(1 2 3) }
expect(actual).to eq(expected)
end
end