specs for serialization/deserialization order

git-svn-id: https://dev.finn.de/svn/cockpit/branches/deployment_merge@2109 7926756e-e54e-46e6-9721-ed318f58905e
pull/6827/head
j.wollert 14 years ago
parent 46d7faaf3b
commit da5ac76dd0
  1. 15
      spec/models/cost_query/chaining_spec.rb

@ -18,6 +18,10 @@ describe CostQuery do
fixtures :versions fixtures :versions
describe :chain do describe :chain do
before do
CostQuery.chain_initializer.clear
end
it "should contain NoFilter" do it "should contain NoFilter" do
@query.chain.should be_a(CostQuery::Filter::NoFilter) @query.chain.should be_a(CostQuery::Filter::NoFilter)
end end
@ -105,7 +109,7 @@ describe CostQuery do
initialize_query_with {|query| query.filter(:project_id, :value => Project.all.first.id)} initialize_query_with {|query| query.filter(:project_id, :value => Project.all.first.id)}
end end
@query.build_new_chain @query.build_new_chain
@query.filters.size.should == 3 @query.filters.size.should == 2
@query.filters.collect {|f| f.class.underscore_name}.should include "project_id" @query.filters.collect {|f| f.class.underscore_name}.should include "project_id"
end end
@ -132,10 +136,17 @@ describe CostQuery do
@query.group_by :cost_type_id @query.group_by :cost_type_id
new_query = CostQuery.deserialize(@query.serialize) new_query = CostQuery.deserialize(@query.serialize)
[:filters, :group_bys].each do |type| [:filters, :group_bys].each do |type|
@query.send(type).each do |chainable| @query.send(type).each_with_index do |chainable, index|
# check whether for presence
new_query.send(type).any? do |c| new_query.send(type).any? do |c|
c.class.name == chainable.class.name && (chainable.respond_to?(:values) ? c.values == chainable.values : true) c.class.name == chainable.class.name && (chainable.respond_to?(:values) ? c.values == chainable.values : true)
end.should be_true end.should be_true
# check for order
new_query.send(type).each_with_index do |c, ix|
if c.class.name == chainable.class.name
ix.should == index
end
end
end end
end end
end end

Loading…
Cancel
Save