bullet 2.0.0.beta.2 → 2.0.0.beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.rspec +1 -0
- data/Hacking.textile +100 -0
- data/README.textile +36 -5
- data/README_for_rails2.textile +17 -0
- data/Rakefile +33 -16
- data/VERSION +1 -1
- data/autotest/discover.rb +1 -0
- data/bullet.gemspec +32 -9
- data/lib/bullet.rb +69 -38
- data/lib/bullet/action_controller2.rb +4 -4
- data/lib/bullet/active_record2.rb +16 -16
- data/lib/bullet/active_record3.rb +16 -25
- data/lib/bullet/detector.rb +9 -0
- data/lib/bullet/detector/association.rb +135 -0
- data/lib/bullet/detector/base.rb +19 -0
- data/lib/bullet/detector/counter.rb +43 -0
- data/lib/bullet/detector/n_plus_one_query.rb +39 -0
- data/lib/bullet/detector/unused_eager_association.rb +39 -0
- data/lib/bullet/notification.rb +4 -79
- data/lib/bullet/notification/base.rb +59 -0
- data/lib/bullet/notification/counter_cache.rb +13 -0
- data/lib/bullet/notification/n_plus_one_query.rb +32 -0
- data/lib/bullet/notification/unused_eager_loading.rb +14 -0
- data/lib/bullet/notification_collector.rb +25 -0
- data/lib/bullet/presenter.rb +13 -0
- data/lib/bullet/presenter/base.rb +9 -0
- data/lib/bullet/presenter/bullet_logger.rb +28 -0
- data/lib/bullet/presenter/growl.rb +40 -0
- data/lib/bullet/presenter/javascript_alert.rb +15 -0
- data/lib/bullet/presenter/javascript_console.rb +28 -0
- data/lib/bullet/presenter/javascript_helpers.rb +13 -0
- data/lib/bullet/presenter/rails_logger.rb +15 -0
- data/lib/bullet/presenter/xmpp.rb +56 -0
- data/lib/bullet/rack.rb +42 -0
- data/lib/bullet/registry.rb +7 -0
- data/lib/bullet/registry/association.rb +16 -0
- data/lib/bullet/registry/base.rb +39 -0
- data/lib/bullet/registry/object.rb +15 -0
- data/spec/bullet/association_for_chris_spec.rb +6 -6
- data/spec/bullet/association_for_peschkaj_spec.rb +6 -6
- data/spec/bullet/association_spec.rb +118 -262
- data/spec/bullet/counter_spec.rb +10 -10
- data/spec/spec_helper.rb +51 -17
- metadata +32 -9
- data/lib/bullet/association.rb +0 -294
- data/lib/bullet/counter.rb +0 -101
- data/lib/bullet/logger.rb +0 -9
- data/lib/bulletware.rb +0 -42
- data/spec/spec.opts +0 -3
@@ -0,0 +1,56 @@
|
|
1
|
+
module Bullet
|
2
|
+
module Presenter
|
3
|
+
class Xmpp < Base
|
4
|
+
@receiver = nil
|
5
|
+
@xmpp = nil
|
6
|
+
@password = nil
|
7
|
+
|
8
|
+
def self.active?
|
9
|
+
@xmpp
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.out_of_channel( notice )
|
13
|
+
return unless active?
|
14
|
+
notify( notice.standard_notice )
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.setup_connection( xmpp_information )
|
18
|
+
require 'xmpp4r'
|
19
|
+
|
20
|
+
@receiver = xmpp_information[:receiver]
|
21
|
+
@password = xmpp_information[:password]
|
22
|
+
@account = xmpp_information[:account]
|
23
|
+
@show_online_status = xmpp_information[:show_online_status]
|
24
|
+
|
25
|
+
connect
|
26
|
+
rescue MissingSourceFile
|
27
|
+
@xmpp = nil
|
28
|
+
raise NotificationError.new( 'You must install the xmpp4r gem to use XMPP notifications: `sudo gem install xmpp4r`' )
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
def self.connect
|
33
|
+
jid = Jabber::JID.new( @account )
|
34
|
+
@xmpp = Jabber::Client.new( jid )
|
35
|
+
@xmpp.connect
|
36
|
+
@xmpp.auth( @password )
|
37
|
+
@xmpp.send( presence_status ) if @show_online_status
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.notify( message )
|
41
|
+
message = Jabber::Message.new( @receiver, message ).
|
42
|
+
set_type( :normal ).
|
43
|
+
set_id( '1' ).
|
44
|
+
set_subject( 'Bullet Notification' )
|
45
|
+
@xmpp.send( message )
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.presence_status
|
49
|
+
project_name = Rails.root.basename.to_s.camelcase
|
50
|
+
time = Time.now
|
51
|
+
|
52
|
+
Jabber::Presence.new.set_status( "Bullet in project '#{project_name}' started on #{time}" )
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/bullet/rack.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
module Bullet
|
2
|
+
class Rack
|
3
|
+
def initialize(app)
|
4
|
+
@app = app
|
5
|
+
end
|
6
|
+
|
7
|
+
def call(env)
|
8
|
+
return @app.call(env) unless Bullet.enable?
|
9
|
+
|
10
|
+
Bullet.start_request
|
11
|
+
status, headers, response = @app.call(env)
|
12
|
+
return [status, headers, response] if empty?(response)
|
13
|
+
|
14
|
+
if Bullet.notification?
|
15
|
+
if status == 200 and !response.body.frozen? and check_html?(headers, response)
|
16
|
+
response_body = response.body << Bullet.gather_inline_notifications
|
17
|
+
headers['Content-Length'] = response_body.length.to_s
|
18
|
+
end
|
19
|
+
Bullet.perform_out_of_channel_notifications
|
20
|
+
end
|
21
|
+
response_body ||= response.body
|
22
|
+
Bullet.end_request
|
23
|
+
no_browser_cache(headers) if Bullet.disable_browser_cache
|
24
|
+
[status, headers, [response_body]]
|
25
|
+
end
|
26
|
+
|
27
|
+
# fix issue if response's body is a Proc
|
28
|
+
def empty?(response)
|
29
|
+
(response.is_a?(Array) && response.empty?) || !response.body.is_a?(String) || response.body.empty?
|
30
|
+
end
|
31
|
+
|
32
|
+
def check_html?(headers, response)
|
33
|
+
headers['Content-Type'] and headers['Content-Type'].include? 'text/html' and response.body =~ %r{<html.*</html>}m
|
34
|
+
end
|
35
|
+
|
36
|
+
def no_browser_cache(headers)
|
37
|
+
headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
|
38
|
+
headers["Pragma"] = "no-cache"
|
39
|
+
headers["Expires"] = "Wed, 09 Sep 2009 09:09:09 GMT"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Bullet
|
2
|
+
module Registry
|
3
|
+
class Association < Base
|
4
|
+
def merge( base, associations )
|
5
|
+
@registry.merge!( { base => associations } )
|
6
|
+
unique( @registry[base] )
|
7
|
+
end
|
8
|
+
|
9
|
+
def similarly_associated( base, associations )
|
10
|
+
@registry.select do |key, value|
|
11
|
+
key.include?( base ) and value == associations
|
12
|
+
end.collect( &:first ).flatten!
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Bullet
|
2
|
+
module Registry
|
3
|
+
class Base
|
4
|
+
attr_reader :registry
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@registry = {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def [](key)
|
11
|
+
@registry[key]
|
12
|
+
end
|
13
|
+
|
14
|
+
def each( &block )
|
15
|
+
@registry.each( &block )
|
16
|
+
end
|
17
|
+
|
18
|
+
def delete( base )
|
19
|
+
@registry.delete( base )
|
20
|
+
end
|
21
|
+
|
22
|
+
def select( *args, &block )
|
23
|
+
@registry.select( *args, &block )
|
24
|
+
end
|
25
|
+
|
26
|
+
def add( key, value )
|
27
|
+
@registry[key] ||= []
|
28
|
+
@registry[key] << value
|
29
|
+
unique( @registry[key] )
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
def unique( array )
|
34
|
+
array.flatten!
|
35
|
+
array.uniq!
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Bullet
|
2
|
+
module Registry
|
3
|
+
class Object < Base
|
4
|
+
def add( object_or_objects )
|
5
|
+
klazz = object_or_objects.is_a?( Array ) ? object_or_objects.first.class :
|
6
|
+
object_or_objects.class
|
7
|
+
super( klazz, object_or_objects )
|
8
|
+
end
|
9
|
+
|
10
|
+
def contains?( object )
|
11
|
+
@registry[object.class] and @registry[object.class].include?( object )
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
2
|
|
3
3
|
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
|
4
4
|
# This test is just used for http://github.com/flyerhzm/bullet/issues/#issue/14
|
5
|
-
describe Bullet::Association do
|
5
|
+
describe Bullet::Detector::Association do
|
6
6
|
|
7
7
|
describe "for chris" do
|
8
8
|
def setup_db
|
@@ -65,32 +65,32 @@ describe Bullet::Association do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
before(:each) do
|
68
|
-
Bullet
|
68
|
+
Bullet.start_request
|
69
69
|
end
|
70
70
|
|
71
71
|
after(:each) do
|
72
|
-
Bullet
|
72
|
+
Bullet.end_request
|
73
73
|
end
|
74
74
|
|
75
75
|
it "should detect unpreload association from deal to hotel" do
|
76
76
|
Deal.all.each do |deal|
|
77
77
|
deal.hotel.location.name
|
78
78
|
end
|
79
|
-
Bullet::Association.should be_detecting_unpreloaded_association_for(Deal, :hotel)
|
79
|
+
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Deal, :hotel)
|
80
80
|
end
|
81
81
|
|
82
82
|
it "should detect unpreload association from hotel to location" do
|
83
83
|
Deal.includes(:hotel).each do |deal|
|
84
84
|
deal.hotel.location.name
|
85
85
|
end
|
86
|
-
Bullet::Association.should be_detecting_unpreloaded_association_for(Hotel, :location)
|
86
|
+
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Hotel, :location)
|
87
87
|
end
|
88
88
|
|
89
89
|
it "should not detect unpreload association" do
|
90
90
|
Deal.includes({:hotel => :location}).each do |deal|
|
91
91
|
deal.hotel.location.name
|
92
92
|
end
|
93
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
93
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
2
|
|
3
3
|
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
|
4
4
|
# This test is just used for http://github.com/flyerhzm/bullet/issues#issue/20
|
5
|
-
describe Bullet::Association do
|
5
|
+
describe Bullet::Detector::Association do
|
6
6
|
|
7
7
|
describe "for peschkaj" do
|
8
8
|
def setup_db
|
@@ -65,11 +65,11 @@ describe Bullet::Association do
|
|
65
65
|
end
|
66
66
|
|
67
67
|
before(:each) do
|
68
|
-
Bullet
|
68
|
+
Bullet.start_request
|
69
69
|
end
|
70
70
|
|
71
71
|
after(:each) do
|
72
|
-
Bullet
|
72
|
+
Bullet.end_request
|
73
73
|
end
|
74
74
|
|
75
75
|
it "should not detect unused preload associations" do
|
@@ -78,9 +78,9 @@ describe Bullet::Association do
|
|
78
78
|
submission.name
|
79
79
|
submission.user.name
|
80
80
|
end
|
81
|
-
Bullet::
|
82
|
-
Bullet::Association.should_not be_unused_preload_associations_for(Category, :submissions)
|
83
|
-
Bullet::Association.should_not be_unused_preload_associations_for(Submission, :user)
|
81
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
82
|
+
Bullet::Detector::Association.should_not be_unused_preload_associations_for(Category, :submissions)
|
83
|
+
Bullet::Detector::Association.should_not be_unused_preload_associations_for(Submission, :user)
|
84
84
|
end
|
85
85
|
end
|
86
86
|
end
|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
2
|
|
3
3
|
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
|
4
4
|
|
5
|
-
describe Bullet::Association, 'has_many' do
|
5
|
+
describe Bullet::Detector::Association, 'has_many' do
|
6
6
|
|
7
7
|
def setup_db
|
8
8
|
ActiveRecord::Schema.define(:version => 1) do
|
@@ -121,11 +121,11 @@ describe Bullet::Association, 'has_many' do
|
|
121
121
|
end
|
122
122
|
|
123
123
|
before(:each) do
|
124
|
-
Bullet
|
124
|
+
Bullet.start_request
|
125
125
|
end
|
126
126
|
|
127
127
|
after(:each) do
|
128
|
-
Bullet
|
128
|
+
Bullet.end_request
|
129
129
|
end
|
130
130
|
|
131
131
|
# FIXME: setup and teardown are not inherited by context
|
@@ -159,8 +159,8 @@ describe Bullet::Association, 'has_many' do
|
|
159
159
|
comments_with_author = Comment.includes(:author)
|
160
160
|
comment_collection = comments_with_author.limit(2)
|
161
161
|
comment_collection.collect { |com| com.author.name }
|
162
|
-
Bullet::
|
163
|
-
Bullet::Association.should_not be_unused_preload_associations_for(Comment, :author)
|
162
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
163
|
+
Bullet::Detector::Association.should_not be_unused_preload_associations_for(Comment, :author)
|
164
164
|
end
|
165
165
|
# end
|
166
166
|
|
@@ -174,7 +174,7 @@ describe Bullet::Association, 'has_many' do
|
|
174
174
|
Comment.includes([:author, :post]).where(["base_users.id = ?", BaseUser.first]).each do |com|
|
175
175
|
com.post.writer.name
|
176
176
|
end
|
177
|
-
Bullet::Association.should be_detecting_unpreloaded_association_for(Post, :writer)
|
177
|
+
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Post, :writer)
|
178
178
|
end
|
179
179
|
|
180
180
|
# this happens because the comment doesn't break down the hash into keys
|
@@ -183,17 +183,17 @@ describe Bullet::Association, 'has_many' do
|
|
183
183
|
comments = Comment.includes([:author, {:post => :writer}]).where(["base_users.id = ?", BaseUser.first]).each do |com|
|
184
184
|
com.post.writer.name
|
185
185
|
end
|
186
|
-
Bullet::Association.should_not be_detecting_unpreloaded_association_for(Comment, :post)
|
187
|
-
Bullet::Association.should be_completely_preloading_associations
|
186
|
+
Bullet::Detector::Association.should_not be_detecting_unpreloaded_association_for(Comment, :post)
|
187
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
188
188
|
end
|
189
189
|
|
190
190
|
it "should detect preload of post => writer" do
|
191
191
|
comments = Comment.includes([:author, {:post => :writer}]).where(["base_users.id = ?", BaseUser.first]).each do |com|
|
192
192
|
com.post.writer.name
|
193
193
|
end
|
194
|
-
Bullet::Association.should be_creating_object_association_for(comments.first, :author)
|
195
|
-
Bullet::Association.should_not be_detecting_unpreloaded_association_for(Post, :writer)
|
196
|
-
Bullet::Association.should be_completely_preloading_associations
|
194
|
+
Bullet::Detector::Association.should be_creating_object_association_for(comments.first, :author)
|
195
|
+
Bullet::Detector::Association.should_not be_detecting_unpreloaded_association_for(Post, :writer)
|
196
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
197
197
|
end
|
198
198
|
|
199
199
|
# To flyerhzm: This does not detect that newspaper is unpreloaded. The association is
|
@@ -202,7 +202,7 @@ describe Bullet::Association, 'has_many' do
|
|
202
202
|
comments = Comment.all(:include => {:post => :writer}, :conditions => "posts.name like '%first%'").each do |com|
|
203
203
|
com.post.writer.newspaper.name
|
204
204
|
end
|
205
|
-
Bullet::Association.should be_detecting_unpreloaded_association_for(Writer, :newspaper)
|
205
|
+
Bullet::Detector::Association.should be_detecting_unpreloaded_association_for(Writer, :newspaper)
|
206
206
|
end
|
207
207
|
|
208
208
|
# when we attempt to access category, there is an infinite overflow because load_target is hijacked leading to
|
@@ -218,47 +218,51 @@ describe Bullet::Association, 'has_many' do
|
|
218
218
|
|
219
219
|
# FIXME: setup and teardown are not inherited by context
|
220
220
|
# context "post => comments" do
|
221
|
+
#
|
222
|
+
### FIXME: Please double check semantic equivalence with original
|
221
223
|
it "should detect preload with post => comments" do
|
222
224
|
Post.includes(:comments).each do |post|
|
223
225
|
post.comments.collect(&:name)
|
224
226
|
end
|
225
|
-
Bullet::Association.should_not be_has_unpreload_associations
|
227
|
+
# Bullet::Detector::Association.should_not be_has_unpreload_associations
|
228
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
226
229
|
end
|
227
230
|
|
228
231
|
it "should detect no preload post => comments" do
|
229
232
|
Post.all.each do |post|
|
230
233
|
post.comments.collect(&:name)
|
231
234
|
end
|
232
|
-
Bullet::Association.should be_has_unpreload_associations
|
235
|
+
# Bullet::Detector::Association.should be_has_unpreload_associations
|
236
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
233
237
|
end
|
234
238
|
|
235
239
|
it "should detect unused preload post => comments for post" do
|
236
240
|
Post.includes(:comments).collect(&:name)
|
237
|
-
Bullet::
|
238
|
-
Bullet::Association.should be_has_unused_preload_associations
|
241
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
242
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
239
243
|
end
|
240
244
|
|
241
245
|
it "should detect no unused preload post => comments for post" do
|
242
246
|
Post.all.collect(&:name)
|
243
|
-
Bullet::
|
244
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
247
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
248
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
245
249
|
end
|
246
250
|
|
247
251
|
it "should detect no unused preload post => comments for comment" do
|
248
252
|
Post.all.each do |post|
|
249
253
|
post.comments.collect(&:name)
|
250
254
|
end
|
251
|
-
Bullet::
|
252
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
255
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
256
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
253
257
|
|
254
|
-
Bullet
|
255
|
-
Bullet
|
258
|
+
Bullet.end_request
|
259
|
+
Bullet.start_request
|
256
260
|
|
257
261
|
Post.all.each do |post|
|
258
262
|
post.comments.collect(&:name)
|
259
263
|
end
|
260
|
-
Bullet::
|
261
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
264
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
265
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
262
266
|
end
|
263
267
|
# end
|
264
268
|
|
@@ -270,7 +274,8 @@ describe Bullet::Association, 'has_many' do
|
|
270
274
|
post.comments.collect(&:name)
|
271
275
|
end
|
272
276
|
end
|
273
|
-
Bullet::Association.should_not be_has_unpreload_associations
|
277
|
+
# Bullet::Detector::Association.should_not be_has_unpreload_associations
|
278
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
274
279
|
end
|
275
280
|
|
276
281
|
it "should detect preload category => posts, but no post => comments" do
|
@@ -279,7 +284,8 @@ describe Bullet::Association, 'has_many' do
|
|
279
284
|
post.comments.collect(&:name)
|
280
285
|
end
|
281
286
|
end
|
282
|
-
Bullet::Association.should be_has_unpreload_associations
|
287
|
+
# Bullet::Detector::Association.should be_has_unpreload_associations
|
288
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
283
289
|
end
|
284
290
|
|
285
291
|
it "should detect no preload category => posts => comments" do
|
@@ -288,21 +294,22 @@ describe Bullet::Association, 'has_many' do
|
|
288
294
|
post.comments.collect(&:name)
|
289
295
|
end
|
290
296
|
end
|
291
|
-
Bullet::Association.should be_has_unpreload_associations
|
297
|
+
# Bullet::Detector::Association.should be_has_unpreload_associations
|
298
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
292
299
|
end
|
293
300
|
|
294
301
|
it "should detect unused preload with category => posts => comments" do
|
295
302
|
Category.includes({:posts => :comments}).collect(&:name)
|
296
|
-
Bullet::
|
297
|
-
Bullet::Association.should be_has_unused_preload_associations
|
303
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
304
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
298
305
|
end
|
299
306
|
|
300
307
|
it "should detect unused preload with post => commnets, no category => posts" do
|
301
308
|
Category.includes({:posts => :comments}).each do |category|
|
302
309
|
category.posts.collect(&:name)
|
303
310
|
end
|
304
|
-
Bullet::
|
305
|
-
Bullet::Association.should be_has_unused_preload_associations
|
311
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
312
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
306
313
|
end
|
307
314
|
|
308
315
|
it "should no detect preload with category => posts => comments" do
|
@@ -311,8 +318,8 @@ describe Bullet::Association, 'has_many' do
|
|
311
318
|
post.comments.collect(&:name)
|
312
319
|
end
|
313
320
|
end
|
314
|
-
Bullet::
|
315
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
321
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
322
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
316
323
|
end
|
317
324
|
# end
|
318
325
|
|
@@ -323,7 +330,7 @@ describe Bullet::Association, 'has_many' do
|
|
323
330
|
category.posts.collect(&:name)
|
324
331
|
category.entries.collect(&:name)
|
325
332
|
end
|
326
|
-
Bullet::Association.
|
333
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
327
334
|
end
|
328
335
|
|
329
336
|
it "should detect preload with category => posts, but no category => entries" do
|
@@ -331,7 +338,7 @@ describe Bullet::Association, 'has_many' do
|
|
331
338
|
category.posts.collect(&:name)
|
332
339
|
category.entries.collect(&:name)
|
333
340
|
end
|
334
|
-
Bullet::Association.
|
341
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
335
342
|
end
|
336
343
|
|
337
344
|
it "should detect no preload with category => [posts, entries]" do
|
@@ -339,21 +346,21 @@ describe Bullet::Association, 'has_many' do
|
|
339
346
|
category.posts.collect(&:name)
|
340
347
|
category.entries.collect(&:name)
|
341
348
|
end
|
342
|
-
Bullet::Association.
|
349
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
343
350
|
end
|
344
351
|
|
345
352
|
it "should detect unused with category => [posts, entries]" do
|
346
353
|
Category.includes([:posts, :entries]).collect(&:name)
|
347
|
-
Bullet::
|
348
|
-
Bullet::Association.should be_has_unused_preload_associations
|
354
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
355
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
349
356
|
end
|
350
357
|
|
351
358
|
it "should detect unused preload with category => entries, but no category => posts" do
|
352
359
|
Category.includes([:posts, :entries]).each do |category|
|
353
360
|
category.posts.collect(&:name)
|
354
361
|
end
|
355
|
-
Bullet::
|
356
|
-
Bullet::Association.should be_has_unused_preload_associations
|
362
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
363
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
357
364
|
end
|
358
365
|
|
359
366
|
it "should detect no unused preload" do
|
@@ -361,8 +368,8 @@ describe Bullet::Association, 'has_many' do
|
|
361
368
|
category.posts.collect(&:name)
|
362
369
|
category.entries.collect(&:name)
|
363
370
|
end
|
364
|
-
Bullet::
|
365
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
371
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
372
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
366
373
|
end
|
367
374
|
# end
|
368
375
|
|
@@ -372,12 +379,12 @@ describe Bullet::Association, 'has_many' do
|
|
372
379
|
Post.includes(:comments).each do |post|
|
373
380
|
post.comments.first.name
|
374
381
|
end
|
375
|
-
Bullet::Association.
|
382
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
376
383
|
end
|
377
384
|
|
378
385
|
it "should no preload only one post => commnets" do
|
379
386
|
Post.first.comments.collect(&:name)
|
380
|
-
Bullet::Association.
|
387
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
381
388
|
end
|
382
389
|
# end
|
383
390
|
|
@@ -387,14 +394,14 @@ describe Bullet::Association, 'has_many' do
|
|
387
394
|
Post.in_category_name('first').all.each do |post|
|
388
395
|
post.category.name
|
389
396
|
end
|
390
|
-
Bullet::Association.
|
397
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
391
398
|
end
|
392
399
|
|
393
400
|
it "should not be unused preload post => category" do
|
394
401
|
Post.in_category_name('first').all.collect(&:name)
|
395
|
-
Bullet::Association.
|
396
|
-
Bullet::
|
397
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
402
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
403
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
404
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
398
405
|
end
|
399
406
|
# end
|
400
407
|
|
@@ -404,14 +411,14 @@ describe Bullet::Association, 'has_many' do
|
|
404
411
|
Post.preload_posts.each do |post|
|
405
412
|
post.comments.collect(&:name)
|
406
413
|
end
|
407
|
-
Bullet::Association.
|
414
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
408
415
|
end
|
409
416
|
|
410
417
|
it "should unused preload with scope" do
|
411
418
|
Post.preload_posts.collect(&:name)
|
412
|
-
Bullet::Association.
|
413
|
-
Bullet::
|
414
|
-
Bullet::Association.should be_has_unused_preload_associations
|
419
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
420
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
421
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
415
422
|
end
|
416
423
|
# end
|
417
424
|
|
@@ -428,8 +435,8 @@ describe Bullet::Association, 'has_many' do
|
|
428
435
|
end
|
429
436
|
end
|
430
437
|
end
|
431
|
-
Bullet::
|
432
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
438
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
439
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
433
440
|
end
|
434
441
|
# end
|
435
442
|
|
@@ -439,52 +446,52 @@ describe Bullet::Association, 'has_many' do
|
|
439
446
|
Comment.all.each do |comment|
|
440
447
|
comment.post.name
|
441
448
|
end
|
442
|
-
Bullet::Association.
|
449
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
443
450
|
end
|
444
451
|
|
445
452
|
it "should no preload comment => post" do
|
446
453
|
Comment.first.post.name
|
447
|
-
Bullet::Association.
|
454
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
448
455
|
end
|
449
456
|
|
450
457
|
it "should no preload comments => post" do
|
451
458
|
Comment.includes(:post).each do |comment|
|
452
459
|
comment.post.name
|
453
460
|
end
|
454
|
-
Bullet::Association.
|
461
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
455
462
|
end
|
456
463
|
|
457
464
|
it "should detect no unused preload comments => post" do
|
458
465
|
Comment.all.collect(&:name)
|
459
|
-
Bullet::
|
460
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
466
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
467
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
461
468
|
end
|
462
469
|
|
463
470
|
it "should detect unused preload comments => post" do
|
464
471
|
Comment.includes(:post).collect(&:name)
|
465
|
-
Bullet::
|
466
|
-
Bullet::Association.should be_has_unused_preload_associations
|
472
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
473
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
467
474
|
end
|
468
475
|
|
469
476
|
it "should dectect no unused preload comments => post" do
|
470
477
|
Comment.all.each do |comment|
|
471
478
|
comment.post.name
|
472
479
|
end
|
473
|
-
Bullet::
|
474
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
480
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
481
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
475
482
|
end
|
476
483
|
|
477
484
|
it "should dectect no unused preload comments => post" do
|
478
485
|
Comment.includes(:post).each do |comment|
|
479
486
|
comment.post.name
|
480
487
|
end
|
481
|
-
Bullet::
|
482
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
488
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
489
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
483
490
|
end
|
484
491
|
# end
|
485
492
|
end
|
486
493
|
|
487
|
-
describe Bullet::Association, 'has_and_belongs_to_many' do
|
494
|
+
describe Bullet::Detector::Association, 'has_and_belongs_to_many' do
|
488
495
|
|
489
496
|
def setup_db
|
490
497
|
ActiveRecord::Schema.define(:version => 1) do
|
@@ -534,41 +541,41 @@ describe Bullet::Association, 'has_and_belongs_to_many' do
|
|
534
541
|
end
|
535
542
|
|
536
543
|
before(:each) do
|
537
|
-
Bullet
|
544
|
+
Bullet.start_request
|
538
545
|
end
|
539
546
|
|
540
547
|
after(:each) do
|
541
|
-
Bullet
|
548
|
+
Bullet.end_request
|
542
549
|
end
|
543
550
|
|
544
551
|
it "should detect unpreload associations" do
|
545
552
|
Student.all.each do |student|
|
546
553
|
student.teachers.collect(&:name)
|
547
554
|
end
|
548
|
-
Bullet::Association.
|
555
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
549
556
|
end
|
550
557
|
|
551
558
|
it "should detect no unpreload associations" do
|
552
559
|
Student.includes(:teachers).each do |student|
|
553
560
|
student.teachers.collect(&:name)
|
554
561
|
end
|
555
|
-
Bullet::Association.
|
562
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
556
563
|
end
|
557
564
|
|
558
565
|
it "should detect unused preload associations" do
|
559
566
|
Student.includes(:teachers).collect(&:name)
|
560
|
-
Bullet::
|
561
|
-
Bullet::Association.should be_has_unused_preload_associations
|
567
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
568
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
562
569
|
end
|
563
570
|
|
564
571
|
it "should detect no unused preload associations" do
|
565
572
|
Student.all.collect(&:name)
|
566
|
-
Bullet::
|
567
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
573
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
574
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
568
575
|
end
|
569
576
|
end
|
570
577
|
|
571
|
-
describe Bullet::Association, 'has_many :through' do
|
578
|
+
describe Bullet::Detector::Association, 'has_many :through' do
|
572
579
|
|
573
580
|
def setup_db
|
574
581
|
ActiveRecord::Schema.define(:version => 1) do
|
@@ -625,194 +632,43 @@ describe Bullet::Association, 'has_many :through' do
|
|
625
632
|
end
|
626
633
|
|
627
634
|
before(:each) do
|
628
|
-
Bullet
|
635
|
+
Bullet.start_request
|
629
636
|
end
|
630
637
|
|
631
638
|
after(:each) do
|
632
|
-
Bullet
|
639
|
+
Bullet.end_request
|
633
640
|
end
|
634
641
|
|
635
642
|
it "should detect unpreload associations" do
|
636
643
|
Firm.all.each do |firm|
|
637
644
|
firm.clients.collect(&:name)
|
638
645
|
end
|
639
|
-
Bullet::Association.
|
646
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
640
647
|
end
|
641
648
|
|
642
649
|
it "should detect no unpreload associations" do
|
643
650
|
Firm.includes(:clients).each do |firm|
|
644
651
|
firm.clients.collect(&:name)
|
645
652
|
end
|
646
|
-
Bullet::Association.
|
653
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
647
654
|
end
|
648
655
|
|
649
656
|
it "should detect no unused preload associations" do
|
650
657
|
Firm.all.collect(&:name)
|
651
|
-
Bullet::
|
652
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
658
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
659
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
653
660
|
end
|
654
661
|
|
655
662
|
it "should detect unused preload associations" do
|
656
663
|
Firm.includes(:clients).collect(&:name)
|
657
|
-
Bullet::
|
658
|
-
Bullet::Association.should be_has_unused_preload_associations
|
664
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
665
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
659
666
|
end
|
660
667
|
end
|
661
668
|
|
662
|
-
describe Bullet::Association, 'has_many :as' do
|
663
669
|
|
664
|
-
def setup_db
|
665
|
-
ActiveRecord::Schema.define(:version => 1) do
|
666
|
-
create_table :votes do |t|
|
667
|
-
t.column :vote, :integer
|
668
|
-
t.references :voteable, :polymorphic => true
|
669
|
-
end
|
670
|
-
|
671
|
-
create_table :users do |t|
|
672
|
-
t.column :name, :string
|
673
|
-
end
|
674
|
-
|
675
|
-
create_table :pets do |t|
|
676
|
-
t.column :name, :string
|
677
|
-
t.column :user_id, :integer
|
678
|
-
end
|
679
|
-
|
680
|
-
create_table :news do |t|
|
681
|
-
t.column :name, :string
|
682
|
-
end
|
683
|
-
end
|
684
|
-
end
|
685
|
-
|
686
|
-
def teardown_db
|
687
|
-
ActiveRecord::Base.connection.tables.each do |table|
|
688
|
-
ActiveRecord::Base.connection.drop_table(table)
|
689
|
-
end
|
690
|
-
end
|
691
|
-
|
692
|
-
class Vote < ActiveRecord::Base
|
693
|
-
belongs_to :voteable, :polymorphic => true
|
694
|
-
end
|
695
|
-
|
696
|
-
class User < ActiveRecord::Base
|
697
|
-
has_many :votes, :as => :voteable
|
698
|
-
has_many :pets
|
699
|
-
end
|
700
|
-
|
701
|
-
class Pet < ActiveRecord::Base
|
702
|
-
belongs_to :user
|
703
|
-
end
|
704
|
-
|
705
|
-
class News < ActiveRecord::Base
|
706
|
-
has_many :votes, :as => :voteable
|
707
|
-
end
|
708
|
-
|
709
|
-
before(:all) do
|
710
|
-
setup_db
|
711
|
-
user1 = User.create(:name => 'first')
|
712
|
-
user2 = User.create(:name => 'second')
|
713
|
-
user3 = User.create(:name => 'third')
|
714
|
-
user4 = User.create(:name => 'fourth')
|
715
|
-
|
716
|
-
pet1 = user1.pets.create(:name => "dog")
|
717
|
-
pet2 = user1.pets.create(:name => "dog")
|
718
|
-
pet3 = user2.pets.create(:name => "cat")
|
719
|
-
pet4 = user2.pets.create(:name => "cat")
|
720
|
-
|
721
|
-
user1.votes.create(:vote => 10)
|
722
|
-
user1.votes.create(:vote => 20)
|
723
|
-
user2.votes.create(:vote => 10)
|
724
|
-
user2.votes.create(:vote => 20)
|
725
|
-
user3.votes.create(:vote => 10)
|
726
|
-
user3.votes.create(:vote => 20)
|
727
|
-
user4.votes.create(:vote => 10)
|
728
|
-
user4.votes.create(:vote => 20)
|
729
|
-
|
730
|
-
news1 = News.create(:name => 'first')
|
731
|
-
news2 = News.create(:name => 'second')
|
732
|
-
news1.votes.create(:vote => 10)
|
733
|
-
news1.votes.create(:vote => 20)
|
734
|
-
news2.votes.create(:vote => 10)
|
735
|
-
news2.votes.create(:vote => 20)
|
736
|
-
end
|
737
|
-
|
738
|
-
after(:all) do
|
739
|
-
teardown_db
|
740
|
-
end
|
741
|
-
|
742
|
-
before(:each) do
|
743
|
-
Bullet::Association.start_request
|
744
|
-
end
|
745
|
-
|
746
|
-
after(:each) do
|
747
|
-
Bullet::Association.end_request
|
748
|
-
end
|
749
|
-
|
750
|
-
# this happens only when a polymorphic association is included along with another table which is being referenced in the query
|
751
|
-
it "should not have unused preloaded associations with conditions" do
|
752
|
-
all_users = User.includes(:pets)
|
753
|
-
users_with_ten_votes = User.includes(:votes).where(["votes.vote = ?", 10])
|
754
|
-
users_without_ten_votes = User.where(["users.id not in (?)", users_with_ten_votes.collect(&:id)])
|
755
|
-
puts all_users.to_sql
|
756
|
-
all_users.each { |t| t.pets.collect(&:name) }
|
757
|
-
Bullet::Association.check_unused_preload_associations
|
758
|
-
Bullet::Association.should_not be_unused_preload_associations_for(User, :pets)
|
759
|
-
Bullet::Association.should_not be_unused_preload_associations_for(User, :votes)
|
760
|
-
end
|
761
|
-
|
762
|
-
it "should detect unpreload associations" do
|
763
|
-
User.all.each do |user|
|
764
|
-
user.votes.collect(&:vote)
|
765
|
-
end
|
766
|
-
Bullet::Association.should be_has_unpreload_associations
|
767
|
-
end
|
768
|
-
|
769
|
-
it "should detect no unpreload associations" do
|
770
|
-
User.includes(:votes).each do |user|
|
771
|
-
user.votes.collect(&:vote)
|
772
|
-
end
|
773
|
-
Bullet::Association.should_not be_has_unpreload_associations
|
774
|
-
end
|
775
|
-
|
776
|
-
it "should detect unpreload associations with voteable" do
|
777
|
-
Vote.all.each do |vote|
|
778
|
-
vote.voteable.name
|
779
|
-
end
|
780
|
-
Bullet::Association.should be_has_unpreload_associations
|
781
|
-
end
|
782
|
-
|
783
|
-
it "should detect no unpreload associations with voteable" do
|
784
|
-
Vote.includes(:voteable).each do |vote|
|
785
|
-
vote.voteable.name
|
786
|
-
end
|
787
|
-
Bullet::Association.should_not be_has_unpreload_associations
|
788
|
-
end
|
789
|
-
|
790
|
-
it "should detect no unused preload associations" do
|
791
|
-
User.all.collect(&:name)
|
792
|
-
Bullet::Association.check_unused_preload_associations
|
793
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
794
|
-
end
|
795
|
-
|
796
|
-
it "should detect unused preload associations" do
|
797
|
-
User.includes(:votes).collect(&:name)
|
798
|
-
Bullet::Association.check_unused_preload_associations
|
799
|
-
Bullet::Association.should be_has_unused_preload_associations
|
800
|
-
end
|
801
|
-
|
802
|
-
it "should detect no unused preload associations with voteable" do
|
803
|
-
Vote.all.collect(&:vote)
|
804
|
-
Bullet::Association.check_unused_preload_associations
|
805
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
806
|
-
end
|
807
|
-
|
808
|
-
it "should detect unused preload associations with voteable" do
|
809
|
-
Vote.includes(:voteable).collect(&:vote)
|
810
|
-
Bullet::Association.check_unused_preload_associations
|
811
|
-
Bullet::Association.should be_has_unused_preload_associations
|
812
|
-
end
|
813
|
-
end
|
814
670
|
|
815
|
-
describe Bullet::Association, "has_one" do
|
671
|
+
describe Bullet::Detector::Association, "has_one" do
|
816
672
|
|
817
673
|
def setup_db
|
818
674
|
ActiveRecord::Schema.define(:version => 1) do
|
@@ -856,41 +712,41 @@ describe Bullet::Association, "has_one" do
|
|
856
712
|
end
|
857
713
|
|
858
714
|
before(:each) do
|
859
|
-
Bullet
|
715
|
+
Bullet.start_request
|
860
716
|
end
|
861
717
|
|
862
718
|
after(:each) do
|
863
|
-
Bullet
|
719
|
+
Bullet.end_request
|
864
720
|
end
|
865
721
|
|
866
722
|
it "should detect unpreload association" do
|
867
723
|
Company.all.each do |company|
|
868
724
|
company.address.name
|
869
725
|
end
|
870
|
-
Bullet::Association.
|
726
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
871
727
|
end
|
872
728
|
|
873
729
|
it "should detect no unpreload association" do
|
874
730
|
Company.find(:all, :include => :address).each do |company|
|
875
731
|
company.address.name
|
876
732
|
end
|
877
|
-
Bullet::Association.
|
733
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
878
734
|
end
|
879
735
|
|
880
736
|
it "should detect no unused preload association" do
|
881
737
|
Company.all.collect(&:name)
|
882
|
-
Bullet::
|
883
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
738
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
739
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
884
740
|
end
|
885
741
|
|
886
742
|
it "should detect unused preload association" do
|
887
743
|
Company.find(:all, :include => :address).collect(&:name)
|
888
|
-
Bullet::
|
889
|
-
Bullet::Association.should be_has_unused_preload_associations
|
744
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
745
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
890
746
|
end
|
891
747
|
end
|
892
748
|
|
893
|
-
describe Bullet::Association, "call one association that in possible objects" do
|
749
|
+
describe Bullet::Detector::Association, "call one association that in possible objects" do
|
894
750
|
|
895
751
|
def setup_db
|
896
752
|
ActiveRecord::Schema.define(:version => 1) do
|
@@ -936,21 +792,21 @@ describe Bullet::Association, "call one association that in possible objects" do
|
|
936
792
|
end
|
937
793
|
|
938
794
|
before(:each) do
|
939
|
-
Bullet
|
795
|
+
Bullet.start_request
|
940
796
|
end
|
941
797
|
|
942
798
|
after(:each) do
|
943
|
-
Bullet
|
799
|
+
Bullet.end_request
|
944
800
|
end
|
945
801
|
|
946
802
|
it "should detect no unpreload association" do
|
947
803
|
Contact.all
|
948
804
|
Contact.first.emails.collect(&:name)
|
949
|
-
Bullet::Association.
|
805
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
950
806
|
end
|
951
807
|
end
|
952
808
|
|
953
|
-
describe Bullet::Association, "STI" do
|
809
|
+
describe Bullet::Detector::Association, "STI" do
|
954
810
|
|
955
811
|
def setup_db
|
956
812
|
ActiveRecord::Schema.define(:version => 1) do
|
@@ -1002,42 +858,42 @@ describe Bullet::Association, "STI" do
|
|
1002
858
|
end
|
1003
859
|
|
1004
860
|
before(:each) do
|
1005
|
-
Bullet
|
861
|
+
Bullet.start_request
|
1006
862
|
end
|
1007
863
|
|
1008
864
|
after(:each) do
|
1009
|
-
Bullet
|
865
|
+
Bullet.end_request
|
1010
866
|
end
|
1011
867
|
|
1012
868
|
it "should detect unpreload associations" do
|
1013
869
|
Page.all.each do |page|
|
1014
870
|
page.author.name
|
1015
871
|
end
|
1016
|
-
Bullet::Association.
|
1017
|
-
Bullet::
|
1018
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
872
|
+
Bullet::Detector::Association.should_not be_completely_preloading_associations
|
873
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
874
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
1019
875
|
end
|
1020
876
|
|
1021
877
|
it "should not detect unpreload associations" do
|
1022
878
|
Page.find(:all, :include => :author).each do |page|
|
1023
879
|
page.author.name
|
1024
880
|
end
|
1025
|
-
Bullet::Association.
|
1026
|
-
Bullet::
|
1027
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
881
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
882
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
883
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
1028
884
|
end
|
1029
885
|
|
1030
886
|
it "should detect unused preload associations" do
|
1031
887
|
Page.find(:all, :include => :author).collect(&:name)
|
1032
|
-
Bullet::Association.
|
1033
|
-
Bullet::
|
1034
|
-
Bullet::Association.should be_has_unused_preload_associations
|
888
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
889
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
890
|
+
Bullet::Detector::Association.should be_has_unused_preload_associations
|
1035
891
|
end
|
1036
892
|
|
1037
893
|
it "should not detect unused preload associations" do
|
1038
894
|
Page.all.collect(&:name)
|
1039
|
-
Bullet::Association.
|
1040
|
-
Bullet::
|
1041
|
-
Bullet::Association.should_not be_has_unused_preload_associations
|
895
|
+
Bullet::Detector::Association.should be_completely_preloading_associations
|
896
|
+
Bullet::Detector::UnusedEagerAssociation.check_unused_preload_associations
|
897
|
+
Bullet::Detector::Association.should_not be_has_unused_preload_associations
|
1042
898
|
end
|
1043
899
|
end
|