test_unit_extend 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,43 @@
1
+ == Overview
2
+ Add extension to Test::Unit.
3
+
4
+ #before_test : do something before lauch a test
5
+ #should_have_callbacks : shoulda doesn't have macro to test presence of callbacks, here is one.
6
+
7
+ == before_test
8
+
9
+ class .... < Test::Unit::TestCase
10
+
11
+ before_test :test_me, :setup_for_test_me
12
+
13
+ def test_me
14
+ assert_equal "Cup of tea please", @var # OK
15
+ end
16
+
17
+ private
18
+
19
+ def setup_for_test_me
20
+ @var = "Cup of tea please"
21
+ end
22
+
23
+ end
24
+
25
+ == should_have_callbacks
26
+
27
+ If your model has callback :my_callback on before_create, just check it in your test by :
28
+
29
+ should_have_callbacks :before_create, :my_callback
30
+
31
+ You can also pass an array :
32
+
33
+ should_have_callbacks :before_create, [:my_callback_1, :my_callback_2]
34
+
35
+
36
+ == Install
37
+
38
+ gem install test_unit_extend
39
+
40
+ == Dependencies
41
+
42
+ before_test : if you use ActiveSupport::TestCase, it doesn't work with ActiveSupport 3 (In Development)
43
+
@@ -0,0 +1,38 @@
1
+ module TestUnitExtend
2
+ def self.included(base)
3
+
4
+ def run(result,&block)
5
+ send(@@___before_tests[method_name]) if @@___before_tests[method_name]
6
+ original_run(result,&block)
7
+ end
8
+
9
+ class << base
10
+ @@___before_tests ||= {}
11
+
12
+ def before_test test, proc
13
+ @@___before_tests.merge!({test.to_s => proc})
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+
20
+ class ActiveSupport::TestCase < ::Test::Unit::TestCase
21
+ alias_method :original_run, :run
22
+ include TestUnitExtend
23
+ end if defined?(ActiveSupport::TestCase)
24
+
25
+ class Test::Unit::TestCase
26
+ alias_method :original_run, :run
27
+
28
+ def run(result,&block)
29
+ send(@@___before_tests[method_name]) if @@___before_tests[method_name]
30
+ original_run(result,&block)
31
+ end
32
+
33
+ include TestUnitExtend
34
+ end
35
+
36
+
37
+
38
+
@@ -0,0 +1,28 @@
1
+ require 'active_support/inflector'
2
+
3
+ module TestUnitExtend
4
+
5
+ def should_have_callbacks callback, methods
6
+ klass = self.name.gsub('Test', '').constantize
7
+ chain = callback.to_s + '_callback_chain'
8
+ callbacks = klass.send(chain).map{|callback| callback.instance_variable_get(:@method)}
9
+ self.send(:define_method, :test_XXX_callbacks) do
10
+ assert ([*methods] - callbacks).empty?
11
+ end
12
+ end
13
+
14
+ end
15
+
16
+ class Test::Unit::TestCase
17
+ class << self
18
+ include TestUnitExtend
19
+ end
20
+ end
21
+
22
+ class ActiveSupport::TestCase < ::Test::Unit::TestCase
23
+ class << self
24
+ include TestUnitExtend
25
+ end
26
+ end if defined?(ActiveSupport::TestCase)
27
+
28
+
@@ -0,0 +1,2 @@
1
+ require 'before_test'
2
+ require 'should_have_callbacks'
@@ -0,0 +1,11 @@
1
+ require 'activerecord'
2
+
3
+ class User < ActiveRecord::Base
4
+ before_create :set_name
5
+
6
+ def set_name
7
+ @name = 'toto'
8
+ end
9
+
10
+
11
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class BeforeTestTest < Test::Unit::TestCase
4
+
5
+ before_test :test_me, :setup_for_test_me
6
+
7
+ def test_me
8
+ assert_equal "Cup of tea please", @var
9
+ end
10
+
11
+
12
+ private
13
+
14
+ def setup_for_test_me
15
+ @var = "Cup of tea please"
16
+ end
17
+
18
+ end
@@ -0,0 +1,17 @@
1
+ require 'test_helper'
2
+
3
+ class BeforeTestWithActiveSupportTest < ActiveSupport::TestCase
4
+
5
+ before_test :test_me, :setup_for_test_me
6
+
7
+ def test_me
8
+ assert_equal "Cup of tea please", @var
9
+ end
10
+
11
+ private
12
+
13
+ def setup_for_test_me
14
+ @var = "Cup of tea please"
15
+ end
16
+
17
+ end
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ gem 'activesupport', '2.3.5'
3
+ require 'test/unit'
4
+ require 'active_support/test_case'
5
+ require 'test_unit_extend'
6
+ require 'models/user'
@@ -0,0 +1,5 @@
1
+ require 'test_helper'
2
+
3
+ class UserTest < Test::Unit::TestCase
4
+ should_have_callbacks :before_create, :set_name
5
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class UserTest < ActiveSupport::TestCase
4
+
5
+ should_have_callbacks :before_create, :set_name
6
+
7
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: test_unit_extend
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Philippe Cantin
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-15 00:00:00 +01:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: "Provide extensions to Test::Unit. #before_test, #should_have_callbcks ...."
23
+ email:
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files:
29
+ - README.rdoc
30
+ files:
31
+ - lib/before_test.rb
32
+ - lib/should_have_callbacks.rb
33
+ - lib/test_unit_extend.rb
34
+ - README.rdoc
35
+ - test/models/user.rb
36
+ - test/test_before_test.rb
37
+ - test/test_before_test_with_active_support.rb
38
+ - test/test_helper.rb
39
+ - test/test_should_have_callbacks.rb
40
+ - test/test_should_have_callbacks_with_active_support.rb
41
+ has_rdoc: true
42
+ homepage: http://github.com/anoiaque/test_unit_extend
43
+ licenses: []
44
+
45
+ post_install_message:
46
+ rdoc_options: []
47
+
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ hash: 3
56
+ segments:
57
+ - 0
58
+ version: "0"
59
+ required_rubygems_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ hash: 3
65
+ segments:
66
+ - 0
67
+ version: "0"
68
+ requirements: []
69
+
70
+ rubyforge_project:
71
+ rubygems_version: 1.3.7
72
+ signing_key:
73
+ specification_version: 3
74
+ summary: "Provide extensions to Test::Unit. #before_test, #should_have_callbcks ...."
75
+ test_files:
76
+ - test/models/user.rb
77
+ - test/test_before_test.rb
78
+ - test/test_before_test_with_active_support.rb
79
+ - test/test_helper.rb
80
+ - test/test_should_have_callbacks.rb
81
+ - test/test_should_have_callbacks_with_active_support.rb