mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-23 22:36:50 +00:00
199 lines
5.1 KiB
Ruby
199 lines
5.1 KiB
Ruby
require 'test_helper'
|
|
|
|
module ActiveModel
|
|
class Serializer
|
|
class MetaTest < ActiveSupport::TestCase
|
|
def setup
|
|
@blog = Blog.new(id: 1,
|
|
name: 'AMS Hints',
|
|
writer: Author.new(id: 2, name: 'Steve'),
|
|
articles: [Post.new(id: 3, title: 'AMS')])
|
|
end
|
|
|
|
def test_meta_is_present_with_root
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
@blog,
|
|
adapter: :json,
|
|
serializer: AlternateBlogSerializer,
|
|
meta: { total: 10 }).as_json
|
|
expected = {
|
|
blog: {
|
|
id: 1,
|
|
title: 'AMS Hints'
|
|
},
|
|
'meta' => {
|
|
total: 10
|
|
}
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
def test_meta_is_not_included_when_blank
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
@blog,
|
|
adapter: :json,
|
|
serializer: AlternateBlogSerializer,
|
|
meta: {}
|
|
).as_json
|
|
expected = {
|
|
blog: {
|
|
id: 1,
|
|
title: 'AMS Hints'
|
|
}
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
def test_meta_is_not_included_when_empty_string
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
@blog,
|
|
adapter: :json,
|
|
serializer: AlternateBlogSerializer,
|
|
meta: ''
|
|
).as_json
|
|
expected = {
|
|
blog: {
|
|
id: 1,
|
|
title: 'AMS Hints'
|
|
}
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
def test_meta_is_not_included_when_root_is_missing
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
@blog,
|
|
adapter: :attributes,
|
|
serializer: AlternateBlogSerializer,
|
|
meta: { total: 10 }).as_json
|
|
expected = {
|
|
id: 1,
|
|
title: 'AMS Hints'
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
def test_meta_key_is_used
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
@blog,
|
|
adapter: :json,
|
|
serializer: AlternateBlogSerializer,
|
|
meta: { total: 10 },
|
|
meta_key: 'haha_meta').as_json
|
|
expected = {
|
|
blog: {
|
|
id: 1,
|
|
title: 'AMS Hints'
|
|
},
|
|
'haha_meta' => {
|
|
total: 10
|
|
}
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
def test_meta_key_is_used_with_json_api
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
@blog,
|
|
adapter: :json_api,
|
|
serializer: AlternateBlogSerializer,
|
|
meta: { total: 10 },
|
|
meta_key: 'haha_meta').as_json
|
|
expected = {
|
|
data: {
|
|
id: '1',
|
|
type: 'blogs',
|
|
attributes: { title: 'AMS Hints' }
|
|
},
|
|
'haha_meta' => { total: 10 }
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
def test_meta_key_is_not_present_when_blank_object_with_json_api
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
@blog,
|
|
adapter: :json_api,
|
|
serializer: AlternateBlogSerializer,
|
|
meta: {},
|
|
meta_key: 'haha_meta'
|
|
).as_json
|
|
expected = {
|
|
data: {
|
|
id: '1',
|
|
type: 'blogs',
|
|
attributes: { title: 'AMS Hints' }
|
|
}
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
def test_meta_key_is_not_present_when_empty_string_with_json_api
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
@blog,
|
|
adapter: :json_api,
|
|
serializer: AlternateBlogSerializer,
|
|
meta: '',
|
|
meta_key: 'haha_meta'
|
|
).as_json
|
|
expected = {
|
|
data: {
|
|
id: '1',
|
|
type: 'blogs',
|
|
attributes: { title: 'AMS Hints' }
|
|
}
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
def test_meta_is_not_present_on_arrays_without_root
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
[@blog],
|
|
adapter: :attributes,
|
|
meta: { total: 10 }).as_json
|
|
expected = [{
|
|
id: 1,
|
|
name: 'AMS Hints',
|
|
writer: {
|
|
id: 2,
|
|
name: 'Steve'
|
|
},
|
|
articles: [{
|
|
id: 3,
|
|
title: 'AMS',
|
|
body: nil
|
|
}]
|
|
}]
|
|
assert_equal(expected, actual)
|
|
end
|
|
|
|
def test_meta_is_present_on_arrays_with_root
|
|
actual = ActiveModelSerializers::SerializableResource.new(
|
|
[@blog],
|
|
adapter: :json,
|
|
meta: { total: 10 },
|
|
meta_key: 'haha_meta').as_json
|
|
expected = {
|
|
blogs: [{
|
|
id: 1,
|
|
name: 'AMS Hints',
|
|
writer: {
|
|
id: 2,
|
|
name: 'Steve'
|
|
},
|
|
articles: [{
|
|
id: 3,
|
|
title: 'AMS',
|
|
body: nil
|
|
}]
|
|
}],
|
|
'haha_meta' => {
|
|
total: 10
|
|
}
|
|
}
|
|
assert_equal(expected, actual)
|
|
end
|
|
end
|
|
end
|
|
end
|