public
Rubygem
Description: Most awesome pagination solution for Ruby
Homepage: http://github.com/mislav/will_paginate/wikis
Clone URL: git://github.com/mislav/will_paginate.git
Search Repo:
Reduce File.dirname cruft: invoke individual tests with -Ilib:test 
parameter.
Stolen assert_queries from Rails, let's put it to good use in 
finder_test.rb
mislav (author)
Fri Apr 04 20:58:21 -0700 2008
commit  1d8a06568ac0259ed1371d13e866d5fab0623fdd
tree    705216b2dc9f98b3dc86c6d823666307816f5116
parent  64d6ef16a9b0e01d85f960d337ba92d87abf3c50
...
9
10
11
 
12
13
14
...
27
28
29
 
30
31
32
...
9
10
11
12
13
14
15
...
28
29
30
31
32
33
34
0
@@ -9,6 +9,7 @@ desc 'Test the will_paginate plugin.'
0
 Rake::TestTask.new(:test) do |t|
0
   t.pattern = 'test/**/*_test.rb'
0
   t.verbose = true
0
+ t.libs << 'test'
0
 end
0
 
0
 # I want to specify environment variables at call time
0
@@ -27,6 +28,7 @@ for configuration in %w( sqlite3 mysql postgres )
0
     t.pattern = 'test/finder_test.rb'
0
     t.verbose = true
0
     t.env = { 'DB' => configuration }
0
+ t.libs << 'test'
0
   end
0
 end
0
 
...
1
 
2
3
4
...
 
1
2
3
4
0
@@ -1,4 +1,4 @@
0
-require File.dirname(__FILE__) + '/helper'
0
+require 'helper'
0
 require 'will_paginate/array'
0
 
0
 class ArrayPaginationTest < Test::Unit::TestCase
...
19
20
21
22
23
...
19
20
21
 
 
0
@@ -19,5 +19,3 @@ else
0
     gem 'activerecord'
0
   end
0
 end
0
-
0
-$:.unshift "#{plugin_root}/lib"
...
1
2
3
4
5
6
7
 
8
9
 
...
1
2
3
 
4
5
 
6
7
 
8
0
@@ -1,9 +1,8 @@
0
 #!/usr/bin/env ruby
0
 irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
0
 libs = []
0
-dirname = File.dirname(__FILE__)
0
 
0
 libs << 'irb/completion'
0
-libs << File.join(dirname, 'lib', 'load_fixtures')
0
+libs << File.join('lib', 'load_fixtures')
0
 
0
-exec "#{irb}#{libs.map{ |l| " -r #{l}" }.join} --simple-prompt"
0
+exec "#{irb} -Ilib:test#{libs.map{ |l| " -r #{l}" }.join} --simple-prompt"
...
1
2
 
 
3
4
5
...
12
13
14
15
16
17
18
19
20
 
 
 
 
 
 
21
22
23
24
25
26
 
 
 
 
 
27
28
29
...
 
 
1
2
3
4
5
...
12
13
14
 
 
 
 
 
 
15
16
17
18
19
20
21
 
 
 
 
 
22
23
24
25
26
27
28
29
0
@@ -1,5 +1,5 @@
0
-require File.dirname(__FILE__) + '/helper'
0
-require File.dirname(__FILE__) + '/lib/activerecord_test_case'
0
+require 'helper'
0
+require 'lib/activerecord_test_case'
0
 
0
 require 'will_paginate'
0
 WillPaginate.enable_activerecord
0
@@ -12,18 +12,18 @@ class FinderTest < ActiveRecordTestCase
0
   end
0
   
0
   def test_simple_paginate
0
- entries = Topic.paginate :page => nil
0
- assert_equal 1, entries.current_page
0
- assert_nil entries.previous_page
0
- assert_nil entries.next_page
0
- assert_equal 1, entries.total_pages
0
- assert_equal 4, entries.size
0
+ assert_queries(1) do
0
+ entries = Topic.paginate :page => nil
0
+ assert_equal 1, entries.current_page
0
+ assert_equal 1, entries.total_pages
0
+ assert_equal 4, entries.size
0
+ end
0
     
0
- entries = Topic.paginate :page => 2
0
- assert_equal 2, entries.current_page
0
- assert_equal 1, entries.previous_page
0
- assert_equal 1, entries.total_pages
0
- assert entries.empty?
0
+ assert_queries(2) do
0
+ entries = Topic.paginate :page => 2
0
+ assert_equal 1, entries.total_pages
0
+ assert entries.empty?
0
+ end
0
   end
0
 
0
   def test_parameter_api
...
4
5
6
7
 
8
9
10
...
4
5
6
 
7
8
9
10
0
@@ -4,7 +4,7 @@ require 'rubygems'
0
 # gem install redgreen for colored test output
0
 begin require 'redgreen'; rescue LoadError; end
0
 
0
-require File.join(File.dirname(__FILE__), 'boot') unless defined?(ActiveRecord)
0
+require 'boot' unless defined?(ActiveRecord)
0
 
0
 class Test::Unit::TestCase
0
   protected
...
1
 
2
3
4
...
18
19
20
 
 
 
 
 
 
 
 
 
 
 
 
 
21
22
23
...
 
1
2
3
4
...
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
0
@@ -1,4 +1,4 @@
0
-require File.join(File.dirname(__FILE__), 'activerecord_test_connector')
0
+require 'lib/activerecord_test_connector'
0
 
0
 class ActiveRecordTestCase < Test::Unit::TestCase
0
   # Set our fixture path
0
@@ -18,6 +18,19 @@ class ActiveRecordTestCase < Test::Unit::TestCase
0
   # Default so Test::Unit::TestCase doesn't complain
0
   def test_truth
0
   end
0
+
0
+ protected
0
+
0
+ def assert_queries(num = 1)
0
+ $query_count = 0
0
+ yield
0
+ ensure
0
+ assert_equal num, $query_count, "#{$query_count} instead of #{num} queries were executed."
0
+ end
0
+
0
+ def assert_no_queries(&block)
0
+ assert_queries(0, &block)
0
+ end
0
 end
0
 
0
 ActiveRecordTestConnector.setup
...
6
7
8
 
 
9
10
11
...
14
15
16
17
18
 
19
20
21
...
38
39
40
41
 
42
43
44
...
48
49
50
51
 
52
53
54
55
56
57
58
 
 
 
 
 
 
 
 
 
 
 
 
59
60
...
6
7
8
9
10
11
12
13
...
16
17
18
 
 
19
20
21
22
...
39
40
41
 
42
43
44
45
...
49
50
51
 
52
53
54
55
 
 
 
 
56
57
58
59
60
61
62
63
64
65
66
67
68
69
0
@@ -6,6 +6,8 @@ class ActiveRecordTestConnector
0
   cattr_accessor :able_to_connect
0
   cattr_accessor :connected
0
 
0
+ FIXTURES_PATH = File.join(File.dirname(__FILE__), '..', 'fixtures')
0
+
0
   # Set our defaults
0
   self.connected = false
0
   self.able_to_connect = true
0
@@ -14,8 +16,7 @@ class ActiveRecordTestConnector
0
     unless self.connected || !self.able_to_connect
0
       setup_connection
0
       load_schema
0
- # require_fixture_models
0
- Dependencies.load_paths.unshift(File.dirname(__FILE__) + "/../fixtures")
0
+ Dependencies.load_paths.unshift FIXTURES_PATH
0
       self.connected = true
0
     end
0
   rescue Exception => e # errors from ActiveRecord setup
0
@@ -38,7 +39,7 @@ class ActiveRecordTestConnector
0
     
0
     ActiveRecord::Base.establish_connection(configuration)
0
     ActiveRecord::Base.configurations = { db => configuration }
0
- ActiveRecord::Base.connection
0
+ add_counting ActiveRecord::Base.connection
0
 
0
     unless Object.const_defined?(:QUOTED_TYPE)
0
       Object.send :const_set, :QUOTED_TYPE, ActiveRecord::Base.connection.quote_column_name('type')
0
@@ -48,13 +49,21 @@ class ActiveRecordTestConnector
0
   def self.load_schema
0
     ActiveRecord::Base.silence do
0
       ActiveRecord::Migration.verbose = false
0
- load File.dirname(__FILE__) + "/../fixtures/schema.rb"
0
+ load File.join(FIXTURES_PATH, 'schema.rb')
0
     end
0
   end
0
 
0
- def self.require_fixture_models
0
- models = Dir.glob(File.dirname(__FILE__) + "/../fixtures/*.rb")
0
- models = (models.grep(/user.rb/) + models).uniq
0
- models.each { |f| require f }
0
+ def self.add_counting(conn)
0
+ class << conn
0
+ IGNORED_SQL = [/^PRAGMA/, /^SELECT currval/, /^SELECT CAST/, /^SELECT @@IDENTITY/, /^SELECT @@ROWCOUNT/]
0
+
0
+ def execute_with_counting(sql, name = nil, &block)
0
+ $query_count ||= 0
0
+ $query_count += 1 unless IGNORED_SQL.any? { |r| sql =~ r }
0
+ execute_without_counting(sql, name, &block)
0
+ end
0
+
0
+ alias_method_chain :execute, :counting
0
+ end
0
   end
0
 end
...
1
2
3
 
 
4
5
6
7
8
9
10
 
11
12
13
...
 
 
 
1
2
3
4
5
6
7
 
 
8
9
10
11
0
@@ -1,13 +1,11 @@
0
-dirname = File.dirname(__FILE__)
0
-require File.join(dirname, '..', 'boot')
0
-require File.join(dirname, 'activerecord_test_connector')
0
+require 'boot'
0
+require 'lib/activerecord_test_connector'
0
 
0
 # setup the connection
0
 ActiveRecordTestConnector.setup
0
 
0
 # load all fixtures
0
-fixture_path = File.join(dirname, '..', 'fixtures')
0
-Fixtures.create_fixtures(fixture_path, ActiveRecord::Base.connection.tables)
0
+Fixtures.create_fixtures(ActiveRecordTestConnector::FIXTURES_PATH, ActiveRecord::Base.connection.tables)
0
 
0
 require 'will_paginate'
0
 WillPaginate.enable_activerecord
...
1
 
2
3
 
4
5
6
...
 
1
2
 
3
4
5
6
0
@@ -1,6 +1,6 @@
0
-require File.dirname(__FILE__) + '/helper'
0
+require 'helper'
0
 require 'action_controller'
0
-require File.dirname(__FILE__) + '/lib/html_inner_text'
0
+require 'lib/html_inner_text'
0
 
0
 ActionController::Routing::Routes.draw do |map|
0
   map.connect ':controller/:action/:id'

Comments

    No one has commented yet.