testdependencies 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,7 +1,8 @@
1
1
  = testdependencies
2
2
 
3
- This tiny tool adds explicit dependency declarations to
4
- rails' #test method. more info: http://www.iam.unibe.ch/~scg/Research/JExample/
3
+ Testdependencies adds explicit dependency declarations to
4
+ Rails #test method and Shouldas' toplevel #should method (Not working inside contexts).
5
+ more about dependency declarative testing: http://www.iam.unibe.ch/~scg/Research/JExample/
5
6
 
6
7
  test "A test that depends on" => "dependency" do |value_of_dependency|
7
8
  assert something
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -0,0 +1,18 @@
1
+ ActiveSupport::TestCase.module_eval do
2
+ class<<self
3
+ alias old_test test
4
+ def test(decl, &block)
5
+ unless String === decl
6
+ old_test decl.keys.first do
7
+ dep = decl.values.first
8
+ dep = "test_#{dep.gsub(/\s+/,'_')}".to_sym if String === dep
9
+ raise "Dependency undefined: #{dep}" unless respond_to?(dep)
10
+ result = send(dep) rescue false
11
+ instance_exec(*result, &block) if result
12
+ end
13
+ else
14
+ old_test decl, &block
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ ActiveSupport::TestCase.module_eval do
2
+ class<<self
3
+ alias old_should should
4
+ def should(decl, &block)
5
+ unless String === decl
6
+ old_should decl.keys.first do
7
+ dep = decl.values.first
8
+ dep = "test: #{self.class.to_s.gsub('Test', '')} should #{dep}. ".to_sym if String === dep
9
+ raise "Dependency undefined: #{dep}" unless respond_to?(dep)
10
+ result = send(dep) rescue false
11
+ instance_exec(*result, &block) if result
12
+ end
13
+ else
14
+ old_should decl, &block
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,22 +1,15 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
1
3
 
2
- ActiveSupport::TestCase.module_eval do
3
- class<<self
4
- unless defined?(ActiveSupport)
5
- raise "testdependencies must be required *after* rails/activesupport has been loaded"
6
- end
7
- alias old_test test
8
- def test(decl, &block)
9
- unless String === decl
10
- old_test decl.keys.first do
11
- dep = decl.values.first
12
- dep = "test_#{dep.gsub(/\s+/,'_')}".to_sym if String === dep
13
- raise "Dependency undefined: #{dep}" unless respond_to?(dep)
14
- result = send(dep) rescue false
15
- instance_exec(*result, &block) if result
16
- end
17
- else
18
- old_test decl, &block
19
- end
20
- end
21
- end
22
- end
4
+ unless defined?(ActiveSupport)
5
+ raise "testdependencies must be required *after* rails/activesupport has been loaded"
6
+ end
7
+
8
+ if defined?(Shoulda::Helpers) && Test::Unit::TestCase.ancestors.include?(Shoulda::Helpers)
9
+ require "adapters/shoulda"
10
+ else
11
+ require "adapters/plain"
12
+ end
13
+
14
+
15
+
data/test/helper.rb CHANGED
@@ -1,25 +1,12 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
+ require 'rails/all'
4
+ if defined?(SHOULDA_TEST)
5
+ require 'shoulda'
6
+ end
3
7
 
4
8
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
9
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
10
 
7
- require 'rails/all'
8
-
9
- class ActiveSupport::TestCase < Test::Unit::TestCase
10
- # this is rail's way of declaring tests
11
- def test(name, &block)
12
- test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
13
- defined = instance_method(test_name) rescue false
14
- raise "#{test_name} is already defined in #{self}" if defined
15
- if block_given?
16
- define_method(test_name, &block)
17
- else
18
- define_method(test_name) do
19
- flunk "No implementation provided for #{name}"
20
- end
21
- end
22
- end
23
- end
24
11
 
25
12
  require 'testdependencies'
@@ -0,0 +1,39 @@
1
+ require 'helper'
2
+
3
+ class RegressionTest < ActiveSupport::TestCase
4
+
5
+ def new_user
6
+ user = Object.new
7
+ def user.name
8
+ "Horst"
9
+ end
10
+ user
11
+ end
12
+
13
+ test "User has a name" => :new_user do |user|
14
+ assert_respond_to user, :name
15
+ user.name
16
+ end
17
+
18
+ test "User name is Horst" => "User has a name" do |name|
19
+ assert_equal "Horst", name
20
+ end
21
+
22
+ test "multiple return values" do
23
+ a, b, c, d = 1,2,3,4
24
+ end
25
+
26
+ test "Consume separately" => "multiple return values" do |a,b,c,d|
27
+ assert_equal 1, a
28
+ assert_equal 2, b
29
+ assert_equal 3, c
30
+ assert_equal 4, d
31
+ end
32
+
33
+ test "Consume altogether" => "multiple return values" do |*arr|
34
+ assert_equal 1, arr[0]
35
+ assert_equal 2, arr[1]
36
+ assert_equal 3, arr[2]
37
+ assert_equal 4, arr[3]
38
+ end
39
+ end
@@ -0,0 +1,54 @@
1
+ SHOULDA_TEST = true
2
+ require 'helper'
3
+
4
+
5
+ class RegressionTest < ActiveSupport::TestCase
6
+
7
+ def new_user
8
+ user = Object.new
9
+ def user.name
10
+ "Horst"
11
+ end
12
+ user
13
+ end
14
+
15
+ should "User has a name" => :new_user do |user|
16
+ assert_respond_to user, :name
17
+ user.name
18
+ end
19
+
20
+
21
+ should "User name is Horst" => "User has a name" do |name|
22
+ assert_equal "Horst", name
23
+ end
24
+
25
+ context "Declarative and classic style mixed together" do
26
+ setup do
27
+ @var = 1
28
+ end
29
+
30
+ context "still working" do
31
+ should "get vat from setup" do
32
+ assert_equal 1, @var
33
+ end
34
+ end
35
+ end
36
+
37
+ should "multiple return values" do
38
+ a, b, c, d = 1,2,3,4
39
+ end
40
+
41
+ should "Consume separately" => "multiple return values" do |a,b,c,d|
42
+ assert_equal 1, a
43
+ assert_equal 2, b
44
+ assert_equal 3, c
45
+ assert_equal 4, d
46
+ end
47
+
48
+ should "Consume altogether" => "multiple return values" do |*arr|
49
+ assert_equal 1, arr[0]
50
+ assert_equal 2, arr[1]
51
+ assert_equal 3, arr[2]
52
+ assert_equal 4, arr[3]
53
+ end
54
+ end
@@ -0,0 +1,58 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{testdependencies}
8
+ s.version = "0.2.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Matthias Hennemeyer"]
12
+ s.date = %q{2010-04-20}
13
+ s.description = %q{Add explicit dependencies to your Rails tests.}
14
+ s.email = %q{mhennemeyer@me.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "lib/adapters/plain.rb",
27
+ "lib/adapters/shoulda.rb",
28
+ "lib/testdependencies.rb",
29
+ "test/helper.rb",
30
+ "test/plain_test.rb",
31
+ "test/shoulda_test.rb",
32
+ "testdependencies.gemspec"
33
+ ]
34
+ s.homepage = %q{http://github.com/mhennemeyer/testdependencies}
35
+ s.rdoc_options = ["--charset=UTF-8"]
36
+ s.require_paths = ["lib"]
37
+ s.rubygems_version = %q{1.3.6}
38
+ s.summary = %q{Add explicit dependencies to your Rails tests.}
39
+ s.test_files = [
40
+ "test/helper.rb",
41
+ "test/plain_test.rb",
42
+ "test/shoulda_test.rb"
43
+ ]
44
+
45
+ if s.respond_to? :specification_version then
46
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
+ s.specification_version = 3
48
+
49
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
50
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
51
+ else
52
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
53
+ end
54
+ else
55
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
56
+ end
57
+ end
58
+
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
7
+ - 2
8
8
  - 0
9
- version: 0.1.0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Matthias Hennemeyer
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-04-19 00:00:00 +02:00
17
+ date: 2010-04-20 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -45,9 +45,13 @@ files:
45
45
  - README.rdoc
46
46
  - Rakefile
47
47
  - VERSION
48
+ - lib/adapters/plain.rb
49
+ - lib/adapters/shoulda.rb
48
50
  - lib/testdependencies.rb
49
51
  - test/helper.rb
50
- - test/test_testdependencies.rb
52
+ - test/plain_test.rb
53
+ - test/shoulda_test.rb
54
+ - testdependencies.gemspec
51
55
  has_rdoc: true
52
56
  homepage: http://github.com/mhennemeyer/testdependencies
53
57
  licenses: []
@@ -80,4 +84,5 @@ specification_version: 3
80
84
  summary: Add explicit dependencies to your Rails tests.
81
85
  test_files:
82
86
  - test/helper.rb
83
- - test/test_testdependencies.rb
87
+ - test/plain_test.rb
88
+ - test/shoulda_test.rb
@@ -1,21 +0,0 @@
1
- require 'helper'
2
-
3
- class RegressionTest < ActiveSupport::TestCase
4
-
5
- def new_user
6
- user = Object.new
7
- def user.name
8
- "Horst"
9
- end
10
- user
11
- end
12
-
13
- test "User has a name" => :new_user do |user|
14
- assert_respond_to user, :name
15
- user.name
16
- end
17
-
18
- test "User name is Horst" => "User has a name" do |name|
19
- assert_equal "Horst", name
20
- end
21
- end