More stable

pull/11636/head
Javier Torres 8 years ago
parent 510ac1f88c
commit a4ece3e0ec

@ -13,11 +13,11 @@ describe Carto::VisualizationQueryBuilder do
def preload_activerecord_metadata
# Loads the model structures into memory, to avoid counting those as queries
Carto::VisualizationQueryBuilder.new.build.first.user_table.name
@vqb.build.first.user_table.name
end
before(:each) do
@vqb = Carto::VisualizationQueryBuilder.new
@vqb = Carto::VisualizationQueryBuilder.new.with_user_id(@user1.id)
DBQueryMatchers.configure do |config|
config.ignores = []
@ -38,7 +38,7 @@ describe Carto::VisualizationQueryBuilder do
table = create_random_table(@user1)
table_visualization = table.table_visualization
table_visualization.store
@vqb.build.map(&:id).should include table_visualization.id
Carto::VisualizationQueryBuilder.new.build.map(&:id).should include table_visualization.id
end
it 'searches for all visualizations for a user' do
@ -48,7 +48,7 @@ describe Carto::VisualizationQueryBuilder do
table_visualization1.store
table_visualization2 = table2.table_visualization
table_visualization2.store
ids = @vqb.with_user_id(@user1.id).build.map(&:id)
ids = Carto::VisualizationQueryBuilder.new.with_user_id(@user1.id).build.map(&:id)
ids.should include table_visualization1.id
ids.should_not include table_visualization2.id
end
@ -57,14 +57,14 @@ describe Carto::VisualizationQueryBuilder do
table1 = create_random_table(@user1)
expect {
@vqb.with_user_id(@user1.id).build.first.user.username.should_not eq nil
@vqb.build.first.user.username.should_not eq nil
}.to make_database_queries(count: 2..3)
# 1: SELECT * FROM visualizations LIMIT 1
# 2: to select basic user fields
# 3: AR seems to not be very clever detecting vis.user is already fetched and sometimes re-fetches it
expect {
@vqb.with_user_id(@user1.id).with_prefetch_user(true).build.first.user.username.should_not eq nil
@vqb.with_prefetch_user(true).build.first.user.username.should_not eq nil
}.to make_database_queries(count: 1)
end
@ -75,11 +75,11 @@ describe Carto::VisualizationQueryBuilder do
preload_activerecord_metadata
expect {
@vqb.with_user_id(@user1.id).build.where(id: table_visualization.id).first.user_table.name
@vqb.build.where(id: table_visualization.id).first.user_table.name
}.to make_database_queries(count: 2..3)
expect {
@vqb.with_user_id(@user1.id).with_prefetch_table.build.where(id: table_visualization.id).first.user_table.name
@vqb.with_prefetch_table.build.where(id: table_visualization.id).first.user_table.name
}.to make_database_queries(count: 1)
end
@ -104,10 +104,7 @@ describe Carto::VisualizationQueryBuilder do
table3 = create_random_table(@user1)
# Searches only using query builder itself
ids = @vqb.with_type(Carto::Visualization::TYPE_CANONICAL)
.with_order(:updated_at, :desc)
.build
.all.map(&:id)
ids = @vqb.with_type(Carto::Visualization::TYPE_CANONICAL).with_order(:updated_at, :desc).build.all.map(&:id)
ids.should == [ table3.table_visualization.id, table2.table_visualization.id, table1.table_visualization.id ]
# From here on, uses OffdatabaseQueryAdapter
@ -118,37 +115,22 @@ describe Carto::VisualizationQueryBuilder do
table1.table_visualization.add_like_from(@user2.id)
table3.table_visualization.add_like_from(@user1.id)
ids = Carto::VisualizationQueryBuilder.new
.with_type(Carto::Visualization::TYPE_CANONICAL)
.with_order('likes', :desc)
.build
.all.map(&:id)
ids = @vqb.with_type(Carto::Visualization::TYPE_CANONICAL)
.with_order('likes', :desc)
.build
.all.map(&:id)
ids.should == [ table1.table_visualization.id, table3.table_visualization.id, table2.table_visualization.id ]
Carto::VisualizationQueryBuilder.new
.with_type(Carto::Visualization::TYPE_CANONICAL)
.with_order('likes', :desc)
.build
.count.should == 3
@vqb.with_type(Carto::Visualization::TYPE_CANONICAL).with_order('likes', :desc).build.count.should == 3
# Check with limit
ids = Carto::VisualizationQueryBuilder.new
.with_type(Carto::Visualization::TYPE_CANONICAL)
.with_order('likes', :desc)
.build
.limit(2)
.all.map(&:id)
ids = @vqb.with_type(Carto::Visualization::TYPE_CANONICAL).with_order('likes', :desc).build.limit(2).all.map(&:id)
ids.should == [ table1.table_visualization.id, table3.table_visualization.id ]
# Check with limit AND offset
ids = Carto::VisualizationQueryBuilder.new
.with_type(Carto::Visualization::TYPE_CANONICAL)
.with_order('likes', :desc)
.build
.offset(1)
.limit(2)
.all.map(&:id)
ids = @vqb.with_type(Carto::Visualization::TYPE_CANONICAL).with_order('likes', :desc).build
.offset(1).limit(2).all.map(&:id)
ids.should == [ table3.table_visualization.id, table2.table_visualization.id ]
# Mapviews
@ -165,7 +147,7 @@ describe Carto::VisualizationQueryBuilder do
.with(@user1.username, {stat_tag: table3.table_visualization.id})
.returns({ "2015-04-15" => 12, "2015-04-14" => 20 })
ids = Carto::VisualizationQueryBuilder.new
ids = @vqb
.with_type(Carto::Visualization::TYPE_CANONICAL)
.with_order('mapviews', :desc)
.build
@ -185,7 +167,7 @@ describe Carto::VisualizationQueryBuilder do
# Careful to not do anything else on this spec after this size assertions
ActiveRecord::Relation.any_instance.stubs(:all).returns([ mocked_vis3, mocked_vis1, mocked_vis2 ])
ids = Carto::VisualizationQueryBuilder.new.with_type(Carto::Visualization::TYPE_CANONICAL)
ids = @vqb.with_type(Carto::Visualization::TYPE_CANONICAL)
.with_order('size', :desc)
.build.map(&:id)
ids.should == [ table3.table_visualization.id, table1.table_visualization.id, table2.table_visualization.id ]

Loading…
Cancel
Save