Added custom versions option to the mod serializer
parent
985a304308
commit
d273be15fd
|
@ -7,6 +7,9 @@ class ModSerializer < ActiveModel::Serializer
|
||||||
attribute :official_url, key: :homepage
|
attribute :official_url, key: :homepage
|
||||||
|
|
||||||
has_many :versions, key: :releases
|
has_many :versions, key: :releases
|
||||||
|
def versions
|
||||||
|
@options[:versions] || object.versions
|
||||||
|
end
|
||||||
|
|
||||||
def categories
|
def categories
|
||||||
object.categories.map(&:slug)
|
object.categories.map(&:slug)
|
||||||
|
|
|
@ -11,6 +11,10 @@ describe ModSerializer do
|
||||||
official_url: 'http://castleblack.com',
|
official_url: 'http://castleblack.com',
|
||||||
summary: 'This mod adds the ability to farm potatoes on Factorio.',
|
summary: 'This mod adds the ability to farm potatoes on Factorio.',
|
||||||
categories: [create(:category, name: 'Potato'), create(:category, name: 'Apple')]
|
categories: [create(:category, name: 'Potato'), create(:category, name: 'Apple')]
|
||||||
|
|
||||||
|
create :mod_version, mod: @mod
|
||||||
|
create :mod_version, mod: @mod
|
||||||
|
create :mod_version, mod: @mod
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should return the public API structure' do
|
it 'should return the public API structure' do
|
||||||
|
@ -26,6 +30,21 @@ describe ModSerializer do
|
||||||
categories: ['potato', 'apple'],
|
categories: ['potato', 'apple'],
|
||||||
releases: @mod.versions.map{|mv| ModVersionSerializer.new mv}.as_json
|
releases: @mod.versions.map{|mv| ModVersionSerializer.new mv}.as_json
|
||||||
})
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should accept an option to serialize just certain versions' do
|
||||||
|
specific_versions = [@mod.versions[0], @mod.versions[1]]
|
||||||
|
expect(ModSerializer.new(@mod, versions: specific_versions).as_json).to eq({
|
||||||
|
id: @mod.id,
|
||||||
|
title: 'Potato Galaxy',
|
||||||
|
name: 'potato-galaxy-mod',
|
||||||
|
url: 'http://localhost:3000/mods/potato-galaxy',
|
||||||
|
description: 'This mod adds the ability to farm potatoes on Factorio.',
|
||||||
|
homepage: 'http://castleblack.com',
|
||||||
|
contact: 'Send a homing pigeon to Castle Black',
|
||||||
|
authors: ['John Snow Zombie', 'THAT Guy'],
|
||||||
|
categories: ['potato', 'apple'],
|
||||||
|
releases: specific_versions.map{|mv| ModVersionSerializer.new mv}.as_json
|
||||||
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue