coulda 0.6.3 → 0.7.1

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/Gemfile CHANGED
@@ -2,3 +2,4 @@ source "http://rubygems.org"
2
2
 
3
3
  gem 'shoulda'
4
4
  gem 'rr'
5
+ gem 'yourdsl', '~> 0.7'
@@ -3,6 +3,7 @@ GEM
3
3
  specs:
4
4
  rr (1.0.2)
5
5
  shoulda (2.11.3)
6
+ yourdsl (0.7.1)
6
7
 
7
8
  PLATFORMS
8
9
  ruby
@@ -10,3 +11,4 @@ PLATFORMS
10
11
  DEPENDENCIES
11
12
  rr
12
13
  shoulda
14
+ yourdsl (~> 0.7)
data/HISTORY CHANGED
@@ -104,3 +104,7 @@ Cleanup
104
104
  -----
105
105
  - Renamed #pending to #coulda_pending to avoid conflicts with Rails 3
106
106
  - Failing test in this release as I stupidly began working on some new features in the master branch. Don't use the new features (they're not documented outside of the new tests) and you'll be fine. ;-)
107
+
108
+ 0.7.0
109
+ -----
110
+ - Significant refactoring using my branch of lispy (https://github.com/elight/lispy)
@@ -57,4 +57,4 @@ Thanks to
57
57
  ---------
58
58
  * David Chelimsky and Jim Weirich for turning me into the test-obsessed developer that I am.
59
59
  * Timothy King for putting up with my scotch-powered rambling while working on v0.4.0
60
- * We Are Titans (http://www.wearetitans.net/) for sponsoring v0.4.0 on up
60
+ * We Are Titans (http://www.wearetitans.net/) for sponsoring v0.4.0 through 0.5.5
data/Rakefile CHANGED
@@ -2,6 +2,9 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'rake/testtask'
4
4
 
5
+ require File.join(File.dirname(__FILE__), 'lib', 'coulda', 'tasks')
6
+
7
+
5
8
  gem 'shoulda'
6
9
  require 'shoulda'
7
10
 
Binary file
@@ -5,16 +5,16 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{coulda}
8
- s.version = "0.6.3"
8
+ s.version = "0.7.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Evan David Light"]
12
- s.date = %q{2010-12-23}
12
+ s.date = %q{2011-08-08}
13
13
  s.description = %q{Behaviour Driven Development derived from Cucumber but as an internal DSL with methods for reuse}
14
- s.email = %q{evan@tiggerpalace.com}
14
+ s.email = %q{evan@tripledogdare.net}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.rdoc"
17
+ "README.rdoc"
18
18
  ]
19
19
  s.files = Dir.glob('lib/**/*.rb') + Dir.glob('*') + Dir.glob('lib/tasks/**/*.rake')
20
20
  s.homepage = %q{http://coulda.tiggerpalace.com}
@@ -24,6 +24,8 @@ Gem::Specification.new do |s|
24
24
  s.summary = %q{Test::Unit-based acceptance testing DSL}
25
25
  s.test_files = Dir.glob('test/**')
26
26
 
27
+ s.add_dependency('yourdsl', '~> 0.7')
28
+
27
29
  if s.respond_to? :specification_version then
28
30
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
29
31
  s.specification_version = 3
@@ -1,40 +1,32 @@
1
1
  require 'test/unit'
2
+ require 'yourdsl'
2
3
 
3
4
  require File.join(File.dirname(__FILE__), 'coulda', 'world')
4
- require File.join(File.dirname(__FILE__), 'coulda', 'feature')
5
- require File.join(File.dirname(__FILE__), 'coulda', 'scenario')
6
5
  require File.join(File.dirname(__FILE__), 'coulda', 'pending')
7
6
  require File.join(File.dirname(__FILE__), 'coulda', 'vendor', 'constantize')
8
7
  require File.join(File.dirname(__FILE__), 'coulda', 'vendor', 'underscore')
9
8
  require File.join(File.dirname(__FILE__), 'coulda', 'tasks')
10
9
 
11
10
  module Coulda
12
- SyntaxError = Class.new(StandardError)
11
+ PROC_KEYWORDS = [:Given, :When, :Then, :And]
12
+ KEYWORDS = [:Scenario, :Tag, :in_order_to, :as_a, :i_want_to] + PROC_KEYWORDS
13
13
 
14
- def Tag(name)
15
- @feature_tags ||= []
16
- @feature_tags << name.to_s
17
- end
14
+ SyntaxError = Class.new(StandardError)
18
15
 
19
16
  # Factory method for Test::Unit::TestCase subclasses
20
17
  def Feature(name, opts = {}, &block)
21
- process_command_line_tags
18
+ test_class = Class.new(opts[:testcase_class] || Coulda.default_testcase_class || Test::Unit::TestCase)
22
19
 
23
- if @requested_tags && !@requested_tags.empty?
24
- if @feature_tags.nil? || !@feature_tags.any? { |f_tag| @requested_tags.include? f_tag}
25
- @feature_tags = nil
26
- return
27
- end
20
+ assign_class_to_const test_class, name
21
+ test_class.instance_eval do
22
+ extend YourDSL
23
+ record_your_dsl :only => Coulda::KEYWORDS, :retain_blocks_for => Coulda::PROC_KEYWORDS
28
24
  end
29
- @feature_tags = nil
25
+ test_class.instance_eval &block if block_given?
30
26
 
31
- test_class = Class.new(opts[:testcase_class] || Coulda.default_testcase_class || Test::Unit::TestCase)
32
- World.register_feature(test_class, name)
33
-
34
- Coulda::assign_class_to_const test_class, name
35
- test_class.class_eval &block if block_given?
36
- test_class.assert_presence_of_intent
27
+ World.register_feature(name, test_class.output)
37
28
 
29
+ generate_test_methods_from test_class
38
30
 
39
31
  test_class
40
32
  end
@@ -50,6 +42,8 @@ module Coulda
50
42
  @class
51
43
  end
52
44
 
45
+ private
46
+
53
47
  def assign_class_to_const(test_class, potential_const)
54
48
  base_name = potential_const
55
49
  if potential_const !~ /^[a-zA-Z]/
@@ -59,15 +53,40 @@ module Coulda
59
53
  Object.const_set(titleized_underscored_name, test_class)
60
54
  end
61
55
 
62
- def process_command_line_tags
63
- unless @processed_cmd_line_args
64
- @processed_cmd_line_args = true
65
- tags = ARGV.inject([]) { |m, a| m << a if a =~ /^tags=/; m }
66
- @requested_tags = tags.map { |t| t.split("=")[1].split(",") }.flatten
56
+ def generate_test_methods_from(test_class)
57
+ return unless test_class.output && test_class.output.expressions
58
+
59
+ test_class.output.expressions.each do |sexp|
60
+ next unless sexp.symbol == :Scenario
61
+ generate_test_method :for_scenario => sexp, :in_class => test_class
67
62
  end
68
63
  end
69
- end
70
64
 
71
- include ::Coulda
65
+ def generate_test_method(args = {})
66
+ scenario, test_class = args[:for_scenario], args[:in_class]
67
+ file_name = test_class.output.file
72
68
 
69
+ test_class.send(:define_method,"test_#{scenario.args.downcase.super_custom_underscore}") do
70
+ if scenario.scope.nil?
71
+ coulda_pending "Scenario '#{scenario.args}' in #{file_name}:#{scenario.lineno}"
72
+ else
73
+ execute_test_steps :for_scenario => scenario, :in_class => test_class
74
+ end
75
+ end
76
+ end
77
+
78
+ def execute_test_steps(args = {})
79
+ scenario, test_class = args[:for_scenario], args[:in_class]
80
+ file_name = test_class.output.file
81
+
82
+ scenario.scope.expressions.each do |step_sexp|
83
+ if step_sexp.proc.nil?
84
+ coulda_pending "Scenario '#{scenario.args}': #{step_sexp.symbol} '#{step_sexp.args} in #{file_name}:#{step_sexp.lineno}"
85
+ else
86
+ instance_eval &step_sexp.proc
87
+ end
88
+ end
89
+ end
90
+ end
73
91
 
92
+ include ::Coulda
@@ -2,9 +2,7 @@ module Test
2
2
  module Unit
3
3
  class TestCase
4
4
  @@pending_cases = []
5
- @@error_contexts = []
6
- @@pending_at_exit = false
7
- @@exception_at_exit = false
5
+ @@at_exit = false
8
6
 
9
7
  # Loosely based upon Jeremy McAnally's pending
10
8
 
@@ -21,31 +19,6 @@ module Test
21
19
  end
22
20
  end
23
21
  end
24
-
25
- def handle_exception(e, params = {})
26
- stmt = params[:for_statement]
27
-
28
- print "E"
29
- @@error_contexts << params.merge(:exception => e)
30
-
31
- @@exception_at_exit ||= begin
32
- at_exit do
33
- puts
34
- puts "Exceptions"
35
- puts "----------"
36
-
37
- @@error_contexts.each_with_index do |ctx, i|
38
- puts
39
- puts "(#{i+1}) Feature: #{stmt[:scenario].feature.name}"
40
- puts "Scenario: #{stmt[:scenario].name}"
41
- puts "#{stmt[:type]} '#{stmt[:text]}'"
42
- puts "In #{stmt[:file]} on line #{stmt[:line]}"
43
- puts e.backtrace
44
- end
45
- end
46
- end
47
-
48
- end
49
22
  end
50
23
  end
51
24
  end
@@ -1,7 +1,7 @@
1
1
  module Coulda
2
2
  class World
3
- def self.register_feature(feature, name)
4
- (@features ||= []) << [feature, name]
3
+ def self.register_feature(feature, sexp)
4
+ (@features ||= []) << [feature, sexp]
5
5
  end
6
6
 
7
7
  def self.features
@@ -9,32 +9,39 @@ namespace :coulda do
9
9
  require 'test/unit'
10
10
 
11
11
  # bug in test unit. Set to true to stop from running.
12
- Test::Unit.run = true
12
+ unless RUBY_VERSION =~ /^1.9/
13
+ Test::Unit.run = true
14
+ end
13
15
 
14
- require 'coulda'
15
16
 
16
17
  test_files = Dir.glob(File.join('test', '**', '*_test.rb'))
17
18
  test_files.each do |file|
18
19
  load file
19
20
  end
20
21
 
21
- Coulda::World.features.each do |feature, name|
22
+ Coulda::World.features.each do |name, output|
22
23
  puts "Feature: #{name}"
23
- puts " In order to #{feature.in_order_to}" if feature.in_order_to
24
- puts " As a #{feature.as_a}" if feature.as_a
25
- puts " I want to #{feature.i_want_to}" if feature.i_want_to
26
- feature.scenarios.each do |scenario|
27
- puts
28
- print " "
29
- print "(**PENDING**) " if scenario.pending?
30
- puts "Scenario: #{scenario.name}"
31
- scenario.statements.each do |stmt|
32
- print " "
33
- print "(**PENDING**) " unless stmt[:block]
34
- puts "#{stmt[:type].to_s} #{stmt[:text]}"
24
+ output.expressions.each do |sexp|
25
+ case sexp.symbol
26
+ when :in_order_to
27
+ puts " In order to #{sexp.args}"
28
+ when :as_a
29
+ puts " As a #{sexp.args}"
30
+ when :i_want_to
31
+ puts " I want to #{sexp.args}"
32
+ when :Scenario
33
+ puts
34
+ print " "
35
+ print "(**PENDING**) " if sexp.scope.nil? || sexp.scope.expressions.any? { |step| step.proc.nil? }
36
+ puts "Scenario: #{sexp.args}"
37
+ sexp.scope.expressions.each do |step|
38
+ print " "
39
+ print "(**PENDING**) " unless step.proc
40
+ puts "#{step.symbol} #{step.args}"
41
+ end
42
+ puts
35
43
  end
36
44
  end
37
- puts
38
45
  end
39
46
  end
40
47
  end
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class FeatureTest < Test::Unit::TestCase
4
-
5
4
  should "be able to specify a default TestCase class to subclass for all Features" do
6
5
  MyTestCase = Class.new(Test::Unit::TestCase)
7
6
  Coulda.default_testcase_class = MyTestCase
@@ -25,7 +24,7 @@ class FeatureTest < Test::Unit::TestCase
25
24
  @@counter = 1
26
25
  setup do
27
26
  @feature = Feature "foobarblech#{@@counter}" do
28
- Scenario "" do
27
+ Scenario "ohai" do
29
28
  Given "" do; end
30
29
  Then "" do; end
31
30
  end
@@ -37,55 +36,8 @@ class FeatureTest < Test::Unit::TestCase
37
36
  assert @feature.ancestors.include? Test::Unit::TestCase
38
37
  end
39
38
 
40
- %w[Given When Then And].each do |condition|
41
- should "have a method called '#{condition}'" do
42
- assert(@feature.respond_to?(condition))
43
- end
44
- end
45
-
46
- context "that calls in_order_to, as_a, and i_want_to" do
47
- should "not raise syntax error" do
48
- assert_nothing_raised do
49
- Feature "one" do
50
- in_order_to "foo"
51
- as_a "bar"
52
- i_want_to "blech"
53
- end
54
- end
55
- end
56
- end
57
-
58
- context "that calls as_a and i_want_to" do
59
- should "raise syntax error because in_order_to was not called once" do
60
- assert_raise Coulda::SyntaxError do
61
- Feature "two" do
62
- as_a "bar"
63
- i_want_to "blech"
64
- end
65
- end
66
- end
67
- end
68
-
69
- context "that calls in_order_to and i_want_to" do
70
- should "raise syntax error because as_a was not called once" do
71
- assert_raise Coulda::SyntaxError do
72
- Feature "three" do
73
- in_order_to "foo"
74
- i_want_to "blech"
75
- end
76
- end
77
- end
78
- end
79
-
80
- context "that calls in_order_to and as_a" do
81
- should "raise syntax error because i_want_to was not called once" do
82
- assert_raise Coulda::SyntaxError do
83
- Feature "four" do
84
- in_order_to "foo"
85
- as_a "bar"
86
- end
87
- end
88
- end
39
+ should "have a method test_ohai" do
40
+ assert @feature.instance_methods.include? :test_ohai
89
41
  end
90
42
 
91
43
  context "without scenarios" do
@@ -101,35 +53,5 @@ class FeatureTest < Test::Unit::TestCase
101
53
  assert @feature_without_scenarios.instance_methods.grep(/^test_/).empty?
102
54
  end
103
55
  end
104
-
105
- context "that does not have any errors" do
106
- setup do
107
- @feature_without_errors = Feature @@counter.to_s do
108
- in_order_to "foo"
109
- as_a "bar"
110
- i_want_to "blech"
111
- end
112
- end
113
-
114
- ### Integration tests
115
-
116
- context "with a block containing a scenario" do
117
- should "create a Feature instance method named 'test_<underscored_feature_name>_<underscored_scenario_name>'" do
118
- @feature_without_errors.Scenario("pending scenario") {}
119
- test_name = "test_pending_scenario"
120
- test_name = test_name.to_sym if RUBY_VERSION =~ /^1.9/
121
- assert(@feature_without_errors.instance_methods.include?(test_name), "Test is missing test method from scenario")
122
- end
123
-
124
- should "create a Scenario" do
125
- @feature_without_errors.Scenario "pending scenario"
126
- end
127
-
128
- should "include the created Scenario in the return value of the 'scenarios' method" do
129
- scenario = @feature_without_errors.Scenario "pending scenario"
130
- assert(@feature_without_errors.scenarios.include?(scenario), "feature.scenarios doesn't contain the expected Scenario object")
131
- end
132
- end
133
- end
134
56
  end
135
57
  end
@@ -2,7 +2,7 @@ require 'test/unit'
2
2
  require 'rubygems' if RUBY_VERSION != "1.9.1"
3
3
  require 'shoulda'
4
4
 
5
- require 'coulda'
5
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'coulda')
6
6
 
7
7
  include Coulda
8
8
 
metadata CHANGED
@@ -1,42 +1,44 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: coulda
3
- version: !ruby/object:Gem::Version
4
- hash: 1
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 6
9
- - 3
10
- version: 0.6.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.1
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Evan David Light
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2010-12-23 00:00:00 -05:00
12
+ date: 2011-08-08 00:00:00.000000000 -04:00
19
13
  default_executable:
20
- dependencies: []
21
-
22
- description: Behaviour Driven Development derived from Cucumber but as an internal DSL with methods for reuse
23
- email: evan@tiggerpalace.com
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: yourdsl
17
+ requirement: &2153558420 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: '0.7'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *2153558420
26
+ description: Behaviour Driven Development derived from Cucumber but as an internal
27
+ DSL with methods for reuse
28
+ email: evan@tripledogdare.net
24
29
  executables: []
25
-
26
30
  extensions: []
27
-
28
- extra_rdoc_files:
31
+ extra_rdoc_files:
29
32
  - LICENSE
30
33
  - README.rdoc
31
- files:
32
- - lib/coulda/feature.rb
34
+ files:
33
35
  - lib/coulda/pending.rb
34
- - lib/coulda/scenario.rb
35
36
  - lib/coulda/tasks.rb
36
37
  - lib/coulda/vendor/constantize.rb
37
38
  - lib/coulda/vendor/underscore.rb
38
39
  - lib/coulda/world.rb
39
40
  - lib/coulda.rb
41
+ - coulda-0.6.3.gem
40
42
  - coulda.gemspec
41
43
  - Gemfile
42
44
  - Gemfile.lock
@@ -48,43 +50,33 @@ files:
48
50
  - lib/tasks/print_features.rake
49
51
  - lib/tasks/tagged_tests.rake
50
52
  - test/feature_test.rb
51
- - test/scenario_test.rb
52
53
  - test/test_helper.rb
53
54
  has_rdoc: true
54
55
  homepage: http://coulda.tiggerpalace.com
55
56
  licenses: []
56
-
57
57
  post_install_message:
58
- rdoc_options:
58
+ rdoc_options:
59
59
  - --charset=UTF-8
60
- require_paths:
60
+ require_paths:
61
61
  - lib
62
- required_ruby_version: !ruby/object:Gem::Requirement
62
+ required_ruby_version: !ruby/object:Gem::Requirement
63
63
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- hash: 3
68
- segments:
69
- - 0
70
- version: "0"
71
- required_rubygems_version: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
69
  none: false
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- hash: 3
77
- segments:
78
- - 0
79
- version: "0"
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
80
74
  requirements: []
81
-
82
75
  rubyforge_project:
83
- rubygems_version: 1.3.7
76
+ rubygems_version: 1.6.2
84
77
  signing_key:
85
78
  specification_version: 3
86
79
  summary: Test::Unit-based acceptance testing DSL
87
- test_files:
80
+ test_files:
88
81
  - test/feature_test.rb
89
- - test/scenario_test.rb
90
82
  - test/test_helper.rb
@@ -1,65 +0,0 @@
1
- module Test
2
- module Unit
3
- class TestCase
4
- include Coulda
5
-
6
- def self.scenarios
7
- @scenarios ||= []
8
- @scenarios
9
- end
10
-
11
- def self.current_scenario=(scenario)
12
- @current_scenario = scenario
13
- end
14
-
15
- def self.current_scenario
16
- @current_scenario
17
- end
18
-
19
- %w[in_order_to as_a i_want_to].each do |intent|
20
- eval <<-HERE
21
- # An intent specifier
22
- def self.#{intent}(val = nil)
23
- val ? @#{intent} = val : @#{intent}
24
- end
25
- HERE
26
- end
27
-
28
- %w[Given When Then And].each do |stmt|
29
- eval <<-HERE
30
- # Specifies a prereqisite, event, or expectation. May be used in any order within the spec
31
- def self.#{stmt}(text, &block)
32
- step = nil
33
- if block_given?
34
- step = block
35
- end
36
- caller[0] =~ (/(.*):(.*)(:in)?/)
37
- stmt = { :type => :#{stmt}, :text => text, :block => step, :file => $1, :line => $2, :scenario => current_scenario }
38
- if text.is_a? Symbol
39
- stmt[:method] = text
40
- end
41
- current_scenario.statements << stmt
42
- end
43
- HERE
44
- end
45
-
46
- def Tag(name)
47
- end
48
-
49
- # Creates a Scenario instance and adds it to the Feature
50
- def self.Scenario(scenario_name, &block)
51
- @scenarios ||=[]
52
- @scenarios << scenario = Scenario.new(scenario_name, self, &block)
53
- scenario
54
- end
55
-
56
- # Raises an error if only some of the intent is captured (i.e., in_order_to and as_a without i_want_to)
57
- def self.assert_presence_of_intent
58
- presence = %w[in_order_to as_a i_want_to].map { |intent| instance_variable_get("@#{intent}") }
59
- if presence.any? { |p| p } && !presence.all? { |p| p }
60
- raise SyntaxError.new("Must have all or none of in_order, as_a, and i_want_to called in a Feature")
61
- end
62
- end
63
- end
64
- end
65
- end
@@ -1,66 +0,0 @@
1
- module Coulda
2
- # A factory for Test::Unit::TestCase test methods
3
- class Scenario
4
- attr_reader :name, :test_class
5
- attr_accessor :statements
6
-
7
- def initialize(name, my_feature, &block)
8
- raise Exception.new("Scenario must have a name") unless name
9
- @name = name
10
- @statements = []
11
- @my_feature = my_feature
12
- create_and_provision_test_method_using &block
13
- end
14
-
15
- # Predicate indicating if the Scenario was provided with an example
16
- def pending?
17
- statements.empty? || has_pending_statements?
18
- end
19
-
20
- def feature
21
- @my_feature
22
- end
23
-
24
- private
25
-
26
- def create_and_provision_test_method_using(&block)
27
- collect_scenario_statements_from &block
28
- define_test_method_using do
29
- scenario = self.class.current_scenario
30
- scenario.statements.each do |stmt|
31
- if stmt[:method]
32
- if stmt[:block]
33
- raise Exception.new "Passing a block to a method called-by-name is currently unhandle"
34
- else
35
- self.class.__send__(stmt[:method])
36
- end
37
- elsif stmt[:block]
38
- self.instance_eval &(stmt[:block])
39
- else
40
- coulda_pending "#{stmt[:file]}:#{stmt[:line]}: Scenario '#{scenario.name}': #{stmt[:type]} '#{stmt[:text]}'"
41
- break
42
- end
43
- end
44
- end
45
- end
46
-
47
- def collect_scenario_statements_from(&block)
48
- @my_feature.current_scenario = self
49
- if block_given?
50
- @my_feature.instance_eval &block
51
- end
52
- end
53
-
54
- def define_test_method_using(&block)
55
- scenario = self
56
- @my_feature.send(:define_method, "test_#{@name.downcase.super_custom_underscore}") do
57
- self.class.current_scenario = scenario
58
- self.instance_eval &block if block
59
- end
60
- end
61
-
62
- def has_pending_statements?
63
- statements.find { |s| s[:block].nil? && s[:method].nil? }
64
- end
65
- end
66
- end
@@ -1,22 +0,0 @@
1
- require "test_helper"
2
-
3
- class ScenarioTest < Test::Unit::TestCase
4
- context "A Scenario" do
5
- setup do
6
- @scenario = Scenario.new("foobar", Feature("something_or_other")) {}
7
- end
8
-
9
- context "when instantiated" do
10
- context "with only a String" do
11
- setup do
12
- @scenario = Scenario.new("foobar", Feature("another"))
13
- end
14
-
15
- should "be pending" do
16
- assert(@scenario.pending?)
17
- end
18
- end
19
- end
20
- end
21
- end
22
-