spec/trax/serialization/adapters/json_spec.rb in trax_controller-0.1.3 vs spec/trax/serialization/adapters/json_spec.rb in trax_controller-0.1.4
- old
+ new
@@ -1,25 +1,15 @@
require 'spec_helper'
-class NameCategorySerializer < ::ActiveModel::Serializer
- attributes :name
- has_many :subcategories, :serializer => NameCategorySerializer
-end
-
-class NameProductSerializer < ::ActiveModel::Serializer
- attributes :name
- has_one :category, :serializer => NameCategorySerializer
-end
-
describe Trax::Controller::Serialization::Adapters::Json do
let(:category_flat_heads){ ::Category.new(:name => "flat heads") }
let(:category_screwdrivers){ ::Category.new(:name => "screwdrivers", :subcategories => [category_flat_heads]) }
let(:category_knives){ ::Category.new(:name => "knives") }
let(:category_tools){ ::Category.new(:name => "tools", :subcategories => [category_screwdrivers, category_knives]) }
let(:product_tool){ ::Product.new(:name => "Generics Multi-Purpose Tool", :category => category_tools) }
let(:root_key){ 'root_key' }
- let(:serializer){ ::NameProductSerializer.new(product_tool, :root => root_key) }
+ let(:serializer){ ::ProductWithCategorySerializer.new(product_tool, :root => root_key) }
let!(:expected_root_key){ root_key.to_sym }
let!(:expected_tool_hash){ {
:name => product_tool.name,
:category => {
:name => category_tools.name,
@@ -38,18 +28,18 @@
context "collection" do
let(:category_cookware){ ::Category.new(:name => "cookware") }
let(:product_pot){ ::Product.new(:name => "Pot", :category => category_cookware) }
let(:collection){ [product_tool, product_pot] }
- let!(:expected_root_key){ root_key.pluralize.to_sym }
+ let(:root_key){ 'root_keys' }
let!(:expected_pot_hash){ {
:name => product_pot.name,
:category => {
:name => category_cookware.name,
:subcategories => []
}
}}
- let(:serializer){ ::ActiveModel::Serializer::ArraySerializer.new(collection, :root => root_key, :serializer => ::NameProductSerializer) }
+ let(:serializer){ ::ActiveModel::Serializer::CollectionSerializer.new(collection, :root => root_key, :serializer => ::ProductWithCategorySerializer) }
it { expect(serialized).to eq(expected_root_key => [expected_tool_hash, expected_pot_hash]) }
end
end