saga 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/saga/planning.rb +20 -3
- data/lib/saga/tokenizer.rb +1 -1
- data/test/saga_formatter_spec.rb +1 -1
- data/test/saga_parser_spec.rb +8 -0
- data/test/saga_planning_spec.rb +29 -0
- data/test/saga_tokenizer_spec.rb +6 -0
- data/test/spec_helper.rb +1 -0
- metadata +8 -9
- data/.gitignore +0 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.7.0
|
data/lib/saga/planning.rb
CHANGED
@@ -27,6 +27,16 @@ module Saga
|
|
27
27
|
total
|
28
28
|
end
|
29
29
|
|
30
|
+
def unestimated
|
31
|
+
unestimated = 0
|
32
|
+
@document.stories.values.each do |stories|
|
33
|
+
stories.each do |story|
|
34
|
+
unestimated += 1 unless story[:estimate]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
unestimated
|
38
|
+
end
|
39
|
+
|
30
40
|
def to_s
|
31
41
|
if @document.empty?
|
32
42
|
"There are no stories yet."
|
@@ -34,9 +44,12 @@ module Saga
|
|
34
44
|
parts = iterations.keys.sort.map do |iteration|
|
35
45
|
self.class.format_properties(iteration, iterations[iteration])
|
36
46
|
end
|
37
|
-
|
38
|
-
|
39
|
-
|
47
|
+
unless parts.empty?
|
48
|
+
formatted_totals = self.class.format_properties(false, total)
|
49
|
+
parts << '-'*formatted_totals.length
|
50
|
+
parts << formatted_totals
|
51
|
+
end
|
52
|
+
parts << self.class.format_unestimated(unestimated) if unestimated > 0
|
40
53
|
parts.join("\n")
|
41
54
|
end
|
42
55
|
end
|
@@ -61,5 +74,9 @@ module Saga
|
|
61
74
|
story_column = (properties[:story_count] == 1) ? "#{properties[:story_count]} story" : "#{properties[:story_count]} stories"
|
62
75
|
"#{label.ljust(14)}: #{properties[:estimate_total_in_hours]} (#{story_column})"
|
63
76
|
end
|
77
|
+
|
78
|
+
def self.format_unestimated(unestimated)
|
79
|
+
"Unestimated : #{unestimated > 1 ? "#{unestimated} stories" : 'one story' }"
|
80
|
+
end
|
64
81
|
end
|
65
82
|
end
|
data/lib/saga/tokenizer.rb
CHANGED
data/test/saga_formatter_spec.rb
CHANGED
@@ -35,7 +35,7 @@ describe "Formatter" do
|
|
35
35
|
}.should.raise(ArgumentError, "The template at path `/does/not/exist/document.erb' could not be found.")
|
36
36
|
end
|
37
37
|
|
38
|
-
it "omits the helpers.rb file
|
38
|
+
it "omits the helpers.rb file when it doesn't exist" do
|
39
39
|
formatter = Saga::Formatter.new(@document, :template => File.expand_path('../fixtures', __FILE__))
|
40
40
|
formatter.expects(:load).never
|
41
41
|
formatter.format.should.not.be.empty
|
data/test/saga_parser_spec.rb
CHANGED
@@ -124,4 +124,12 @@ describe "A Parser, concerning the handling of input" do
|
|
124
124
|
parser.document.definitions['Storage'].length.should == 1
|
125
125
|
parser.document.definitions['Storage'].first[:title].should == 'Other'
|
126
126
|
end
|
127
|
+
|
128
|
+
it "properly parses hard cases" do
|
129
|
+
parse_story_marker
|
130
|
+
parser.parse('As a member I would like the app to keep the information it got from Twitter up-to-date so that changes I make on Twitter get propagated to my listing.')
|
131
|
+
|
132
|
+
story = parser.document.stories[''].first
|
133
|
+
story[:description].should == 'As a member I would like the app to keep the information it got from Twitter up-to-date so that changes I make on Twitter get propagated to my listing.'
|
134
|
+
end
|
127
135
|
end
|
data/test/saga_planning_spec.rb
CHANGED
@@ -11,6 +11,35 @@ describe "An empty Planning" do
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
+
describe "A Planning for unestimated stories" do
|
15
|
+
before do
|
16
|
+
@document = Saga::Document.new
|
17
|
+
@document.stories[''] = [{}, {}, {}]
|
18
|
+
@planning = Saga::Planning.new(@document)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "shows a planning" do
|
22
|
+
@planning.to_s.should == "Unestimated : 3 stories"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe "A Planning for estimated and unestimatesd stories" do
|
27
|
+
before do
|
28
|
+
@document = Saga::Document.new
|
29
|
+
@document.stories[''] = [{}, {}, {}]
|
30
|
+
@document.stories['Member'] = [{:estimate => [12, :hours]}]
|
31
|
+
@planning = Saga::Planning.new(@document)
|
32
|
+
end
|
33
|
+
|
34
|
+
it "shows a planning" do
|
35
|
+
@planning.to_s.should ==
|
36
|
+
"Unplanned : 12 (1 story)\n"+
|
37
|
+
"----------------------------\n"+
|
38
|
+
"Total : 12 (1 story)\n"+
|
39
|
+
"Unestimated : 3 stories"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
14
43
|
describe "A simple Planning" do
|
15
44
|
before do
|
16
45
|
@document = Saga::Document.new
|
data/test/saga_tokenizer_spec.rb
CHANGED
@@ -34,6 +34,12 @@ describe "Tokenizer" do
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
+
it "tokenizes hard stories" do
|
38
|
+
Saga::Tokenizer.tokenize_story('As a member I would like the app to keep the information it got from Twitter up-to-date so that changes I make on Twitter get propagated to my listing.').should == {
|
39
|
+
:description => 'As a member I would like the app to keep the information it got from Twitter up-to-date so that changes I make on Twitter get propagated to my listing.'
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
37
43
|
it "tokenizes definition input" do
|
38
44
|
each_case('definition') do |input, expected|
|
39
45
|
Saga::Tokenizer.tokenize_definition(input).should == expected
|
data/test/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: saga
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 3
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 7
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.7.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Manfred Stienstra
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-07-04 00:00:00 +02:00
|
19
19
|
default_executable: saga
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -72,7 +72,6 @@ extra_rdoc_files:
|
|
72
72
|
- LICENSE
|
73
73
|
- README.rdoc
|
74
74
|
files:
|
75
|
-
- .gitignore
|
76
75
|
- .kick
|
77
76
|
- LICENSE
|
78
77
|
- README.rdoc
|
@@ -110,8 +109,8 @@ homepage: http://fingertips.github.com
|
|
110
109
|
licenses: []
|
111
110
|
|
112
111
|
post_install_message:
|
113
|
-
rdoc_options:
|
114
|
-
|
112
|
+
rdoc_options: []
|
113
|
+
|
115
114
|
require_paths:
|
116
115
|
- lib
|
117
116
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -135,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
134
|
requirements: []
|
136
135
|
|
137
136
|
rubyforge_project:
|
138
|
-
rubygems_version: 1.
|
137
|
+
rubygems_version: 1.5.2
|
139
138
|
signing_key:
|
140
139
|
specification_version: 3
|
141
140
|
summary: Saga is a tool to convert stories syntax to a nicely formatted document.
|
data/.gitignore
DELETED