unit_record 0.3.0 → 0.4.0
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/CHANGELOG +4 -0
- data/README +1 -5
- data/Rakefile +27 -1
- data/lib/unit_record/disconnected_active_record.rb +4 -1
- data/lib/unit_record/disconnected_fixtures.rb +1 -0
- data/test/functional/disconnected_active_record_test.rb +19 -2
- data/test/functional/functional_test_helper.rb +2 -0
- data/test/test_helper.rb +10 -3
- data/test/unit/column_extension_test.rb +1 -1
- data/test/unit/unit_test_helper.rb +5 -0
- metadata +4 -3
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -6,15 +6,11 @@ This plugin provides unit testing for ActiveRecord by disconnecting tests from t
|
|
6
6
|
|
7
7
|
Rationale: http://www.dcmanges.com/blog/rails-unit-record-test-without-the-database
|
8
8
|
|
9
|
-
One huge benefit to disconnecting unit tests from the database is having a faster test suite. Here is the benchmark from my current
|
9
|
+
One huge benefit to disconnecting unit tests from the database is having a faster test suite. Here is the benchmark from one of my current projects:
|
10
10
|
|
11
11
|
Finished in 11.541093 seconds.
|
12
12
|
3001 tests, 5325 assertions, 0 failures, 0 errors
|
13
13
|
|
14
|
-
== Requirements
|
15
|
-
|
16
|
-
* Rails >= 1.2
|
17
|
-
|
18
14
|
== Installation
|
19
15
|
|
20
16
|
gem install unit_record
|
data/Rakefile
CHANGED
@@ -40,7 +40,7 @@ Gem::manage_gems
|
|
40
40
|
specification = Gem::Specification.new do |s|
|
41
41
|
s.name = "unit_record"
|
42
42
|
s.summary = "UnitRecord enables unit testing without hitting the database."
|
43
|
-
s.version = "0.
|
43
|
+
s.version = "0.4.0"
|
44
44
|
s.author = "Dan Manges"
|
45
45
|
s.description = "UnitRecord enables unit testing without hitting the database."
|
46
46
|
s.email = "daniel.manges@gmail.com"
|
@@ -59,3 +59,29 @@ Rake::GemPackageTask.new(specification) do |package|
|
|
59
59
|
package.need_zip = false
|
60
60
|
package.need_tar = false
|
61
61
|
end
|
62
|
+
|
63
|
+
RUBY_VERSIONS = %w[1.8.5-p52 1.8.5-p114 1.8.6]
|
64
|
+
JRUBY_VERSIONS = %w[1.1b1 1.0.2]
|
65
|
+
RAILS_VERSIONS = %w[1.2.5 1.99.0 2.0.1]
|
66
|
+
|
67
|
+
namespace :test do
|
68
|
+
desc "test with multiple versions of ruby and rails"
|
69
|
+
task :multi do
|
70
|
+
RUBY_VERSIONS.each do |ruby_version|
|
71
|
+
bin = "/usr/local/ruby-#{ruby_version}/bin"
|
72
|
+
RAILS_VERSIONS.each do |rails_version|
|
73
|
+
sh "RAILS_VERSION='#{rails_version}' #{bin}/rake test > /dev/null 2>&1"
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
desc "test with multiple versions of jruby and rails"
|
79
|
+
task :multi_jruby do
|
80
|
+
JRUBY_VERSIONS.each do |jruby_version|
|
81
|
+
home = "/usr/local/jruby/jruby-#{jruby_version}"
|
82
|
+
RAILS_VERSIONS.each do |rails_version|
|
83
|
+
sh "JRUBY_HOME=#{home} RAILS_VERSION='#{rails_version}' #{home}/bin/rake test > /dev/null 2>&1"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -14,7 +14,7 @@ module UnitRecord
|
|
14
14
|
raise("Columns are not cached for '#{table_name}' - check schema.rb")
|
15
15
|
end
|
16
16
|
def connection
|
17
|
-
raise "ActiveRecord is disconnected; database access is unavailable in unit tests."
|
17
|
+
raise "(from #{to_s}): ActiveRecord is disconnected; database access is unavailable in unit tests."
|
18
18
|
end
|
19
19
|
def connected?
|
20
20
|
false
|
@@ -22,6 +22,9 @@ module UnitRecord
|
|
22
22
|
def disconnected?
|
23
23
|
true
|
24
24
|
end
|
25
|
+
def table_exists?
|
26
|
+
true
|
27
|
+
end
|
25
28
|
end
|
26
29
|
Fixtures.disconnect!
|
27
30
|
Test::Unit::TestCase.disconnect!
|
@@ -1,11 +1,20 @@
|
|
1
|
-
require File.dirname(__FILE__) + "
|
2
|
-
# The '.' is intentional to have a TestCase require a different relative path.
|
1
|
+
require File.dirname(__FILE__) + "/functional_test_helper"
|
3
2
|
|
4
3
|
functional_tests do
|
5
4
|
test "accessing connection raises" do
|
6
5
|
assert_raises(RuntimeError) { ActiveRecord::Base.connection }
|
7
6
|
end
|
8
7
|
|
8
|
+
test "accessing connection gives exception message with class name" do
|
9
|
+
exception = nil
|
10
|
+
begin
|
11
|
+
Person.connection
|
12
|
+
rescue => exception
|
13
|
+
end
|
14
|
+
assert_not_nil exception
|
15
|
+
assert_equal "(from Person): ActiveRecord is disconnected; database access is unavailable in unit tests.", exception.message
|
16
|
+
end
|
17
|
+
|
9
18
|
test "connected? is false" do
|
10
19
|
assert_equal false, ActiveRecord::Base.connected?
|
11
20
|
end
|
@@ -13,4 +22,12 @@ functional_tests do
|
|
13
22
|
test "disconnected? is true" do
|
14
23
|
assert_equal true, ActiveRecord::Base.disconnected?
|
15
24
|
end
|
25
|
+
|
26
|
+
test "inspect does not blow up" do
|
27
|
+
assert_nothing_raised { Person.inspect }
|
28
|
+
end
|
29
|
+
|
30
|
+
test "table_exists?" do
|
31
|
+
assert_equal true, Person.table_exists?
|
32
|
+
end
|
16
33
|
end
|
data/test/test_helper.rb
CHANGED
@@ -3,10 +3,13 @@ RAILS_ROOT = File.dirname(__FILE__)
|
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
5
|
require 'test/unit'
|
6
|
+
|
7
|
+
if version = ENV['RAILS_VERSION']
|
8
|
+
gem "rails", version
|
9
|
+
end
|
6
10
|
require 'active_record'
|
7
11
|
require 'active_record/fixtures'
|
8
|
-
|
9
|
-
require 'active_support/breakpoint'
|
12
|
+
|
10
13
|
begin
|
11
14
|
require 'mocha'
|
12
15
|
require 'dust'
|
@@ -19,6 +22,10 @@ require "#{File.dirname(__FILE__)}/../init"
|
|
19
22
|
|
20
23
|
Test::Unit::TestCase.use_transactional_fixtures = true
|
21
24
|
|
25
|
+
# Needed because of this line in setup_with_fixtures and teardown_with_fixtures:
|
26
|
+
# return unless defined?(ActiveRecord::Base) && !ActiveRecord::Base.configurations.blank?
|
27
|
+
ActiveRecord::Base.configurations = {"irrelevant" => {:adapter => "stub"}}
|
28
|
+
|
22
29
|
class Preference < ActiveRecord::Base
|
23
30
|
end
|
24
31
|
class Person < ActiveRecord::Base
|
@@ -28,4 +35,4 @@ class Foo < ActiveRecord::Base
|
|
28
35
|
end
|
29
36
|
class DoesNotExist < ActiveRecord::Base
|
30
37
|
set_table_name "table_does_not_exist"
|
31
|
-
end
|
38
|
+
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: unit_record
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.4.0
|
7
|
+
date: 2007-12-09 00:00:00 -06:00
|
8
8
|
summary: UnitRecord enables unit testing without hitting the database.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -44,6 +44,7 @@ files:
|
|
44
44
|
- test/functional/disconnected_test_case_test.rb
|
45
45
|
- test/functional/functional_test_helper.rb
|
46
46
|
- test/unit/column_extension_test.rb
|
47
|
+
- test/unit/unit_test_helper.rb
|
47
48
|
- CHANGELOG
|
48
49
|
- README
|
49
50
|
- Rakefile
|