scrumninja 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/.gitignore +1 -0
- data/.rspec +2 -0
- data/Changelog +0 -0
- data/Gemfile +5 -0
- data/Gemfile.lock +43 -0
- data/LICENSE +0 -0
- data/README +0 -0
- data/lib/scrumninja/client.rb +58 -0
- data/lib/scrumninja/version.rb +3 -0
- data/lib/scrumninja.rb +31 -0
- data/scrumninja.gemspec +28 -0
- data/spec/fixtures/backlog.xml +346 -0
- data/spec/fixtures/card_wall.xml +78 -0
- data/spec/fixtures/projects.xml +17 -0
- data/spec/fixtures/stories.xml +63 -0
- data/spec/fixtures/tasks.xml +78 -0
- data/spec/helper.rb +17 -0
- data/spec/scrumninja_spec.rb +121 -0
- metadata +124 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
coverage
|
data/.rspec
ADDED
data/Changelog
ADDED
File without changes
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
scrumninja (0.1)
|
5
|
+
faraday_middleware (~> 0.6.0)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
addressable (2.2.6)
|
11
|
+
crack (0.1.8)
|
12
|
+
diff-lcs (1.1.2)
|
13
|
+
faraday (0.6.1)
|
14
|
+
addressable (~> 2.2.4)
|
15
|
+
multipart-post (~> 1.1.0)
|
16
|
+
rack (< 2, >= 1.1.0)
|
17
|
+
faraday_middleware (0.6.3)
|
18
|
+
faraday (~> 0.6.0)
|
19
|
+
hashie (1.0.0)
|
20
|
+
multi_xml (0.2.2)
|
21
|
+
multipart-post (1.1.2)
|
22
|
+
rack (1.3.0)
|
23
|
+
rspec (2.6.0)
|
24
|
+
rspec-core (~> 2.6.0)
|
25
|
+
rspec-expectations (~> 2.6.0)
|
26
|
+
rspec-mocks (~> 2.6.0)
|
27
|
+
rspec-core (2.6.4)
|
28
|
+
rspec-expectations (2.6.0)
|
29
|
+
diff-lcs (~> 1.1.2)
|
30
|
+
rspec-mocks (2.6.0)
|
31
|
+
webmock (1.6.4)
|
32
|
+
addressable (> 2.2.5, ~> 2.2)
|
33
|
+
crack (>= 0.1.7)
|
34
|
+
|
35
|
+
PLATFORMS
|
36
|
+
ruby
|
37
|
+
|
38
|
+
DEPENDENCIES
|
39
|
+
hashie (~> 1.0.0)
|
40
|
+
multi_xml (~> 0.2.0)
|
41
|
+
rspec (~> 2.6)
|
42
|
+
scrumninja!
|
43
|
+
webmock (~> 1.5)
|
data/LICENSE
ADDED
File without changes
|
data/README
ADDED
File without changes
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'faraday_middleware'
|
2
|
+
|
3
|
+
module ScrumNinja
|
4
|
+
class Client
|
5
|
+
def initialize(key)
|
6
|
+
@api_key = key
|
7
|
+
end
|
8
|
+
|
9
|
+
def projects(options={})
|
10
|
+
response = get 'https://scrumninja.com/projects.xml', options
|
11
|
+
response.projects
|
12
|
+
end
|
13
|
+
|
14
|
+
def project_stories(project_id,options={})
|
15
|
+
response = get "http://scrumninja.com/projects/#{project_id}/stories.xml", options
|
16
|
+
response.stories
|
17
|
+
end
|
18
|
+
|
19
|
+
def project_backlog(project_id,options={})
|
20
|
+
response = get "http://scrumninja.com/projects/#{project_id}/backlog/index.xml", options
|
21
|
+
response.sprints
|
22
|
+
end
|
23
|
+
|
24
|
+
def project_card_wall(project_id,options={})
|
25
|
+
response = get "http://scrumninja.com/projects/#{project_id}/card_wall.xml", options
|
26
|
+
response.tasks
|
27
|
+
end
|
28
|
+
|
29
|
+
def story_tasks(story_id,options={})
|
30
|
+
response = get "http://scrumninja.com/stories/#{story_id}/tasks.xml", options
|
31
|
+
response.tasks
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def connection
|
37
|
+
options = {
|
38
|
+
:headers => {'Accept' => 'application/xml'},
|
39
|
+
:ssl => {:verify => false}
|
40
|
+
}
|
41
|
+
|
42
|
+
Faraday::Connection.new(options) do |builder|
|
43
|
+
builder.use Faraday::Request::Multipart
|
44
|
+
builder.use Faraday::Response::Mashify
|
45
|
+
builder.use Faraday::Response::ParseXml
|
46
|
+
builder.adapter(Faraday.default_adapter)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def get(path,options)
|
51
|
+
options.merge!({:api_key => @api_key})
|
52
|
+
response = connection.get do |request|
|
53
|
+
request.url path, options
|
54
|
+
end
|
55
|
+
response.body
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/scrumninja.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'scrumninja/client'
|
2
|
+
require 'scrumninja/version'
|
3
|
+
|
4
|
+
module ScrumNinja
|
5
|
+
# Alias for FccReboot::Client.new
|
6
|
+
#
|
7
|
+
# @return [FccReboot::Client]
|
8
|
+
def self.client(options={})
|
9
|
+
ScrumNinja::Client.new(options)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.projects(api_key)
|
13
|
+
client(api_key).projects
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.project_stories(api_key,project_id)
|
17
|
+
client(api_key).project_stories project_id
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.project_backlog(api_key,project_id)
|
21
|
+
client(api_key).project_backlog project_id
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.project_card_wall(api_key,project_id)
|
25
|
+
client(api_key).project_card_wall project_id
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.story_tasks(api_key,story_id)
|
29
|
+
client(api_key).story_tasks story_id
|
30
|
+
end
|
31
|
+
end
|
data/scrumninja.gemspec
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "scrumninja/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "scrumninja"
|
7
|
+
s.version = ScrumNinja::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Javier Muniz"]
|
10
|
+
s.email = "javier@granicus.com"
|
11
|
+
s.summary = "Scrumninja API Wrapper"
|
12
|
+
s.homepage = "http://github.com/gov20cto/scrumninja"
|
13
|
+
s.description = "Wrapper for the Scrumninja backlog/sprint management tool."
|
14
|
+
|
15
|
+
s.rubyforge_project = "scrumninja"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_development_dependency('rspec', '~> 2.6')
|
23
|
+
s.add_development_dependency('webmock', '~> 1.5')
|
24
|
+
s.add_development_dependency('hashie', '~> 1.0.0')
|
25
|
+
s.add_development_dependency('multi_xml', '~> 0.2.0')
|
26
|
+
|
27
|
+
s.add_dependency('faraday_middleware', '~> 0.6.0')
|
28
|
+
end
|
@@ -0,0 +1,346 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<sprints type="array">
|
3
|
+
<sprint>
|
4
|
+
<stories type="array">
|
5
|
+
<story>
|
6
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
7
|
+
<complexity>5</complexity>
|
8
|
+
<content>As a user, I want to reset my password in the event that I forget it so that I won't get locked out</content>
|
9
|
+
<created-at type="datetime">2011-06-09T12:02:26-07:00</created-at>
|
10
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
11
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
12
|
+
<id type="integer">139447</id>
|
13
|
+
<name>Reset Password</name>
|
14
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
15
|
+
<position type="float">2.0</position>
|
16
|
+
<rejection-reason nil="true"></rejection-reason>
|
17
|
+
<status>pending</status>
|
18
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
19
|
+
<updated-at type="datetime">2011-06-09T12:02:26-07:00</updated-at>
|
20
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
21
|
+
<hours_remaining>6.0</hours_remaining>
|
22
|
+
<link href="http://scrumninja.com/projects/8991/stories/139447.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
23
|
+
<link href="http://scrumninja.com/stories/139447/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
24
|
+
</story>
|
25
|
+
</stories>
|
26
|
+
<date-start type="date">2011-06-23</date-start>
|
27
|
+
<number type="integer">1</number>
|
28
|
+
<date-finish type="date">2011-07-06</date-finish>
|
29
|
+
</sprint>
|
30
|
+
<sprint>
|
31
|
+
<stories type="array">
|
32
|
+
<story>
|
33
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
34
|
+
<complexity>13</complexity>
|
35
|
+
<content>As a user, I want to write an article, so that I can share it with other users</content>
|
36
|
+
<created-at type="datetime">2011-06-09T12:02:26-07:00</created-at>
|
37
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
38
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
39
|
+
<id type="integer">139448</id>
|
40
|
+
<name>Create Article</name>
|
41
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
42
|
+
<position type="float">5.0</position>
|
43
|
+
<rejection-reason nil="true"></rejection-reason>
|
44
|
+
<status>pending</status>
|
45
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
46
|
+
<updated-at type="datetime">2011-06-09T12:02:26-07:00</updated-at>
|
47
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
48
|
+
<hours_remaining>8.0</hours_remaining>
|
49
|
+
<link href="http://scrumninja.com/projects/8991/stories/139448.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
50
|
+
<link href="http://scrumninja.com/stories/139448/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
51
|
+
</story>
|
52
|
+
</stories>
|
53
|
+
<date-start type="date">2011-07-07</date-start>
|
54
|
+
<number type="integer">2</number>
|
55
|
+
<date-finish type="date">2011-07-20</date-finish>
|
56
|
+
</sprint>
|
57
|
+
<sprint>
|
58
|
+
<stories type="array">
|
59
|
+
<story>
|
60
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
61
|
+
<complexity>8</complexity>
|
62
|
+
<content>As a user, I want to upload a photo, so that I can share it with other users</content>
|
63
|
+
<created-at type="datetime">2011-06-09T12:02:26-07:00</created-at>
|
64
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
65
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
66
|
+
<id type="integer">139449</id>
|
67
|
+
<name>Upload Photo</name>
|
68
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
69
|
+
<position type="float">6.0</position>
|
70
|
+
<rejection-reason nil="true"></rejection-reason>
|
71
|
+
<status>pending</status>
|
72
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
73
|
+
<updated-at type="datetime">2011-06-09T12:02:26-07:00</updated-at>
|
74
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
75
|
+
<hours_remaining>8.0</hours_remaining>
|
76
|
+
<link href="http://scrumninja.com/projects/8991/stories/139449.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
77
|
+
<link href="http://scrumninja.com/stories/139449/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
78
|
+
</story>
|
79
|
+
</stories>
|
80
|
+
<date-start type="date">2011-07-21</date-start>
|
81
|
+
<number type="integer">3</number>
|
82
|
+
<date-finish type="date">2011-08-03</date-finish>
|
83
|
+
</sprint>
|
84
|
+
<sprint>
|
85
|
+
<stories type="array">
|
86
|
+
<story>
|
87
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
88
|
+
<complexity>5</complexity>
|
89
|
+
<content>As a user, I want to browse other users' articles because I want to see content</content>
|
90
|
+
<created-at type="datetime">2011-06-09T12:02:26-07:00</created-at>
|
91
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
92
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
93
|
+
<id type="integer">139450</id>
|
94
|
+
<name>Browse Articles</name>
|
95
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
96
|
+
<position type="float">7.0</position>
|
97
|
+
<rejection-reason nil="true"></rejection-reason>
|
98
|
+
<status>pending</status>
|
99
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
100
|
+
<updated-at type="datetime">2011-06-09T12:02:26-07:00</updated-at>
|
101
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
102
|
+
<hours_remaining>8.0</hours_remaining>
|
103
|
+
<link href="http://scrumninja.com/projects/8991/stories/139450.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
104
|
+
<link href="http://scrumninja.com/stories/139450/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
105
|
+
</story>
|
106
|
+
<story>
|
107
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
108
|
+
<complexity>BUG</complexity>
|
109
|
+
<content nil="true"></content>
|
110
|
+
<created-at type="datetime">2011-06-09T12:02:27-07:00</created-at>
|
111
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
112
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
113
|
+
<id type="integer">139451</id>
|
114
|
+
<name>Fix Bugs</name>
|
115
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
116
|
+
<position type="float">8.0</position>
|
117
|
+
<rejection-reason nil="true"></rejection-reason>
|
118
|
+
<status>pending</status>
|
119
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
120
|
+
<updated-at type="datetime">2011-06-09T12:02:27-07:00</updated-at>
|
121
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
122
|
+
<hours_remaining>2.0</hours_remaining>
|
123
|
+
<link href="http://scrumninja.com/projects/8991/stories/139451.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
124
|
+
<link href="http://scrumninja.com/stories/139451/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
125
|
+
</story>
|
126
|
+
</stories>
|
127
|
+
<date-start type="date">2011-08-04</date-start>
|
128
|
+
<number type="integer">4</number>
|
129
|
+
<date-finish type="date">2011-08-17</date-finish>
|
130
|
+
</sprint>
|
131
|
+
<sprint>
|
132
|
+
<stories type="array">
|
133
|
+
<story>
|
134
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
135
|
+
<complexity>5</complexity>
|
136
|
+
<content>As a user, I want to browse other users' photos because I want to see content</content>
|
137
|
+
<created-at type="datetime">2011-06-09T12:02:27-07:00</created-at>
|
138
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
139
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
140
|
+
<id type="integer">139452</id>
|
141
|
+
<name>Browse Photos</name>
|
142
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
143
|
+
<position type="float">9.0</position>
|
144
|
+
<rejection-reason nil="true"></rejection-reason>
|
145
|
+
<status>pending</status>
|
146
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
147
|
+
<updated-at type="datetime">2011-06-09T12:02:27-07:00</updated-at>
|
148
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
149
|
+
<hours_remaining>8.0</hours_remaining>
|
150
|
+
<link href="http://scrumninja.com/projects/8991/stories/139452.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
151
|
+
<link href="http://scrumninja.com/stories/139452/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
152
|
+
</story>
|
153
|
+
</stories>
|
154
|
+
<date-start type="date">2011-08-18</date-start>
|
155
|
+
<number type="integer">5</number>
|
156
|
+
<date-finish type="date">2011-08-31</date-finish>
|
157
|
+
</sprint>
|
158
|
+
<sprint>
|
159
|
+
<stories type="array">
|
160
|
+
<story>
|
161
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
162
|
+
<complexity>5</complexity>
|
163
|
+
<content>As a user, I want to submit my profile so others with similar interests can find me</content>
|
164
|
+
<created-at type="datetime">2011-06-09T12:02:27-07:00</created-at>
|
165
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
166
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
167
|
+
<id type="integer">139453</id>
|
168
|
+
<name>User Profile</name>
|
169
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
170
|
+
<position type="float">10.0</position>
|
171
|
+
<rejection-reason nil="true"></rejection-reason>
|
172
|
+
<status>pending</status>
|
173
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
174
|
+
<updated-at type="datetime">2011-06-09T12:02:27-07:00</updated-at>
|
175
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
176
|
+
<hours_remaining>8.0</hours_remaining>
|
177
|
+
<link href="http://scrumninja.com/projects/8991/stories/139453.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
178
|
+
<link href="http://scrumninja.com/stories/139453/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
179
|
+
</story>
|
180
|
+
<story>
|
181
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
182
|
+
<complexity>3</complexity>
|
183
|
+
<content>As a user, I want to view other user's profiles so I can find users with similar interests</content>
|
184
|
+
<created-at type="datetime">2011-06-09T12:02:27-07:00</created-at>
|
185
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
186
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
187
|
+
<id type="integer">139454</id>
|
188
|
+
<name>Browse Profiles</name>
|
189
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
190
|
+
<position type="float">11.0</position>
|
191
|
+
<rejection-reason nil="true"></rejection-reason>
|
192
|
+
<status>pending</status>
|
193
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
194
|
+
<updated-at type="datetime">2011-06-09T12:02:27-07:00</updated-at>
|
195
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
196
|
+
<hours_remaining>12.0</hours_remaining>
|
197
|
+
<link href="http://scrumninja.com/projects/8991/stories/139454.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
198
|
+
<link href="http://scrumninja.com/stories/139454/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
199
|
+
</story>
|
200
|
+
</stories>
|
201
|
+
<date-start type="date">2011-09-01</date-start>
|
202
|
+
<number type="integer">6</number>
|
203
|
+
<date-finish type="date">2011-09-14</date-finish>
|
204
|
+
</sprint>
|
205
|
+
<sprint>
|
206
|
+
<stories type="array">
|
207
|
+
<story>
|
208
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
209
|
+
<complexity>3</complexity>
|
210
|
+
<content>As a user, I want to search other user's profiles so I can find users with similar interests</content>
|
211
|
+
<created-at type="datetime">2011-06-09T12:02:27-07:00</created-at>
|
212
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
213
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
214
|
+
<id type="integer">139455</id>
|
215
|
+
<name>Search Profiles</name>
|
216
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
217
|
+
<position type="float">12.0</position>
|
218
|
+
<rejection-reason nil="true"></rejection-reason>
|
219
|
+
<status>pending</status>
|
220
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
221
|
+
<updated-at type="datetime">2011-06-09T12:02:27-07:00</updated-at>
|
222
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
223
|
+
<hours_remaining>12.0</hours_remaining>
|
224
|
+
<link href="http://scrumninja.com/projects/8991/stories/139455.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
225
|
+
<link href="http://scrumninja.com/stories/139455/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
226
|
+
</story>
|
227
|
+
<story>
|
228
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
229
|
+
<complexity>3</complexity>
|
230
|
+
<content>As a user, I want to flag content that I deem inappropriate, so we can preserve a positive user experience</content>
|
231
|
+
<created-at type="datetime">2011-06-09T12:02:27-07:00</created-at>
|
232
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
233
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
234
|
+
<id type="integer">139456</id>
|
235
|
+
<name>Flagging</name>
|
236
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
237
|
+
<position type="float">13.0</position>
|
238
|
+
<rejection-reason nil="true"></rejection-reason>
|
239
|
+
<status>pending</status>
|
240
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
241
|
+
<updated-at type="datetime">2011-06-09T12:02:27-07:00</updated-at>
|
242
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
243
|
+
<hours_remaining>7.0</hours_remaining>
|
244
|
+
<link href="http://scrumninja.com/projects/8991/stories/139456.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
245
|
+
<link href="http://scrumninja.com/stories/139456/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
246
|
+
</story>
|
247
|
+
</stories>
|
248
|
+
<date-start type="date">2011-09-15</date-start>
|
249
|
+
<number type="integer">7</number>
|
250
|
+
<date-finish type="date">2011-09-28</date-finish>
|
251
|
+
</sprint>
|
252
|
+
<sprint>
|
253
|
+
<stories type="array">
|
254
|
+
<story>
|
255
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
256
|
+
<complexity>3</complexity>
|
257
|
+
<content>As an admin, I want to be able to see newly signed up users so that I can track system growth</content>
|
258
|
+
<created-at type="datetime">2011-06-09T12:02:28-07:00</created-at>
|
259
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
260
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
261
|
+
<id type="integer">139457</id>
|
262
|
+
<name>Track new signups</name>
|
263
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
264
|
+
<position type="float">14.0</position>
|
265
|
+
<rejection-reason nil="true"></rejection-reason>
|
266
|
+
<status>pending</status>
|
267
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
268
|
+
<updated-at type="datetime">2011-06-09T12:02:28-07:00</updated-at>
|
269
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
270
|
+
<hours_remaining>0</hours_remaining>
|
271
|
+
<link href="http://scrumninja.com/projects/8991/stories/139457.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
272
|
+
<link href="http://scrumninja.com/stories/139457/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
273
|
+
</story>
|
274
|
+
<story>
|
275
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
276
|
+
<complexity>5</complexity>
|
277
|
+
<content>As an admin, I want to view the flags on each piece of content so I can stay on top of spam </content>
|
278
|
+
<created-at type="datetime">2011-06-09T12:02:28-07:00</created-at>
|
279
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
280
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
281
|
+
<id type="integer">139458</id>
|
282
|
+
<name>Admin View Flagged Content</name>
|
283
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
284
|
+
<position type="float">15.0</position>
|
285
|
+
<rejection-reason nil="true"></rejection-reason>
|
286
|
+
<status>pending</status>
|
287
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
288
|
+
<updated-at type="datetime">2011-06-09T12:02:28-07:00</updated-at>
|
289
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
290
|
+
<hours_remaining>0</hours_remaining>
|
291
|
+
<link href="http://scrumninja.com/projects/8991/stories/139458.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
292
|
+
<link href="http://scrumninja.com/stories/139458/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
293
|
+
</story>
|
294
|
+
</stories>
|
295
|
+
<date-start type="date">2011-09-29</date-start>
|
296
|
+
<number type="integer">8</number>
|
297
|
+
<date-finish type="date">2011-10-12</date-finish>
|
298
|
+
</sprint>
|
299
|
+
<sprint>
|
300
|
+
<stories type="array">
|
301
|
+
<story>
|
302
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
303
|
+
<complexity>2</complexity>
|
304
|
+
<content>As an admin, I want to view the users by number of flags so I can see who is producing flagged content and ban them</content>
|
305
|
+
<created-at type="datetime">2011-06-09T12:02:28-07:00</created-at>
|
306
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
307
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
308
|
+
<id type="integer">139459</id>
|
309
|
+
<name>Admin View Flagged Users</name>
|
310
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
311
|
+
<position type="float">16.0</position>
|
312
|
+
<rejection-reason nil="true"></rejection-reason>
|
313
|
+
<status>pending</status>
|
314
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
315
|
+
<updated-at type="datetime">2011-06-09T12:02:28-07:00</updated-at>
|
316
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
317
|
+
<hours_remaining>0</hours_remaining>
|
318
|
+
<link href="http://scrumninja.com/projects/8991/stories/139459.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
319
|
+
<link href="http://scrumninja.com/stories/139459/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
320
|
+
</story>
|
321
|
+
<story>
|
322
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
323
|
+
<complexity>3</complexity>
|
324
|
+
<content>As an admin, I want to ban users with highly flagged content so I can preserve a positive user experience</content>
|
325
|
+
<created-at type="datetime">2011-06-09T12:02:28-07:00</created-at>
|
326
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
327
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
328
|
+
<id type="integer">139460</id>
|
329
|
+
<name>Admin Ban Users</name>
|
330
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
331
|
+
<position type="float">17.0</position>
|
332
|
+
<rejection-reason nil="true"></rejection-reason>
|
333
|
+
<status>pending</status>
|
334
|
+
<story-collection-id type="integer">26247</story-collection-id>
|
335
|
+
<updated-at type="datetime">2011-06-09T12:02:28-07:00</updated-at>
|
336
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
337
|
+
<hours_remaining>0</hours_remaining>
|
338
|
+
<link href="http://scrumninja.com/projects/8991/stories/139460.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
339
|
+
<link href="http://scrumninja.com/stories/139460/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
340
|
+
</story>
|
341
|
+
</stories>
|
342
|
+
<date-start type="date">2011-10-13</date-start>
|
343
|
+
<number type="integer">9</number>
|
344
|
+
<date-finish type="date">2011-10-26</date-finish>
|
345
|
+
</sprint>
|
346
|
+
</sprints>
|
@@ -0,0 +1,78 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<tasks type="array">
|
3
|
+
<task>
|
4
|
+
<assigned-to-user-id type="integer" nil="true"></assigned-to-user-id>
|
5
|
+
<blocked type="boolean">false</blocked>
|
6
|
+
<created-at type="datetime">2011-06-09T12:02:25-07:00</created-at>
|
7
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
8
|
+
<done-at type="datetime" nil="true"></done-at>
|
9
|
+
<id type="integer">331729</id>
|
10
|
+
<name>configure database.yml</name>
|
11
|
+
<position type="float">1.0</position>
|
12
|
+
<started-at type="datetime" nil="true"></started-at>
|
13
|
+
<story-id type="integer">139444</story-id>
|
14
|
+
<task-status-id type="integer">23299</task-status-id>
|
15
|
+
<updated-at type="datetime">2011-06-09T12:02:25-07:00</updated-at>
|
16
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
17
|
+
<assigned-to-user-name></assigned-to-user-name>
|
18
|
+
<status>pending</status>
|
19
|
+
<estimates>
|
20
|
+
<estimate>
|
21
|
+
<date>2011-06-09</date>
|
22
|
+
<hours>0.5</hours>
|
23
|
+
</estimate>
|
24
|
+
</estimates>
|
25
|
+
<hours_remaining>0.5</hours_remaining>
|
26
|
+
<link href="http://scrumninja.com/stories/139444/tasks/331729.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
27
|
+
</task>
|
28
|
+
<task>
|
29
|
+
<assigned-to-user-id type="integer" nil="true"></assigned-to-user-id>
|
30
|
+
<blocked type="boolean">false</blocked>
|
31
|
+
<created-at type="datetime">2011-06-09T12:02:25-07:00</created-at>
|
32
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
33
|
+
<done-at type="datetime" nil="true"></done-at>
|
34
|
+
<id type="integer">331730</id>
|
35
|
+
<name>create mysql database</name>
|
36
|
+
<position type="float">2.0</position>
|
37
|
+
<started-at type="datetime" nil="true"></started-at>
|
38
|
+
<story-id type="integer">139444</story-id>
|
39
|
+
<task-status-id type="integer">23299</task-status-id>
|
40
|
+
<updated-at type="datetime">2011-06-09T12:02:25-07:00</updated-at>
|
41
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
42
|
+
<assigned-to-user-name></assigned-to-user-name>
|
43
|
+
<status>pending</status>
|
44
|
+
<estimates>
|
45
|
+
<estimate>
|
46
|
+
<date>2011-06-09</date>
|
47
|
+
<hours>1.0</hours>
|
48
|
+
</estimate>
|
49
|
+
</estimates>
|
50
|
+
<hours_remaining>1.0</hours_remaining>
|
51
|
+
<link href="http://scrumninja.com/stories/139444/tasks/331730.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
52
|
+
</task>
|
53
|
+
<task>
|
54
|
+
<assigned-to-user-id type="integer" nil="true"></assigned-to-user-id>
|
55
|
+
<blocked type="boolean">false</blocked>
|
56
|
+
<created-at type="datetime">2011-06-09T12:02:25-07:00</created-at>
|
57
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
58
|
+
<done-at type="datetime" nil="true"></done-at>
|
59
|
+
<id type="integer">331731</id>
|
60
|
+
<name>migration for user model</name>
|
61
|
+
<position type="float">3.0</position>
|
62
|
+
<started-at type="datetime" nil="true"></started-at>
|
63
|
+
<story-id type="integer">139444</story-id>
|
64
|
+
<task-status-id type="integer">23299</task-status-id>
|
65
|
+
<updated-at type="datetime">2011-06-09T12:02:25-07:00</updated-at>
|
66
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
67
|
+
<assigned-to-user-name></assigned-to-user-name>
|
68
|
+
<status>pending</status>
|
69
|
+
<estimates>
|
70
|
+
<estimate>
|
71
|
+
<date>2011-06-09</date>
|
72
|
+
<hours>1.0</hours>
|
73
|
+
</estimate>
|
74
|
+
</estimates>
|
75
|
+
<hours_remaining>1.0</hours_remaining>
|
76
|
+
<link href="http://scrumninja.com/stories/139444/tasks/331731.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
77
|
+
</task>
|
78
|
+
</tasks>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<projects type="array"><project><created-at type="datetime">2011-06-09T12:02:25-07:00</created-at><created-by-user-id type="integer">8218</created-by-user-id><future-by-average type="boolean">true</future-by-average><id type="integer">8991</id><name>Tutorial Project</name><numeric-complexities type="yaml">---
|
2
|
+
- "1"
|
3
|
+
- "2"
|
4
|
+
- "3"
|
5
|
+
- "5"
|
6
|
+
- "8"
|
7
|
+
- "13"
|
8
|
+
- "20"
|
9
|
+
- "40"
|
10
|
+
- "100"
|
11
|
+
</numeric-complexities><open-source-url nil="true"/><page-views type="integer">1</page-views><ssl type="boolean" nil="true"/><time-zone nil="true"/><total-page-views type="integer">0</total-page-views><track-only-story-points type="boolean">false</track-only-story-points><updated-at type="datetime">2011-06-09T12:02:40-07:00</updated-at><updated-by-user-id type="integer">8218</updated-by-user-id><work-days type="yaml">---
|
12
|
+
- 1
|
13
|
+
- 2
|
14
|
+
- 3
|
15
|
+
- 4
|
16
|
+
- 5
|
17
|
+
</work-days><link href="http://scrumninja.com/projects/8991.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/><link href="http://scrumninja.com/projects/8991/project_roles.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="project roles" rel="users"/><link href="http://scrumninja.com/projects/8991/stories.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="stories in current sprint" rel="stories"/><link type="text/plain" href="http://scrumninja.com/projects/8991/export?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="export" rel="self"/><link href="http://scrumninja.com/projects/8991/backlog/index.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="future stories" rel="stories"/><link href="http://scrumninja.com/projects/8991/sprints.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="sprint history" rel="sprints"/></project></projects>
|
@@ -0,0 +1,63 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<stories type="array">
|
3
|
+
<story>
|
4
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
5
|
+
<complexity>CHORE</complexity>
|
6
|
+
<content nil="true"></content>
|
7
|
+
<created-at type="datetime">2011-06-09T12:02:25-07:00</created-at>
|
8
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
9
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
10
|
+
<id type="integer">139444</id>
|
11
|
+
<name>Infrastructure for project</name>
|
12
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
13
|
+
<position type="float">1.0</position>
|
14
|
+
<rejection-reason nil="true"></rejection-reason>
|
15
|
+
<status>pending</status>
|
16
|
+
<story-collection-id type="integer">26248</story-collection-id>
|
17
|
+
<updated-at type="datetime">2011-06-09T12:02:25-07:00</updated-at>
|
18
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
19
|
+
<hours_remaining>2.5</hours_remaining>
|
20
|
+
<link href="http://scrumninja.com/projects/8991/stories/139444.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
21
|
+
<link href="http://scrumninja.com/stories/139444/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
22
|
+
</story>
|
23
|
+
<story>
|
24
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
25
|
+
<complexity>3</complexity>
|
26
|
+
<content>As a user, I want to register so that I can gain access to the system</content>
|
27
|
+
<created-at type="datetime">2011-06-09T12:02:25-07:00</created-at>
|
28
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
29
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
30
|
+
<id type="integer">139445</id>
|
31
|
+
<name>Signup</name>
|
32
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
33
|
+
<position type="float">3.0</position>
|
34
|
+
<rejection-reason nil="true"></rejection-reason>
|
35
|
+
<status>pending</status>
|
36
|
+
<story-collection-id type="integer">26248</story-collection-id>
|
37
|
+
<updated-at type="datetime">2011-06-09T12:02:25-07:00</updated-at>
|
38
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
39
|
+
<hours_remaining>12.0</hours_remaining>
|
40
|
+
<link href="http://scrumninja.com/projects/8991/stories/139445.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
41
|
+
<link href="http://scrumninja.com/stories/139445/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
42
|
+
</story>
|
43
|
+
<story>
|
44
|
+
<accepted-on type="date" nil="true"></accepted-on>
|
45
|
+
<complexity>3</complexity>
|
46
|
+
<content>As a user, I want to login so I can protect my info from the public eye </content>
|
47
|
+
<created-at type="datetime">2011-06-09T12:02:25-07:00</created-at>
|
48
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
49
|
+
<delivered-on type="date" nil="true"></delivered-on>
|
50
|
+
<id type="integer">139446</id>
|
51
|
+
<name>Login Form</name>
|
52
|
+
<owner-user-id type="integer" nil="true"></owner-user-id>
|
53
|
+
<position type="float">4.0</position>
|
54
|
+
<rejection-reason nil="true"></rejection-reason>
|
55
|
+
<status>pending</status>
|
56
|
+
<story-collection-id type="integer">26248</story-collection-id>
|
57
|
+
<updated-at type="datetime">2011-06-09T12:02:25-07:00</updated-at>
|
58
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
59
|
+
<hours_remaining>5.0</hours_remaining>
|
60
|
+
<link href="http://scrumninja.com/projects/8991/stories/139446.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
61
|
+
<link href="http://scrumninja.com/stories/139446/tasks.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" rel="tasks"/>
|
62
|
+
</story>
|
63
|
+
</stories>
|
@@ -0,0 +1,78 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<tasks type="array">
|
3
|
+
<task>
|
4
|
+
<assigned-to-user-id type="integer" nil="true"></assigned-to-user-id>
|
5
|
+
<blocked type="boolean">false</blocked>
|
6
|
+
<created-at type="datetime">2011-06-09T12:02:25-07:00</created-at>
|
7
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
8
|
+
<done-at type="datetime" nil="true"></done-at>
|
9
|
+
<id type="integer">331729</id>
|
10
|
+
<name>configure database.yml</name>
|
11
|
+
<position type="float">1.0</position>
|
12
|
+
<started-at type="datetime" nil="true"></started-at>
|
13
|
+
<story-id type="integer">139444</story-id>
|
14
|
+
<task-status-id type="integer">23299</task-status-id>
|
15
|
+
<updated-at type="datetime">2011-06-09T12:02:25-07:00</updated-at>
|
16
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
17
|
+
<assigned-to-user-name></assigned-to-user-name>
|
18
|
+
<status>pending</status>
|
19
|
+
<estimates>
|
20
|
+
<estimate>
|
21
|
+
<date>2011-06-09</date>
|
22
|
+
<hours>0.5</hours>
|
23
|
+
</estimate>
|
24
|
+
</estimates>
|
25
|
+
<hours_remaining>0.5</hours_remaining>
|
26
|
+
<link href="http://scrumninja.com/stories/139444/tasks/331729.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
27
|
+
</task>
|
28
|
+
<task>
|
29
|
+
<assigned-to-user-id type="integer" nil="true"></assigned-to-user-id>
|
30
|
+
<blocked type="boolean">false</blocked>
|
31
|
+
<created-at type="datetime">2011-06-09T12:02:25-07:00</created-at>
|
32
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
33
|
+
<done-at type="datetime" nil="true"></done-at>
|
34
|
+
<id type="integer">331730</id>
|
35
|
+
<name>create mysql database</name>
|
36
|
+
<position type="float">2.0</position>
|
37
|
+
<started-at type="datetime" nil="true"></started-at>
|
38
|
+
<story-id type="integer">139444</story-id>
|
39
|
+
<task-status-id type="integer">23299</task-status-id>
|
40
|
+
<updated-at type="datetime">2011-06-09T12:02:25-07:00</updated-at>
|
41
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
42
|
+
<assigned-to-user-name></assigned-to-user-name>
|
43
|
+
<status>pending</status>
|
44
|
+
<estimates>
|
45
|
+
<estimate>
|
46
|
+
<date>2011-06-09</date>
|
47
|
+
<hours>1.0</hours>
|
48
|
+
</estimate>
|
49
|
+
</estimates>
|
50
|
+
<hours_remaining>1.0</hours_remaining>
|
51
|
+
<link href="http://scrumninja.com/stories/139444/tasks/331730.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
52
|
+
</task>
|
53
|
+
<task>
|
54
|
+
<assigned-to-user-id type="integer" nil="true"></assigned-to-user-id>
|
55
|
+
<blocked type="boolean">false</blocked>
|
56
|
+
<created-at type="datetime">2011-06-09T12:02:25-07:00</created-at>
|
57
|
+
<created-by-user-id type="integer">8218</created-by-user-id>
|
58
|
+
<done-at type="datetime" nil="true"></done-at>
|
59
|
+
<id type="integer">331731</id>
|
60
|
+
<name>migration for user model</name>
|
61
|
+
<position type="float">3.0</position>
|
62
|
+
<started-at type="datetime" nil="true"></started-at>
|
63
|
+
<story-id type="integer">139444</story-id>
|
64
|
+
<task-status-id type="integer">23299</task-status-id>
|
65
|
+
<updated-at type="datetime">2011-06-09T12:02:25-07:00</updated-at>
|
66
|
+
<updated-by-user-id type="integer">8218</updated-by-user-id>
|
67
|
+
<assigned-to-user-name></assigned-to-user-name>
|
68
|
+
<status>pending</status>
|
69
|
+
<estimates>
|
70
|
+
<estimate>
|
71
|
+
<date>2011-06-09</date>
|
72
|
+
<hours>1.0</hours>
|
73
|
+
</estimate>
|
74
|
+
</estimates>
|
75
|
+
<hours_remaining>1.0</hours_remaining>
|
76
|
+
<link href="http://scrumninja.com/stories/139444/tasks/331731.xml?api_key=a0d550405d37584fff59dd9e86cbe0cd88188e35" title="show" rel="self"/>
|
77
|
+
</task>
|
78
|
+
</tasks>
|
data/spec/helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'webmock'
|
4
|
+
require 'webmock/rspec'
|
5
|
+
require 'scrumninja'
|
6
|
+
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.include WebMock::API
|
9
|
+
end
|
10
|
+
|
11
|
+
def fixture_path
|
12
|
+
File.expand_path("../fixtures", __FILE__)
|
13
|
+
end
|
14
|
+
|
15
|
+
def fixture(file)
|
16
|
+
File.new(fixture_path + '/' + file)
|
17
|
+
end
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
# Keep all the stuff that could change up here
|
4
|
+
API_KEY = "a0d550405d37584fff59dd9e86cbe0cd88188e35"
|
5
|
+
PROJECT_ID = 8991
|
6
|
+
STORY_ID = 139444
|
7
|
+
|
8
|
+
# The projects method
|
9
|
+
describe ScrumNinja, ".projects" do
|
10
|
+
before do
|
11
|
+
stub_request(:get, 'https://scrumninja.com/projects.xml').
|
12
|
+
with(:query => {:api_key => API_KEY}).
|
13
|
+
to_return(:body => fixture('projects.xml'), :headers => {'Content-Type' => 'application/xml; charset=utf-8'})
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should request the correct resource" do
|
17
|
+
ScrumNinja.projects(API_KEY)
|
18
|
+
a_request(:get, 'https://scrumninja.com/projects.xml').
|
19
|
+
with(:query => {:api_key => API_KEY}).
|
20
|
+
should have_been_made
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should return the correct results" do
|
24
|
+
projects = ScrumNinja.projects(API_KEY)
|
25
|
+
projects.should be_an Array
|
26
|
+
projects[0].name.should == "Tutorial Project"
|
27
|
+
puts projects[0].link
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# The project_stories method
|
32
|
+
describe ScrumNinja, ".project_stories" do
|
33
|
+
before do
|
34
|
+
stub_request(:get, "http://scrumninja.com/projects/#{PROJECT_ID}/stories.xml").
|
35
|
+
with(:query => {:api_key => API_KEY}).
|
36
|
+
to_return(:body => fixture('stories.xml'), :headers => {'Content-Type' => 'application/xml; charset=utf-8'})
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should request the correct resource" do
|
40
|
+
ScrumNinja.project_stories(API_KEY,PROJECT_ID)
|
41
|
+
a_request(:get, "http://scrumninja.com/projects/#{PROJECT_ID}/stories.xml").
|
42
|
+
with(:query => {:api_key => API_KEY}).
|
43
|
+
should have_been_made
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should return the correct results" do
|
47
|
+
stories = ScrumNinja.project_stories(API_KEY,PROJECT_ID)
|
48
|
+
stories.should be_an Array
|
49
|
+
stories[0].name.should == "Infrastructure for project"
|
50
|
+
puts stories[0].link
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# The project_backlog method
|
55
|
+
describe ScrumNinja, ".project_backlog" do
|
56
|
+
before do
|
57
|
+
stub_request(:get, "http://scrumninja.com/projects/#{PROJECT_ID}/backlog/index.xml").
|
58
|
+
with(:query => {:api_key => API_KEY}).
|
59
|
+
to_return(:body => fixture('backlog.xml'), :headers => {'Content-Type' => 'application/xml; charset=utf-8'})
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should request the correct resource" do
|
63
|
+
ScrumNinja.project_backlog(API_KEY,PROJECT_ID)
|
64
|
+
a_request(:get, "http://scrumninja.com/projects/#{PROJECT_ID}/backlog/index.xml").
|
65
|
+
with(:query => {:api_key => API_KEY}).
|
66
|
+
should have_been_made
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should return the correct results" do
|
70
|
+
sprints = ScrumNinja.project_backlog(API_KEY,PROJECT_ID)
|
71
|
+
sprints.should be_an Array
|
72
|
+
sprints[0].stories[0].name.should == "Reset Password"
|
73
|
+
puts sprints[0].stories[0].link
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
# The project_card_wall method
|
78
|
+
describe ScrumNinja, ".project_card_wall" do
|
79
|
+
before do
|
80
|
+
stub_request(:get, "http://scrumninja.com/projects/#{PROJECT_ID}/card_wall.xml").
|
81
|
+
with(:query => {:api_key => API_KEY}).
|
82
|
+
to_return(:body => fixture('card_wall.xml'), :headers => {'Content-Type' => 'application/xml; charset=utf-8'})
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should request the correct resource" do
|
86
|
+
ScrumNinja.project_card_wall(API_KEY,PROJECT_ID)
|
87
|
+
a_request(:get, "http://scrumninja.com/projects/#{PROJECT_ID}/card_wall.xml").
|
88
|
+
with(:query => {:api_key => API_KEY}).
|
89
|
+
should have_been_made
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should return the correct results" do
|
93
|
+
tasks = ScrumNinja.project_card_wall(API_KEY,PROJECT_ID)
|
94
|
+
tasks.should be_an Array
|
95
|
+
tasks[0].name.should == "configure database.yml"
|
96
|
+
puts tasks[0].link
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# The story_tasks method
|
101
|
+
describe ScrumNinja, ".story_tasks" do
|
102
|
+
before do
|
103
|
+
stub_request(:get, "http://scrumninja.com/stories/#{STORY_ID}/tasks.xml").
|
104
|
+
with(:query => {:api_key => API_KEY}).
|
105
|
+
to_return(:body => fixture('tasks.xml'), :headers => {'Content-Type' => 'application/xml; charset=utf-8'})
|
106
|
+
end
|
107
|
+
|
108
|
+
it "should request the correct resource" do
|
109
|
+
ScrumNinja.story_tasks(API_KEY,STORY_ID)
|
110
|
+
a_request(:get, "http://scrumninja.com/stories/#{STORY_ID}/tasks.xml").
|
111
|
+
with(:query => {:api_key => API_KEY}).
|
112
|
+
should have_been_made
|
113
|
+
end
|
114
|
+
|
115
|
+
it "should return the correct results" do
|
116
|
+
tasks = ScrumNinja.story_tasks(API_KEY,STORY_ID)
|
117
|
+
tasks.should be_an Array
|
118
|
+
tasks[0].name.should == "configure database.yml"
|
119
|
+
puts tasks[0].link
|
120
|
+
end
|
121
|
+
end
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: scrumninja
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Javier Muniz
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-06-09 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &2165695280 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '2.6'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2165695280
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: webmock
|
27
|
+
requirement: &2165694780 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.5'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2165694780
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: hashie
|
38
|
+
requirement: &2165694320 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.0.0
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2165694320
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: multi_xml
|
49
|
+
requirement: &2152535440 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.0
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2152535440
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: faraday_middleware
|
60
|
+
requirement: &2152534980 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.6.0
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2152534980
|
69
|
+
description: Wrapper for the Scrumninja backlog/sprint management tool.
|
70
|
+
email: javier@granicus.com
|
71
|
+
executables: []
|
72
|
+
extensions: []
|
73
|
+
extra_rdoc_files: []
|
74
|
+
files:
|
75
|
+
- .gitignore
|
76
|
+
- .rspec
|
77
|
+
- Changelog
|
78
|
+
- Gemfile
|
79
|
+
- Gemfile.lock
|
80
|
+
- LICENSE
|
81
|
+
- README
|
82
|
+
- lib/scrumninja.rb
|
83
|
+
- lib/scrumninja/client.rb
|
84
|
+
- lib/scrumninja/version.rb
|
85
|
+
- scrumninja.gemspec
|
86
|
+
- spec/fixtures/backlog.xml
|
87
|
+
- spec/fixtures/card_wall.xml
|
88
|
+
- spec/fixtures/projects.xml
|
89
|
+
- spec/fixtures/stories.xml
|
90
|
+
- spec/fixtures/tasks.xml
|
91
|
+
- spec/helper.rb
|
92
|
+
- spec/scrumninja_spec.rb
|
93
|
+
homepage: http://github.com/gov20cto/scrumninja
|
94
|
+
licenses: []
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
require_paths:
|
98
|
+
- lib
|
99
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ! '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
requirements: []
|
112
|
+
rubyforge_project: scrumninja
|
113
|
+
rubygems_version: 1.8.5
|
114
|
+
signing_key:
|
115
|
+
specification_version: 3
|
116
|
+
summary: Scrumninja API Wrapper
|
117
|
+
test_files:
|
118
|
+
- spec/fixtures/backlog.xml
|
119
|
+
- spec/fixtures/card_wall.xml
|
120
|
+
- spec/fixtures/projects.xml
|
121
|
+
- spec/fixtures/stories.xml
|
122
|
+
- spec/fixtures/tasks.xml
|
123
|
+
- spec/helper.rb
|
124
|
+
- spec/scrumninja_spec.rb
|