Fingertips-on-test-spec 0.1.2 → 0.2.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/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :minor: 2
3
+ :patch: 0
4
+ :major: 0
@@ -1,36 +1,84 @@
1
1
  require 'test/spec'
2
2
 
3
+ require 'active_support/test_case'
4
+
5
+ require 'active_record'
6
+ require 'active_record/test_case'
7
+
8
+ require 'action_controller'
9
+ require 'action_controller/test_case'
10
+
11
+ require 'action_view'
12
+ require 'action_view/test_case'
13
+
14
+ %w(test_spec_ext spec_responder expectations).each { |lib| require "test/spec/rails/#{lib}" }
15
+ Dir[File.dirname(__FILE__) + '/rails/**/*_helpers.rb'].each { |lib| require lib }
16
+
3
17
  module Test
4
18
  module Spec
5
19
  module Rails
6
- module Assertions
7
- include ActiveSupport::Testing::Assertions
8
- include ActionController::TestCase::Assertions
20
+ def self.extract_test_case_args(args)
21
+ name = args.map { |a| a.to_s }.join(' ')
22
+ class_to_test = args.find { |a| a.is_a?(Module) }
23
+ superclass = test_case_for_class(class_to_test)
24
+ [name, class_to_test, superclass]
25
+ end
26
+
27
+ def self.test_case_for_class(klass)
28
+ if klass
29
+ if klass.ancestors.include?(ActiveRecord::Base)
30
+ ActiveRecord::TestCase
31
+ elsif klass.ancestors.include?(ActionController::Base)
32
+ ActionController::TestCase
33
+ elsif !klass.is_a?(Class) && klass.to_s.ends_with?('Helper')
34
+ ActionView::TestCase
35
+ end
36
+ end || ActiveSupport::TestCase
9
37
  end
10
- end
11
-
12
- class Should
13
- include Rails::Assertions
14
- end
15
-
16
- class ShouldNot
17
- include Rails::Assertions
18
38
  end
19
39
  end
20
40
  end
21
41
 
22
- %w(test_spec_ext spec_responder expectations).each { |lib| require "test/spec/rails/#{lib}" }
23
- Dir[File.dirname(__FILE__) + '/rails/**/*_helpers.rb'].each { |lib| require lib }
24
-
25
42
  module Kernel
26
43
  alias :context_before_on_test_spec :context
27
44
  alias :xcontext_before_on_test_spec :xcontext
28
45
 
29
- def context(name, superclass=ActiveSupport::TestCase, klass=Test::Spec::TestCase, &block)
30
- context_before_on_test_spec(name, superclass, klass, &block)
46
+ # Creates a new test case.
47
+ #
48
+ # The description of the test case, can consist from strings and/or the class
49
+ # that's to be tested.
50
+ #
51
+ # If the class inherits from ActiveRecord::Base, ActiveRecord::TestCase will
52
+ # be used as the test case superclass. In the case of a class which inherits
53
+ # from ActionController::Base, ActionController::TestCase will be used. And
54
+ # when given a module which name ends with “Helper”, ActionView::TestCase
55
+ # will be used. In the latter two cases, the test case will be setup for the
56
+ # class that's to be tested.
57
+ #
58
+ # In all other cases the test case superclass will be ActiveSupport::TestCase.
59
+ #
60
+ # Examples:
61
+ #
62
+ # describe Member do # "Member"
63
+ # ...
64
+ # end
65
+ #
66
+ # describe 'On a', MembersController do # "On a MembersController"
67
+ # ...
68
+ # end
69
+ #
70
+ # describe 'The', MembersHelper, ', concerning dates' do # "The MembersHelper, concerning dates"
71
+ # ...
72
+ # end
73
+ def context(*args, &block)
74
+ name, class_to_test, superclass = Test::Spec::Rails.extract_test_case_args(args)
75
+ spec = context_before_on_test_spec(name, superclass) { tests class_to_test if respond_to?(:tests) }
76
+ spec.testcase.class_eval(&block)
77
+ spec
31
78
  end
32
79
 
33
- def xcontext(name, superclass=ActiveSupport::TestCase, &block)
80
+ def xcontext(*args, &block)
81
+ name, _, superclass = Test::Spec::Rails.extract_test_case_args(args)
34
82
  xcontext_before_on_test_spec(name, superclass, &block)
35
83
  end
36
84
 
@@ -8,4 +8,4 @@ module Test
8
8
  end
9
9
  end
10
10
 
11
- ActiveSupport::TestCase.send(:include, Test::Spec::Rails::RequestHelpers)
11
+ ActionController::TestCase.send(:include, Test::Spec::Rails::RequestHelpers)
@@ -39,4 +39,4 @@ module Test
39
39
  end
40
40
  end
41
41
 
42
- ActiveSupport::TestCase.send(:include, Test::Spec::Rails::ResponseHelpers)
42
+ ActionController::TestCase.send(:include, Test::Spec::Rails::ResponseHelpers)
data/on-test-spec.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{on-test-spec}
8
- s.version = "0.1.2"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Manfred Stienstra", "Eloy Duran", "Cristi Balan"]
12
- s.date = %q{2009-08-24}
12
+ s.date = %q{2009-09-11}
13
13
  s.description = %q{Rails plugin to make testing Rails on test/spec easier.}
14
14
  s.email = %q{eloy.de.enige@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -21,11 +21,10 @@ Gem::Specification.new do |s|
21
21
  "LICENSE",
22
22
  "README",
23
23
  "Rakefile",
24
- "VERSION",
24
+ "VERSION.yml",
25
25
  "dot.autotest",
26
26
  "lib/test/spec/add_allow_switch.rb",
27
27
  "lib/test/spec/rails.rb",
28
- "lib/test/spec/rails/controller_helpers.rb",
29
28
  "lib/test/spec/rails/expectations.rb",
30
29
  "lib/test/spec/rails/macros.rb",
31
30
  "lib/test/spec/rails/macros/authorization.rb",
@@ -36,23 +35,26 @@ Gem::Specification.new do |s|
36
35
  "lib/test/spec/share.rb",
37
36
  "on-test-spec.gemspec",
38
37
  "test/add_allow_switch_test.rb",
38
+ "test/controller_helpers_test.rb",
39
39
  "test/expectations_test.rb",
40
40
  "test/macros/authorization_test.rb",
41
41
  "test/macros/base_test.rb",
42
+ "test/rails_test.rb",
42
43
  "test/share_test.rb",
43
44
  "test/test_helper.rb"
44
45
  ]
45
- s.has_rdoc = true
46
46
  s.homepage = %q{http://github.com/Fingertips/on-test-spec}
47
47
  s.rdoc_options = ["--charset=UTF-8"]
48
48
  s.require_paths = ["lib"]
49
- s.rubygems_version = %q{1.3.2}
49
+ s.rubygems_version = %q{1.3.5}
50
50
  s.summary = %q{Rails plugin to make testing Rails on test/spec easier.}
51
51
  s.test_files = [
52
52
  "test/add_allow_switch_test.rb",
53
+ "test/controller_helpers_test.rb",
53
54
  "test/expectations_test.rb",
54
55
  "test/macros/authorization_test.rb",
55
56
  "test/macros/base_test.rb",
57
+ "test/rails_test.rb",
56
58
  "test/share_test.rb",
57
59
  "test/test_helper.rb"
58
60
  ]
@@ -1,9 +1,5 @@
1
- require 'rubygems' rescue LoadError
2
-
3
- require 'test/spec'
4
- require 'mocha'
5
-
6
- require File.expand_path('../../lib/test/spec/add_allow_switch', __FILE__)
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'test/spec/add_allow_switch'
7
3
 
8
4
  module Factory
9
5
  def self.run
@@ -0,0 +1,29 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'test/spec/rails/request_helpers'
3
+ require 'test/spec/rails/response_helpers'
4
+
5
+ class ActionControllerClass < ActionController::Base; end
6
+
7
+ describe ActionControllerClass, "response helpers for a controller test" do
8
+ it "should map #status to the response status" do
9
+ expects(:assert_response).with(:success, 'the message')
10
+ status.should.be :success, 'the message'
11
+ end
12
+
13
+ it "should map #template to the response template" do
14
+ expects(:assert_template).with('show', 'the message')
15
+ template.should.be 'show', 'the message'
16
+ end
17
+
18
+ it "should map #layout to the response layout" do
19
+ @response.stubs(:layout).returns('layouts/application')
20
+ expects(:assert_equal).with('application', 'application', 'the message')
21
+ layout.should.be 'application', 'the message'
22
+ end
23
+ end
24
+
25
+ describe ActionControllerClass, "request helpers for a controller test" do
26
+ it "should make @request available as an accessor" do
27
+ request.should.be @request
28
+ end
29
+ end
@@ -1,11 +1,5 @@
1
- require 'rubygems' rescue LoadError
2
- require 'test/spec'
3
- require 'mocha'
4
-
5
- require 'active_support'
6
- require 'active_support/testing/assertions'
7
-
8
- require File.expand_path('../../lib/test/spec/rails/expectations', __FILE__)
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'test/spec/rails'
9
3
 
10
4
  module TestingAssertionsThemselves
11
5
  class << self
@@ -0,0 +1,100 @@
1
+ require File.expand_path("../test_helper", __FILE__)
2
+ require "test/spec/rails"
3
+
4
+ class RegularClass; end
5
+ class ActiveRecordModel < ActiveRecord::Base; end
6
+ class ActionControllerClass < ActionController::Base; end
7
+ module ViewModuleHelper; end
8
+
9
+ CLASS_TO_TESTCASE_MAPPINGS = {
10
+ RegularClass => ActiveSupport::TestCase,
11
+ ActiveRecordModel => ActiveRecord::TestCase,
12
+ ActionControllerClass => ActionController::TestCase,
13
+ ViewModuleHelper => ActionView::TestCase
14
+ }
15
+
16
+ describe "A test case with a traditional, string only, description" do
17
+ test_case = self
18
+
19
+ it "should inherit from ActiveSupport::TestCase" do
20
+ test_case.superclass.should.be ActiveSupport::TestCase
21
+ end
22
+
23
+ it "should have the description given" do
24
+ test_case.name.should ==
25
+ "A test case with a traditional, string only, description"
26
+ end
27
+ end
28
+
29
+ describe "A test case for an", ActionControllerClass do
30
+ test_case = self
31
+
32
+ it "should have the class assigned as the class to test" do
33
+ test_case.controller_class.should.be ActionControllerClass
34
+ @controller.should.be.instance_of ActionControllerClass
35
+ end
36
+ end
37
+
38
+ describe "A test case for a", ViewModuleHelper do
39
+ test_case = self
40
+
41
+ it "should have the module assigned as the module to test" do
42
+ test_case.helper_class.should.be ViewModuleHelper
43
+ test_case.ancestors.should.include ViewModuleHelper
44
+ end
45
+ end
46
+
47
+ CLASS_TO_TESTCASE_MAPPINGS.each do |test_class, expected_test_case|
48
+
49
+ describe test_class do
50
+ test_case = self
51
+
52
+ it "should inherit from #{expected_test_case}" do
53
+ test_case.superclass.should.be expected_test_case
54
+ end
55
+
56
+ it "should use the model class name as the description" do
57
+ test_case.name.should == test_class.to_s
58
+ end
59
+ end
60
+
61
+ describe "A test case with prepended description for", test_class do
62
+ test_case = self
63
+
64
+ it "should inherit from #{expected_test_case}" do
65
+ test_case.superclass.should.be expected_test_case
66
+ end
67
+
68
+ it "should have appended the model class name to the description" do
69
+ test_case.name.should ==
70
+ "A test case with prepended description for #{test_class}"
71
+ end
72
+ end
73
+
74
+ describe test_class, "test case with a model class and an appended description" do
75
+ test_case = self
76
+
77
+ it "should inherit from #{expected_test_case}" do
78
+ test_case.superclass.should.be expected_test_case
79
+ end
80
+
81
+ it "should have prepended the model class name to the description" do
82
+ test_case.name.should ==
83
+ "#{test_class} test case with a model class and an appended description"
84
+ end
85
+ end
86
+
87
+ describe "An", test_class, "test case with a model class and a prepended _and_ appended description" do
88
+ test_case = self
89
+
90
+ it "should inherit from #{expected_test_case}" do
91
+ test_case.superclass.should.be expected_test_case
92
+ end
93
+
94
+ it "should have inserted the model class name in the middle of the description" do
95
+ test_case.name.should ==
96
+ "An #{test_class} test case with a model class and a prepended _and_ appended description"
97
+ end
98
+ end
99
+
100
+ end
data/test/share_test.rb CHANGED
@@ -1,7 +1,5 @@
1
- require 'rubygems' rescue LoadError
2
- require 'test/spec'
3
-
4
- require File.expand_path('../../lib/test/spec/share', __FILE__)
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'test/spec/share'
5
3
 
6
4
  class DummyMock
7
5
  extend SharedSpecsInclusionHelper
data/test/test_helper.rb CHANGED
@@ -2,7 +2,5 @@ require 'rubygems' rescue LoadError
2
2
  require 'test/spec'
3
3
  require 'mocha'
4
4
 
5
- require 'active_support'
6
- require 'active_support/test_case'
7
-
8
- $:.unshift(File.expand_path('../../lib', __FILE__))
5
+ $:.unshift(File.expand_path('../../lib', __FILE__))
6
+ require 'test/spec/rails'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Fingertips-on-test-spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manfred Stienstra
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2009-08-24 00:00:00 -07:00
14
+ date: 2009-09-11 00:00:00 -07:00
15
15
  default_executable:
16
16
  dependencies: []
17
17
 
@@ -29,11 +29,10 @@ files:
29
29
  - LICENSE
30
30
  - README
31
31
  - Rakefile
32
- - VERSION
32
+ - VERSION.yml
33
33
  - dot.autotest
34
34
  - lib/test/spec/add_allow_switch.rb
35
35
  - lib/test/spec/rails.rb
36
- - lib/test/spec/rails/controller_helpers.rb
37
36
  - lib/test/spec/rails/expectations.rb
38
37
  - lib/test/spec/rails/macros.rb
39
38
  - lib/test/spec/rails/macros/authorization.rb
@@ -44,12 +43,14 @@ files:
44
43
  - lib/test/spec/share.rb
45
44
  - on-test-spec.gemspec
46
45
  - test/add_allow_switch_test.rb
46
+ - test/controller_helpers_test.rb
47
47
  - test/expectations_test.rb
48
48
  - test/macros/authorization_test.rb
49
49
  - test/macros/base_test.rb
50
+ - test/rails_test.rb
50
51
  - test/share_test.rb
51
52
  - test/test_helper.rb
52
- has_rdoc: true
53
+ has_rdoc: false
53
54
  homepage: http://github.com/Fingertips/on-test-spec
54
55
  licenses:
55
56
  post_install_message:
@@ -78,8 +79,10 @@ specification_version: 3
78
79
  summary: Rails plugin to make testing Rails on test/spec easier.
79
80
  test_files:
80
81
  - test/add_allow_switch_test.rb
82
+ - test/controller_helpers_test.rb
81
83
  - test/expectations_test.rb
82
84
  - test/macros/authorization_test.rb
83
85
  - test/macros/base_test.rb
86
+ - test/rails_test.rb
84
87
  - test/share_test.rb
85
88
  - test/test_helper.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.2
@@ -1,40 +0,0 @@
1
- require 'action_controller/test_case'
2
-
3
- module Test
4
- module Spec
5
- module Rails
6
- module Controller
7
- module ClassMethods
8
- # Sets up the test environment before every functional test
9
- def tests(controller_class)
10
- setups << lambda { setup_request_environment(controller_class) }
11
- end
12
- end
13
- module InstanceMethods
14
- include ActionController::TestProcess
15
- include ActionController::TestCase::Assertions
16
-
17
- attr_reader :controller
18
-
19
- # Sets up the test environment for functional tests
20
- def setup_request_environment(controller_class)
21
- controller_class.class_eval do
22
- def rescue_action(e)
23
- raise e
24
- end
25
- end
26
- @controller = controller_class.new
27
- @controller.request = @request = ActionController::TestRequest.new
28
- @response = ActionController::TestResponse.new
29
-
30
- @controller.params = {}
31
- @controller.send(:initialize_current_url)
32
- end
33
- end
34
- end
35
- end
36
- end
37
- end
38
-
39
- ActiveSupport::TestCase.send(:extend, Test::Spec::Rails::Controller::ClassMethods)
40
- ActiveSupport::TestCase.send(:include, Test::Spec::Rails::Controller::InstanceMethods)