saga 0.6.0 → 0.7.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 +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