JSONApi progress

This commit is contained in:
2015-09-03 20:42:48 +02:00
parent f47a8a9ed0
commit e4dde28dd0
27 changed files with 215 additions and 64 deletions
+26
View File
@@ -0,0 +1,26 @@
require 'spec_helper'
describe Users::ListSerializer, type: :serializer do
it "does not perform extra queries" do
l = create :list
o1 = create :order, list: l
create :product_order, order: o1
create :product_order, order: o1
o2 = create :order, list: l
create :product_order, order: o2
create :product_order, order: o2
l.add_user create :user
l.add_user create :user
list = List.find(l.id)
[list].include_relations(:users)
result = nil
#result = expect{ JSONAPI::Serializer.serialize(list, serializer: described_class) }.not_to perform_any_queries
expect{ result = JSONAPI::Serializer.serialize(list, serializer: described_class, include: %w[supplier users]) }.not_to exceed_query_limit 1 # supplier
binding.pry
#expect{ object_as_json orders }.not_to exceed_query_limit 0
#expect{ object_as_json list }.not_to exceed_query_limit 0
end
end
+4 -13
View File
@@ -1,7 +1,6 @@
require 'spec_helper'
describe Users::OrderSerializer do
let(:adapter){ ActiveModel::Serializer.config.adapter }
describe Users::OrderSerializer, type: :serializer do
it "does not perform extra queries" do
l = create :list
o1 = create :order, list: l
@@ -13,18 +12,10 @@ describe Users::OrderSerializer do
list = List.find(l.id)
orders = list.orders.include_relation(:product_orders)
#expect{ object_as_json orders }.not_to exceed_query_limit 0
expect{ object_as_json orders }.not_to perform_any_queries
result = object_as_json(orders)
result = nil
expect{ result = JSONAPI::Serializer.serialize(orders, serializer: described_class, include: 'product_orders', is_collection: true)}.not_to perform_any_queries
binding.pry
#result[:included].size.should eq 4
result[:included].size.should eq 4
end
def object_as_json(obj)
serializer = if obj.is_a?(Array)
ActiveModel::Serializer::ArraySerializer.new(obj, serializer: described_class, add_included: true)
else
serializer = described_class.new(obj)
end
adapter.new(serializer, include: %w[product_orders]).as_json
end
end
@@ -0,0 +1,11 @@
require 'spec_helper'
describe Users::TableSerializer, type: :serializer do
it "does not perform extra queries" do
table = create :table
result = object_as_json(table)
binding.pry
result[:included].size.should eq 4
end
end