on-test-spec 0.2.4

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.
@@ -0,0 +1,42 @@
1
+ module Test
2
+ module Spec
3
+ module Rails
4
+ class Status < SpecResponder
5
+ def should_equal(status, message=nil)
6
+ @test_case.send(:assert_response, status, message)
7
+ end
8
+ end
9
+
10
+ class Template < SpecResponder
11
+ def should_equal(template, message=nil)
12
+ @test_case.send(:assert_template, template, message)
13
+ end
14
+ end
15
+
16
+ class Layout < SpecResponder
17
+ def should_equal(layout, message=nil)
18
+ rendered_layout = @test_case.response.layout.gsub(/layouts\//, '')
19
+ @test_case.send(:assert_equal, layout, rendered_layout, message)
20
+ end
21
+ end
22
+
23
+ module ResponseHelpers
24
+ attr_reader :response
25
+
26
+ def status
27
+ Test::Spec::Rails::Status.new(self)
28
+ end
29
+
30
+ def template
31
+ Test::Spec::Rails::Template.new(self)
32
+ end
33
+
34
+ def layout
35
+ Test::Spec::Rails::Layout.new(self)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ ActionController::TestCase.send(:include, Test::Spec::Rails::ResponseHelpers)
@@ -0,0 +1,12 @@
1
+ module Test
2
+ module Spec
3
+ module Rails
4
+ class SpecResponder
5
+ attr_accessor :test_case
6
+ def initialize(test_case)
7
+ self.test_case = test_case
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,37 @@
1
+ class Test::Spec::Should
2
+ alias :_test_spec_equal :equal
3
+ def equal(*args)
4
+ @object.respond_to?(:should_equal) ? @object.should_equal(*args) : _test_spec_equal(*args)
5
+ end
6
+
7
+ alias :_test_spec_be :be
8
+ def be(*args)
9
+ @object.respond_to?(:should_equal) ? @object.should_equal(*args) : _test_spec_be(*args)
10
+ end
11
+ end
12
+
13
+ class Test::Spec::ShouldNot
14
+ alias :_test_spec_equal :equal
15
+ def equal(*args)
16
+ @object.respond_to?(:should_not_equal) ? @object.should_not_equal(*args) : _test_spec_equal(*args)
17
+ end
18
+
19
+ alias :_test_spec_be :be
20
+ def be(*args)
21
+ @object.respond_to?(:should_not_equal) ? @object.should_not_equal(*args) : _test_spec_be(*args)
22
+ end
23
+ end
24
+
25
+ module Test
26
+ module Spec
27
+ module ExpectationExt
28
+ # Returns the current test case instance. Use this to call assert methods on.
29
+ def test_case
30
+ $TEST_SPEC_TESTCASE
31
+ end
32
+ end
33
+
34
+ Should.send(:include, ExpectationExt)
35
+ ShouldNot.send(:include, ExpectationExt)
36
+ end
37
+ end
@@ -0,0 +1,89 @@
1
+ require 'test/spec'
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
+
17
+ module Test
18
+ module Spec
19
+ module Rails
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
37
+ end
38
+ end
39
+ end
40
+ end
41
+
42
+ module Kernel
43
+ alias :context_before_on_test_spec :context
44
+ alias :xcontext_before_on_test_spec :xcontext
45
+
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
78
+ end
79
+
80
+ def xcontext(*args, &block)
81
+ name, _, superclass = Test::Spec::Rails.extract_test_case_args(args)
82
+ xcontext_before_on_test_spec(name, superclass, &block)
83
+ end
84
+
85
+ private :context, :xcontext
86
+
87
+ alias :describe :context
88
+ alias :xdescribe :xcontext
89
+ end
@@ -0,0 +1,48 @@
1
+ $shared_specs = {}
2
+
3
+ module Kernel
4
+ # Stores the passed in block for inclusion in test cases.
5
+ #
6
+ # share "User" do
7
+ # it "should authenticate" do
8
+ # "me".should == "me"
9
+ # end
10
+ # end
11
+ #
12
+ # describe "User, in general" do
13
+ # shared_specs_for 'User'
14
+ # end
15
+ #
16
+ # describe "User, in another case" do
17
+ # shared_specs_for 'User'
18
+ # end
19
+ #
20
+ # 2 tests, 2 assertions, 0 failures, 0 errors
21
+ def share(name, &specs_block)
22
+ $shared_specs[name] = specs_block
23
+ end
24
+ end
25
+
26
+ module SharedSpecsInclusionHelper
27
+ # Include the specified shared specs in this test case.
28
+ #
29
+ # share "User" do
30
+ # it "should authenticate" do
31
+ # "me".should == "me"
32
+ # end
33
+ # end
34
+ #
35
+ # describe "User, in general" do
36
+ # shared_specs_for 'User'
37
+ # end
38
+ #
39
+ # describe "User, in another case" do
40
+ # shared_specs_for 'User'
41
+ # end
42
+ #
43
+ # 2 tests, 2 assertions, 0 failures, 0 errors
44
+ def shared_specs_for(name)
45
+ self.class_eval &$shared_specs[name]
46
+ end
47
+ end
48
+ Test::Unit::TestCase.send(:extend, SharedSpecsInclusionHelper)
@@ -0,0 +1,74 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{on-test-spec}
8
+ s.version = "0.2.3"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Manfred Stienstra", "Eloy Duran", "Cristi Balan"]
12
+ s.date = %q{2009-09-24}
13
+ s.description = %q{Rails plugin to make testing Rails on test/spec easier.}
14
+ s.email = %q{eloy.de.enige@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE",
17
+ "README"
18
+ ]
19
+ s.files = [
20
+ ".gitignore",
21
+ "LICENSE",
22
+ "README",
23
+ "Rakefile",
24
+ "VERSION.yml",
25
+ "dot.autotest",
26
+ "lib/test/spec/add_allow_switch.rb",
27
+ "lib/test/spec/rails.rb",
28
+ "lib/test/spec/rails/controller_helpers.rb",
29
+ "lib/test/spec/rails/expectations.rb",
30
+ "lib/test/spec/rails/macros.rb",
31
+ "lib/test/spec/rails/macros/authorization.rb",
32
+ "lib/test/spec/rails/request_helpers.rb",
33
+ "lib/test/spec/rails/response_helpers.rb",
34
+ "lib/test/spec/rails/spec_responder.rb",
35
+ "lib/test/spec/rails/test_spec_ext.rb",
36
+ "lib/test/spec/share.rb",
37
+ "on-test-spec.gemspec",
38
+ "test/add_allow_switch_test.rb",
39
+ "test/controller_helpers_test.rb",
40
+ "test/expectations_test.rb",
41
+ "test/macros/authorization_test.rb",
42
+ "test/macros/base_test.rb",
43
+ "test/rails_test.rb",
44
+ "test/share_test.rb",
45
+ "test/test_helper.rb",
46
+ "test/test_spec_ext_test.rb"
47
+ ]
48
+ s.homepage = %q{http://github.com/Fingertips/on-test-spec}
49
+ s.rdoc_options = ["--charset=UTF-8"]
50
+ s.require_paths = ["lib"]
51
+ s.rubygems_version = %q{1.3.5}
52
+ s.summary = %q{Rails plugin to make testing Rails on test/spec easier.}
53
+ s.test_files = [
54
+ "test/add_allow_switch_test.rb",
55
+ "test/controller_helpers_test.rb",
56
+ "test/expectations_test.rb",
57
+ "test/macros/authorization_test.rb",
58
+ "test/macros/base_test.rb",
59
+ "test/rails_test.rb",
60
+ "test/share_test.rb",
61
+ "test/test_helper.rb",
62
+ "test/test_spec_ext_test.rb"
63
+ ]
64
+
65
+ if s.respond_to? :specification_version then
66
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
67
+ s.specification_version = 3
68
+
69
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
70
+ else
71
+ end
72
+ else
73
+ end
74
+ end
@@ -0,0 +1,100 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'test/spec/add_allow_switch'
3
+
4
+ module Factory
5
+ def self.run
6
+ true
7
+ end
8
+ end
9
+ Factory.add_allow_switch :run, :default => true
10
+
11
+ describe "Factory with an allow switch on run" do
12
+ it "should alias the original method" do
13
+ Factory.respond_to?(:original_run, include_private=true).should == true
14
+ end
15
+
16
+ it "should define a getter and setter" do
17
+ Factory.should.respond_to(:allow_run)
18
+ Factory.should.respond_to(:allow_run=)
19
+ end
20
+
21
+ it "should switch off" do
22
+ Factory.allow_run = false
23
+ lambda {
24
+ Factory.run
25
+ }.should.raise(RuntimeError)
26
+ end
27
+
28
+ it "should switch on" do
29
+ Factory.allow_run = true
30
+ lambda {
31
+ Factory.run.should == true
32
+ }.should.not.raise
33
+ end
34
+ end
35
+
36
+ class Bunny
37
+ def hop
38
+ 'Hop hop!'
39
+ end
40
+ end
41
+ Bunny.add_allow_switch :hop
42
+
43
+ describe "Bunny with an allow switch on hop" do
44
+ before do
45
+ @bunny = Bunny.new
46
+ end
47
+
48
+ it "should alias the original method" do
49
+ @bunny.respond_to?(:original_hop).should == true
50
+ end
51
+
52
+ it "should define a getter and setter" do
53
+ Bunny.should.respond_to(:allow_hop)
54
+ Bunny.should.respond_to(:allow_hop=)
55
+ end
56
+
57
+ it "should switch off" do
58
+ Bunny.allow_hop = false
59
+ lambda {
60
+ @bunny.hop
61
+ }.should.raise(RuntimeError)
62
+ end
63
+
64
+ it "should switch on" do
65
+ Bunny.allow_hop = true
66
+ lambda {
67
+ @bunny.hop.should == 'Hop hop!'
68
+ }.should.not.raise
69
+ end
70
+ end
71
+
72
+
73
+ Kernel.add_allow_switch :system
74
+
75
+ describe "Kernel with an allow switch on system" do
76
+ SILENT_COMMANT = 'ls > /dev/null'
77
+
78
+ it "should alias the original method" do
79
+ Kernel.respond_to?(:original_system, include_private=true).should == true
80
+ end
81
+
82
+ it "should define a getter and setter" do
83
+ Factory.should.respond_to(:allow_system)
84
+ Factory.should.respond_to(:allow_system=)
85
+ end
86
+
87
+ it "should switch off" do
88
+ Kernel.allow_system = false
89
+ lambda {
90
+ Kernel.system(SILENT_COMMANT)
91
+ }.should.raise(RuntimeError)
92
+ end
93
+
94
+ it "should switch on" do
95
+ Kernel.allow_system = true
96
+ lambda {
97
+ Kernel.system(SILENT_COMMANT)
98
+ }.should.not.raise
99
+ end
100
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+ require 'test/spec/rails/request_helpers'
3
+ require 'test/spec/rails/response_helpers'
4
+ require 'test/spec/rails/controller_helpers'
5
+
6
+ class ActionControllerClass < ActionController::Base; end
7
+
8
+ describe ActionControllerClass, "response helpers for a controller test" do
9
+ it "should map #controller to the controller instance" do
10
+ controller.should == @controller
11
+ end
12
+
13
+ it "should map #status to the response status" do
14
+ expects(:assert_response).with(:success, 'the message')
15
+ status.should.be :success, 'the message'
16
+ end
17
+
18
+ it "should map #template to the response template" do
19
+ expects(:assert_template).with('show', 'the message')
20
+ template.should.be 'show', 'the message'
21
+ end
22
+
23
+ it "should map #layout to the response layout" do
24
+ @response.stubs(:layout).returns('layouts/application')
25
+ expects(:assert_equal).with('application', 'application', 'the message')
26
+ layout.should.be 'application', 'the message'
27
+ end
28
+ end
29
+
30
+ describe ActionControllerClass, "request helpers for a controller test" do
31
+ it "should make @request available as an accessor" do
32
+ request.should.be @request
33
+ end
34
+ end