typo 5.0 → 5.0.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/CHANGES-5.0 +82 -0
- data/app/controllers/articles_controller.rb +4 -4
- data/app/helpers/admin/base_helper.rb +9 -6
- data/app/models/blog_sweeper.rb +5 -0
- data/app/models/page_cache.rb +12 -6
- data/app/models/user.rb +7 -2
- data/app/views/admin/categories/show.html.erb +3 -3
- data/app/views/admin/content/_articles.html.erb +1 -1
- data/app/views/admin/general/index.html.erb +4 -4
- data/app/views/admin/sidebar/index.html.erb +1 -1
- data/app/views/admin/themes/index.html.erb +1 -1
- data/config/environments/development.rb +1 -1
- data/db/migrate/066_fix_profiles.rb +20 -0
- data/db/schema.rb +2 -2
- data/lib/tasks/release.rake +1 -8
- data/lib/typo_version.rb +1 -1
- data/spec/controllers/articles_controller_spec.rb +1 -1
- data/spec/fixtures/contents.yml +3 -13
- data/spec/fixtures/profiles.yml +11 -0
- data/spec/fixtures/tags.yml +0 -3
- data/spec/models/page_spec.rb +7 -4
- data/spec/models/tag_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- data/test/fixtures/profiles.yml +1 -6
- data/test/fixtures/users.yml +8 -8
- data/vendor/plugins/rspec/CHANGES +1 -9
- data/vendor/plugins/rspec/examples/pure/helper_method_example.rb +6 -9
- data/vendor/plugins/rspec/lib/spec/example/example_methods.rb +8 -9
- data/vendor/plugins/rspec/lib/spec/matchers.rb +7 -1
- data/vendor/plugins/rspec/lib/spec/matchers/be.rb +2 -3
- data/vendor/plugins/rspec/lib/spec/mocks/message_expectation.rb +3 -10
- data/vendor/plugins/rspec/lib/spec/runner/formatter/story/plain_text_formatter.rb +5 -8
- data/vendor/plugins/rspec/lib/spec/story/runner/story_parser.rb +8 -8
- data/vendor/plugins/rspec/lib/spec/story/runner/story_runner.rb +0 -1
- data/vendor/plugins/rspec/lib/spec/version.rb +1 -1
- data/vendor/plugins/rspec/spec/spec/example/example_methods_spec.rb +0 -16
- data/vendor/plugins/rspec/spec/spec/matchers/match_spec.rb +3 -3
- data/vendor/plugins/rspec/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +4 -45
- data/vendor/plugins/rspec/spec/spec/story/runner/story_runner_spec.rb +0 -37
- data/vendor/plugins/rspec/stories/example_groups/autogenerated_docstrings +8 -27
- data/vendor/plugins/rspec/stories/example_groups/output +0 -5
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/example/helper_example_group.rb +1 -0
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/matchers/have_text.rb +2 -2
- data/vendor/plugins/rspec_on_rails/lib/spec/rails/version.rb +1 -1
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/render_spec.rb +46 -0
- metadata +5 -7
- data/spec/fixtures/articles_tags.yml +0 -19
- data/vendor/plugins/rspec/failing_examples/failing_autogenerated_docstrings_example.rb +0 -19
- data/vendor/plugins/rspec/stories/resources/stories/failing_story.rb +0 -15
- data/vendor/plugins/rspec_on_rails/spec/rails/matchers/have_text_spec.rb +0 -62
data/spec/fixtures/tags.yml
CHANGED
data/spec/models/page_spec.rb
CHANGED
@@ -11,12 +11,12 @@ describe 'Given the fixture :first_page' do
|
|
11
11
|
@page.permalink_url.should == 'http://myblog.net/pages/page_one'
|
12
12
|
end
|
13
13
|
|
14
|
-
it '#edit_url should be: http://myblog.net/admin/pages/edit
|
15
|
-
@page.edit_url.should ==
|
14
|
+
it '#edit_url should be: http://myblog.net/admin/pages/edit/<page_id>' do
|
15
|
+
@page.edit_url.should == "http://myblog.net/admin/pages/edit/#{@page.id}"
|
16
16
|
end
|
17
17
|
|
18
18
|
it '#delete_url should work too' do
|
19
|
-
@page.delete_url.should ==
|
19
|
+
@page.delete_url.should == "http://myblog.net/admin/pages/destroy/#{@page.id}"
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'Pages cannot have the same name' do
|
@@ -44,7 +44,10 @@ end
|
|
44
44
|
describe 'Given no pages' do
|
45
45
|
it_should_behave_like "ValidPageHelper"
|
46
46
|
|
47
|
-
before(:each)
|
47
|
+
before(:each) do
|
48
|
+
Page.delete_all
|
49
|
+
@page = Page.new
|
50
|
+
end
|
48
51
|
|
49
52
|
it 'An empty page is invalid' do
|
50
53
|
@page.should_not be_valid
|
data/spec/models/tag_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -8,6 +8,7 @@ Spec::Runner.configure do |config|
|
|
8
8
|
config.use_transactional_fixtures = true
|
9
9
|
config.use_instantiated_fixtures = false
|
10
10
|
config.fixture_path = RAILS_ROOT + '/spec/fixtures'
|
11
|
+
config.global_fixtures = [:contents, :tags, :blogs, :profiles]
|
11
12
|
|
12
13
|
config.before(:each) do
|
13
14
|
CachedModel.cache_reset
|
data/test/fixtures/profiles.yml
CHANGED
@@ -1,16 +1,11 @@
|
|
1
|
-
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
2
|
-
|
3
1
|
admin:
|
4
|
-
id: 1
|
5
2
|
label: admin
|
6
3
|
nicename: Typo administrator
|
7
4
|
|
8
5
|
publisher:
|
9
|
-
id: 2
|
10
6
|
label: publisher
|
11
7
|
nicename: Blog publisher
|
12
8
|
|
13
9
|
contributor:
|
14
|
-
id: 3
|
15
10
|
label: contributor
|
16
|
-
nicename: Contributor
|
11
|
+
nicename: Contributor
|
data/test/fixtures/users.yml
CHANGED
@@ -10,8 +10,8 @@ tobi:
|
|
10
10
|
notify_via_jabber: false
|
11
11
|
notify_on_new_articles: false
|
12
12
|
notify_on_comments: true
|
13
|
-
|
14
|
-
|
13
|
+
profile: admin
|
14
|
+
|
15
15
|
bob:
|
16
16
|
id: 2
|
17
17
|
login: bob
|
@@ -22,8 +22,8 @@ bob:
|
|
22
22
|
notify_via_jabber: false
|
23
23
|
notify_on_new_articles: true
|
24
24
|
notify_on_comments: false
|
25
|
-
|
26
|
-
|
25
|
+
profile: admin
|
26
|
+
|
27
27
|
existingbob:
|
28
28
|
id: 3
|
29
29
|
login: existingbob
|
@@ -34,7 +34,7 @@ existingbob:
|
|
34
34
|
notify_via_jabber: false
|
35
35
|
notify_on_new_articles: false
|
36
36
|
notify_on_comments: false
|
37
|
-
|
37
|
+
profile: admin
|
38
38
|
|
39
39
|
longbob:
|
40
40
|
id: 4
|
@@ -46,8 +46,8 @@ longbob:
|
|
46
46
|
notify_via_jabber: false
|
47
47
|
notify_on_new_articles: false
|
48
48
|
notify_on_comments: false
|
49
|
-
|
50
|
-
|
49
|
+
profile: admin
|
50
|
+
|
51
51
|
randomuser:
|
52
52
|
id: 5
|
53
53
|
login: randomuser
|
@@ -58,4 +58,4 @@ randomuser:
|
|
58
58
|
notify_via_jabber: false
|
59
59
|
notify_on_new_articles: true
|
60
60
|
notify_on_comments: true
|
61
|
-
|
61
|
+
profile: admin
|
@@ -1,11 +1,3 @@
|
|
1
|
-
== Trunk
|
2
|
-
|
3
|
-
* Fixed regression in 1.1 that caused failing examples to fail to generate their own names. Closes LH[#209].
|
4
|
-
* Applied doc patch from Jens Krämer for capturing content_for
|
5
|
-
* Applied patch from Alexander Lang to clean up story steps after each story. Closes LH[#198].
|
6
|
-
* Applied patch from Josh Knowles to support 'string_or_response.should have_text(...)'. Closes LH[#193].
|
7
|
-
* Applied patch from Ian Dees to quiet the Story Runner backtrace. Closes LH[#183].
|
8
|
-
|
9
1
|
== Version 1.1.1
|
10
2
|
|
11
3
|
Bug fix release.
|
@@ -20,7 +12,7 @@ The "tell me a story and go nest yourself" release.
|
|
20
12
|
* Applied patch from Mike Vincent to handle generators rails > 2.0.1. Closes LH[#181]
|
21
13
|
* Formatter.pending signature changed so it gets passed an ExampleGroup instance instead of the name ( LH[#180])
|
22
14
|
* Fixed LH[#180] Spec::Rails::Example::ModelExampleGroup and friends show up in rspec/rails output
|
23
|
-
* Spec::Rails no longer loads ActiveRecord extensions if it's
|
15
|
+
* Spec::Rails no longer loads ActiveRecord extensions if it's disablet in config/boot.rb
|
24
16
|
* Applied LH[#178] small annoyances running specs with warnings enabled (Patch from Mikko Lehtonen)
|
25
17
|
* Tighter integration with Rails fixtures. Take advantage of fixture caching to get performance improvements (Thanks to Pat Maddox, Nick Kallen, Jonathan Barnes, and Curtis)
|
26
18
|
|
@@ -1,14 +1,11 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
end
|
3
|
+
describe "a context with helper a method" do
|
4
|
+
def helper_method
|
5
|
+
"received call"
|
6
|
+
end
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
end
|
8
|
+
it "should make that method available to specs" do
|
9
|
+
helper_method.should == "received call"
|
12
10
|
end
|
13
11
|
end
|
14
|
-
|
@@ -64,22 +64,21 @@ module Spec
|
|
64
64
|
@_defined_description || @_matcher_description || "NO NAME"
|
65
65
|
end
|
66
66
|
|
67
|
-
def set_instance_variables_from_hash(
|
68
|
-
|
69
|
-
|
70
|
-
unless ['@_implementation', '@_defined_description', '@_matcher_description', '@method_name'].include?(variable_name.to_s)
|
67
|
+
def set_instance_variables_from_hash(instance_variables)
|
68
|
+
instance_variables.each do |variable_name, value|
|
69
|
+
unless ['@_implementation', '@_defined_description', '@_matcher_description', '@method_name'].index(variable_name)
|
71
70
|
instance_variable_set variable_name, value
|
72
71
|
end
|
73
72
|
end
|
74
73
|
end
|
75
74
|
|
76
75
|
def run_with_description_capturing
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
Spec::Matchers.clear_generated_description
|
76
|
+
return_value = nil
|
77
|
+
|
78
|
+
@_matcher_description = Matchers.capture_generated_description do
|
79
|
+
return_value = instance_eval(&(@_implementation || PENDING_EXAMPLE_BLOCK))
|
82
80
|
end
|
81
|
+
return_value
|
83
82
|
end
|
84
83
|
|
85
84
|
protected
|
@@ -139,8 +139,14 @@ module Spec
|
|
139
139
|
def clear_generated_description
|
140
140
|
self.generated_description = nil
|
141
141
|
end
|
142
|
-
end
|
143
142
|
|
143
|
+
def capture_generated_description
|
144
|
+
yield
|
145
|
+
description = generated_description
|
146
|
+
clear_generated_description
|
147
|
+
description
|
148
|
+
end
|
149
|
+
end
|
144
150
|
extend ModuleMethods
|
145
151
|
|
146
152
|
def method_missing(sym, *args, &block) # :nodoc:
|
@@ -124,9 +124,8 @@ module Spec
|
|
124
124
|
def parse_expected(expected)
|
125
125
|
if Symbol === expected
|
126
126
|
@handling_predicate = true
|
127
|
-
["be_an_","be_a_","be_"].each do
|
128
|
-
if expected.starts_with?(prefix)
|
129
|
-
@prefix = prefix
|
127
|
+
["be_an_","be_a_","be_"].each do |@prefix|
|
128
|
+
if expected.starts_with?(@prefix)
|
130
129
|
return "#{expected.to_s.sub(@prefix,"")}".to_sym
|
131
130
|
end
|
132
131
|
end
|
@@ -39,8 +39,6 @@ module Spec
|
|
39
39
|
@expected_received_count < values.size
|
40
40
|
end
|
41
41
|
@return_block = block_given? ? return_block : lambda { value }
|
42
|
-
# Ruby 1.9 - see where this is used below
|
43
|
-
@ignore_args = !block_given?
|
44
42
|
end
|
45
43
|
|
46
44
|
# :call-seq:
|
@@ -130,14 +128,9 @@ module Spec
|
|
130
128
|
|
131
129
|
def invoke_return_block(args, block)
|
132
130
|
args << block unless block.nil?
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
if @ignore_args
|
137
|
-
@return_block.call()
|
138
|
-
else
|
139
|
-
@return_block.call(*args)
|
140
|
-
end
|
131
|
+
value = @return_block.call(*args)
|
132
|
+
|
133
|
+
value
|
141
134
|
end
|
142
135
|
end
|
143
136
|
|
@@ -20,7 +20,6 @@ module Spec
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def story_started(title, narrative)
|
23
|
-
@current_story_title = title
|
24
23
|
@output.puts "Story: #{title}\n\n"
|
25
24
|
narrative.each_line do |line|
|
26
25
|
@output.print " "
|
@@ -34,7 +33,6 @@ module Spec
|
|
34
33
|
end
|
35
34
|
|
36
35
|
def scenario_started(story_title, scenario_name)
|
37
|
-
@current_scenario_name = scenario_name
|
38
36
|
@scenario_already_failed = false
|
39
37
|
@output.print "\n\n Scenario: #{scenario_name}"
|
40
38
|
@scenario_ok = true
|
@@ -45,12 +43,12 @@ module Spec
|
|
45
43
|
end
|
46
44
|
|
47
45
|
def scenario_failed(story_title, scenario_name, err)
|
48
|
-
@options.backtrace_tweaker.tweak_backtrace(err)
|
49
46
|
@failed_scenarios << [story_title, scenario_name, err] unless @scenario_already_failed
|
50
47
|
@scenario_already_failed = true
|
51
48
|
end
|
52
49
|
|
53
50
|
def scenario_pending(story_title, scenario_name, msg)
|
51
|
+
@pending_steps << [story_title, scenario_name, msg]
|
54
52
|
@pending_scenario_count += 1 unless @scenario_already_failed
|
55
53
|
@scenario_already_failed = true
|
56
54
|
end
|
@@ -60,8 +58,8 @@ module Spec
|
|
60
58
|
unless @pending_steps.empty?
|
61
59
|
@output.puts "\nPending Steps:"
|
62
60
|
@pending_steps.each_with_index do |pending, i|
|
63
|
-
|
64
|
-
@output.puts "#{i+1}) #{
|
61
|
+
title, scenario_name, msg = pending
|
62
|
+
@output.puts "#{i+1}) #{title} (#{scenario_name}): #{msg}"
|
65
63
|
end
|
66
64
|
end
|
67
65
|
unless @failed_scenarios.empty?
|
@@ -72,9 +70,9 @@ module Spec
|
|
72
70
|
#{i+1}) #{title} (#{scenario_name}) FAILED
|
73
71
|
#{err.class}: #{err.message}
|
74
72
|
#{err.backtrace.join("\n")}
|
75
|
-
]
|
73
|
+
]
|
76
74
|
end
|
77
|
-
end
|
75
|
+
end
|
78
76
|
end
|
79
77
|
|
80
78
|
def step_succeeded(type, description, *args)
|
@@ -83,7 +81,6 @@ module Spec
|
|
83
81
|
|
84
82
|
def step_pending(type, description, *args)
|
85
83
|
found_step(type, description, false, *args)
|
86
|
-
@pending_steps << [@current_story_title, @current_scenario_name, description]
|
87
84
|
@output.print " (PENDING)"
|
88
85
|
@scenario_ok = false
|
89
86
|
end
|
@@ -26,14 +26,14 @@ module Spec
|
|
26
26
|
def process_line(line)
|
27
27
|
line.strip!
|
28
28
|
case line
|
29
|
-
when /^Story: /
|
30
|
-
when /^Scenario: /
|
31
|
-
when /^Given:? /
|
32
|
-
when /^GivenScenario:? /
|
33
|
-
when /^When:? /
|
34
|
-
when /^Then:? /
|
35
|
-
when /^And:? /
|
36
|
-
else
|
29
|
+
when /^Story: / : @state.story(line)
|
30
|
+
when /^Scenario: / : @state.scenario(line)
|
31
|
+
when /^Given:? / : @state.given(line)
|
32
|
+
when /^GivenScenario:? / : @state.given_scenario(line)
|
33
|
+
when /^When:? / : @state.event(line)
|
34
|
+
when /^Then:? / : @state.outcome(line)
|
35
|
+
when /^And:? / : @state.one_more_of_the_same(line)
|
36
|
+
else @state.other(line)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -48,7 +48,6 @@ module Spec
|
|
48
48
|
@scenario_runner.run(scenario, world)
|
49
49
|
end
|
50
50
|
@listeners.each { |l| l.story_ended(story.title, story.narrative) }
|
51
|
-
World.step_mother.clear
|
52
51
|
end
|
53
52
|
unique_steps = World.step_names.uniq.sort
|
54
53
|
@listeners.each { |l| l.collected_steps(unique_steps) }
|
@@ -6,7 +6,7 @@ module Spec
|
|
6
6
|
TINY = 1
|
7
7
|
RELEASE_CANDIDATE = nil
|
8
8
|
|
9
|
-
BUILD_TIME_UTC =
|
9
|
+
BUILD_TIME_UTC = 20071217181808
|
10
10
|
|
11
11
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
12
12
|
TAG = "REL_#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('_')}".upcase.gsub(/\.|-/, '_')
|
@@ -70,22 +70,6 @@ module Spec
|
|
70
70
|
@example_group.run
|
71
71
|
ExampleMethods.count.should == 5
|
72
72
|
end
|
73
|
-
|
74
|
-
describe "run_with_description_capturing" do
|
75
|
-
before(:each) do
|
76
|
-
@example_group = Class.new(ExampleGroup) do end
|
77
|
-
@example = @example_group.new("foo", &(lambda { 2.should == 2 }))
|
78
|
-
@example.run_with_description_capturing
|
79
|
-
end
|
80
|
-
|
81
|
-
it "should provide the generated description" do
|
82
|
-
@example.instance_eval { @_matcher_description }.should == "should == 2"
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should clear the global generated_description" do
|
86
|
-
Spec::Matchers.generated_description.should == nil
|
87
|
-
end
|
88
|
-
end
|
89
73
|
end
|
90
74
|
end
|
91
75
|
end
|
@@ -5,12 +5,12 @@ describe "should match(expected)" do
|
|
5
5
|
"string".should match(/tri/)
|
6
6
|
end
|
7
7
|
|
8
|
-
it "should fail when target (String)
|
8
|
+
it "should fail when target (String) matches expected (Regexp)" do
|
9
9
|
lambda {
|
10
10
|
"string".should match(/rings/)
|
11
11
|
}.should fail
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "should provide message, expected and actual on failure" do
|
15
15
|
matcher = match(/rings/)
|
16
16
|
matcher.matches?("string")
|
@@ -19,7 +19,7 @@ describe "should match(expected)" do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "should_not match(expected)" do
|
22
|
-
it "should pass when target (String) matches
|
22
|
+
it "should pass when target (String) matches expected (Regexp)" do
|
23
23
|
"string".should_not match(/rings/)
|
24
24
|
end
|
25
25
|
|
@@ -9,11 +9,8 @@ module Spec
|
|
9
9
|
before :each do
|
10
10
|
# given
|
11
11
|
@out = StringIO.new
|
12
|
-
@tweaker = mock('tweaker')
|
13
|
-
@tweaker.stub!(:tweak_backtrace)
|
14
12
|
@options = mock('options')
|
15
13
|
@options.stub!(:colour).and_return(false)
|
16
|
-
@options.stub!(:backtrace_tweaker).and_return(@tweaker)
|
17
14
|
@formatter = PlainTextFormatter.new(@options, @out)
|
18
15
|
end
|
19
16
|
|
@@ -62,40 +59,6 @@ module Spec
|
|
62
59
|
@out.string.should include("3 scenarios: 1 succeeded, 2 failed")
|
63
60
|
end
|
64
61
|
|
65
|
-
it 'should end cleanly (no characters on the last line) with successes' do
|
66
|
-
# when
|
67
|
-
@formatter.run_started(1)
|
68
|
-
@formatter.scenario_started(nil, nil)
|
69
|
-
@formatter.scenario_succeeded('story', 'scenario')
|
70
|
-
@formatter.run_ended
|
71
|
-
|
72
|
-
# then
|
73
|
-
@out.string.should =~ /\n\z/
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'should end cleanly (no characters on the last line) with failures' do
|
77
|
-
# when
|
78
|
-
@formatter.run_started(1)
|
79
|
-
@formatter.scenario_started(nil, nil)
|
80
|
-
@formatter.scenario_failed('story', 'scenario', exception_from { raise RuntimeError, 'oops' })
|
81
|
-
@formatter.run_ended
|
82
|
-
|
83
|
-
# then
|
84
|
-
@out.string.should =~ /\n\z/
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'should end cleanly (no characters on the last line) with pending steps' do
|
88
|
-
# when
|
89
|
-
@formatter.run_started(1)
|
90
|
-
@formatter.scenario_started(nil, nil)
|
91
|
-
@formatter.step_pending(:then, 'do pend')
|
92
|
-
@formatter.scenario_pending('story', 'scenario', exception_from { raise RuntimeError, 'oops' })
|
93
|
-
@formatter.run_ended
|
94
|
-
|
95
|
-
# then
|
96
|
-
@out.string.should =~ /\n\z/
|
97
|
-
end
|
98
|
-
|
99
62
|
it 'should summarize the number of pending scenarios when the run ends' do
|
100
63
|
# when
|
101
64
|
@formatter.run_started(3)
|
@@ -183,18 +146,14 @@ module Spec
|
|
183
146
|
it 'should produce details of each pending step when the run ends' do
|
184
147
|
# when
|
185
148
|
@formatter.run_started(2)
|
186
|
-
@formatter.
|
187
|
-
@formatter.
|
188
|
-
@formatter.step_pending(:given, 'todo 1', [])
|
189
|
-
@formatter.story_started('story 2', 'narrative')
|
190
|
-
@formatter.scenario_started('story 2', 'scenario 2')
|
191
|
-
@formatter.step_pending(:given, 'todo 2', [])
|
149
|
+
@formatter.scenario_pending('story', 'scenario2', 'todo2')
|
150
|
+
@formatter.scenario_pending('story', 'scenario3', 'todo3')
|
192
151
|
@formatter.run_ended
|
193
152
|
|
194
153
|
# then
|
195
154
|
@out.string.should include("Pending Steps:\n")
|
196
|
-
@out.string.should include("1) story
|
197
|
-
@out.string.should include("2) story
|
155
|
+
@out.string.should include("1) story (scenario2): todo2")
|
156
|
+
@out.string.should include("2) story (scenario3): todo3")
|
198
157
|
end
|
199
158
|
|
200
159
|
it 'should document a story title and narrative' do
|