peaty 0.5.0 → 0.6.0.beta1
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/Readme.textile +1 -0
- data/VERSION +1 -1
- data/lib/peaty/story.rb +5 -0
- data/lib/peaty/task.rb +27 -0
- data/lib/peaty.rb +2 -1
- data/peaty.gemspec +12 -8
- data/test/fixtures/create_task.xml +8 -0
- data/test/fixtures/task.xml +8 -0
- data/test/fixtures/tasks.xml +10 -0
- data/test/peaty_test.rb +45 -1
- data/test/test_helper.rb +23 -17
- metadata +31 -29
data/Readme.textile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.6.0.beta1
|
data/lib/peaty/story.rb
CHANGED
@@ -16,6 +16,11 @@ module Peaty
|
|
16
16
|
Project.with_connection(self.class.connection).find(self.project_id)
|
17
17
|
end
|
18
18
|
|
19
|
+
def tasks(options = {})
|
20
|
+
Proxy.new(Task, self.class.connection, options.merge(:project_id => self.project_id,
|
21
|
+
:story_id => self.id))
|
22
|
+
end
|
23
|
+
|
19
24
|
# Moves a story before or after another story
|
20
25
|
#
|
21
26
|
# story1.move(:before => story2)
|
data/lib/peaty/task.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module Peaty
|
2
|
+
class Task < Base
|
3
|
+
def complete?
|
4
|
+
self.attributes["complete"] == "true"
|
5
|
+
end
|
6
|
+
|
7
|
+
def position
|
8
|
+
self.attributes["position"].to_i
|
9
|
+
end
|
10
|
+
|
11
|
+
def story
|
12
|
+
Story.with_connection(self.class.connection).find(self.story_id)
|
13
|
+
end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def element
|
17
|
+
"task"
|
18
|
+
end
|
19
|
+
def collection_path(options = {})
|
20
|
+
"/projects/%i/stories/%i/tasks" % [options[:project_id].to_i, options[:story_id].to_i]
|
21
|
+
end
|
22
|
+
def member_path(id, options = {})
|
23
|
+
"/projects/%i/stories/%i/tasks/%i" % [options[:project_id].to_i, options[:story_id].to_i, id]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/peaty.rb
CHANGED
@@ -23,10 +23,11 @@ require 'peaty/project'
|
|
23
23
|
require 'peaty/iteration'
|
24
24
|
require 'peaty/story'
|
25
25
|
require 'peaty/user'
|
26
|
+
require 'peaty/task'
|
26
27
|
|
27
28
|
module Peaty
|
28
29
|
|
29
|
-
VERSION = "0.
|
30
|
+
VERSION = "0.6.0.beta1"
|
30
31
|
|
31
32
|
def self.root
|
32
33
|
@root ||= Pathname.new(__FILE__).dirname.parent
|
data/peaty.gemspec
CHANGED
@@ -4,13 +4,13 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
7
|
+
s.name = "peaty"
|
8
|
+
s.version = "0.6.0.beta1"
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Matt Todd", "Andy Lindeman"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
12
|
+
s.date = "2011-10-18"
|
13
|
+
s.description = "Just another Pivotal Tracker API Implementation"
|
14
14
|
s.email = ["chiology@gmail.com", "alindeman@gmail.com"]
|
15
15
|
s.files = [
|
16
16
|
"Gemfile",
|
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
"lib/peaty/project.rb",
|
25
25
|
"lib/peaty/proxy.rb",
|
26
26
|
"lib/peaty/story.rb",
|
27
|
+
"lib/peaty/task.rb",
|
27
28
|
"lib/peaty/user.rb",
|
28
29
|
"peaty.gemspec",
|
29
30
|
"test/.gitignore",
|
@@ -31,6 +32,7 @@ Gem::Specification.new do |s|
|
|
31
32
|
"test/fixtures/chores.xml",
|
32
33
|
"test/fixtures/create_story.xml",
|
33
34
|
"test/fixtures/create_story_error.xml",
|
35
|
+
"test/fixtures/create_task.xml",
|
34
36
|
"test/fixtures/features.xml",
|
35
37
|
"test/fixtures/iterations.xml",
|
36
38
|
"test/fixtures/iterations_done.xml",
|
@@ -43,14 +45,16 @@ Gem::Specification.new do |s|
|
|
43
45
|
"test/fixtures/stories.xml",
|
44
46
|
"test/fixtures/stories_with_done.xml",
|
45
47
|
"test/fixtures/story.xml",
|
48
|
+
"test/fixtures/task.xml",
|
49
|
+
"test/fixtures/tasks.xml",
|
46
50
|
"test/peaty_test.rb",
|
47
51
|
"test/test_helper.rb"
|
48
52
|
]
|
49
|
-
s.homepage =
|
53
|
+
s.homepage = "http://github.com/mtodd/peaty"
|
50
54
|
s.licenses = ["MIT"]
|
51
55
|
s.require_paths = ["lib"]
|
52
|
-
s.rubygems_version =
|
53
|
-
s.summary =
|
56
|
+
s.rubygems_version = "1.8.10"
|
57
|
+
s.summary = "Pivotal Tracker API Implementation"
|
54
58
|
|
55
59
|
if s.respond_to? :specification_version then
|
56
60
|
s.specification_version = 3
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<tasks type="array">
|
3
|
+
<task>
|
4
|
+
<id type="integer">1234</id>
|
5
|
+
<description>find shields</description>
|
6
|
+
<position>1</position>
|
7
|
+
<complete>false</complete>
|
8
|
+
<created_at type="datetime">2008/12/10 00:00:00 UTC</created_at>
|
9
|
+
</task>
|
10
|
+
</tasks>
|
data/test/peaty_test.rb
CHANGED
@@ -3,10 +3,16 @@ require 'test_helper'
|
|
3
3
|
class PeatyTest < Test::Unit::TestCase
|
4
4
|
|
5
5
|
def setup
|
6
|
+
super
|
7
|
+
|
6
8
|
RestClient.log = Logger.new(File.join(File.dirname(__FILE__), 'test.log'))
|
7
9
|
# All test's use TEST_TOKEN which is a valid API key""
|
8
10
|
@user = User.new(TEST_TOKEN)
|
9
11
|
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
FakeWeb.clean_registry
|
15
|
+
end
|
10
16
|
|
11
17
|
# Tests for Projects
|
12
18
|
def test_user_can_fetch_a_project
|
@@ -147,5 +153,43 @@ class PeatyTest < Test::Unit::TestCase
|
|
147
153
|
assert !iteration.stories.empty?
|
148
154
|
assert_equal project.id, iteration.stories.first.project.id
|
149
155
|
end
|
150
|
-
|
156
|
+
|
157
|
+
# Tests for Tasks
|
158
|
+
def test_user_can_fetch_tasks
|
159
|
+
FakeWeb.register_uri(:get, Regexp.new(PT_BASE_URI + "/projects/#{PROJECT_ID}/stories/#{STORY_ID}/tasks"),
|
160
|
+
:body => File.read(File.join(File.dirname(__FILE__), "fixtures", "tasks.xml")))
|
161
|
+
|
162
|
+
tasks = @user.pivotal_tracker_projects.find(PROJECT_ID).
|
163
|
+
stories.find(STORY_ID).
|
164
|
+
tasks
|
165
|
+
|
166
|
+
assert_equal 1, tasks.all.length
|
167
|
+
assert_equal 1234, tasks.first.id
|
168
|
+
assert_equal "find shields", tasks.first.description
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_user_can_fetch_task
|
172
|
+
FakeWeb.register_uri(:get, Regexp.new(PT_BASE_URI + "/projects/#{PROJECT_ID}/stories/#{STORY_ID}/tasks/#{TASK_ID}"),
|
173
|
+
:body => File.read(File.join(File.dirname(__FILE__), "fixtures", "task.xml")))
|
174
|
+
|
175
|
+
task = @user.pivotal_tracker_projects.find(PROJECT_ID).
|
176
|
+
stories.find(STORY_ID).
|
177
|
+
tasks.find(TASK_ID)
|
178
|
+
|
179
|
+
assert_equal 1234, task.id
|
180
|
+
assert_equal "find shields", task.description
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_user_can_create_task
|
184
|
+
FakeWeb.register_uri(:post, Regexp.new(PT_BASE_URI + "/projects/#{PROJECT_ID}/stories/#{STORY_ID}/tasks"),
|
185
|
+
:body => File.read(File.join(File.dirname(__FILE__), "fixtures", "create_task.xml")))
|
186
|
+
|
187
|
+
task = @user.pivotal_tracker_projects.find(PROJECT_ID).
|
188
|
+
stories.find(STORY_ID).
|
189
|
+
tasks.build(:description => "clean shields")
|
190
|
+
|
191
|
+
assert task.save
|
192
|
+
assert_equal 1234, task.id
|
193
|
+
assert_equal "clean shields", task.description
|
194
|
+
end
|
151
195
|
end
|
data/test/test_helper.rb
CHANGED
@@ -15,23 +15,29 @@ TEST_TOKEN = "test"
|
|
15
15
|
PROJECT_ID = 153937
|
16
16
|
STORY_ID = 6821071
|
17
17
|
RELEASE_ID = 6821121
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
"
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
}
|
34
|
-
|
18
|
+
TASK_ID = 1234
|
19
|
+
|
20
|
+
class Test::Unit::TestCase
|
21
|
+
PT_BASE_PATH = "/services/v3"
|
22
|
+
PT_BASE_URI = "https://www.pivotaltracker.com" + PT_BASE_PATH
|
23
|
+
|
24
|
+
def setup
|
25
|
+
{ "/projects" => "projects",
|
26
|
+
"/projects/#{PROJECT_ID}" => "project",
|
27
|
+
"/projects/#{PROJECT_ID}/stories" => "stories",
|
28
|
+
"/projects/#{PROJECT_ID}/iterations" => "iterations",
|
29
|
+
"/projects/#{PROJECT_ID}/iterations/done" => "iterations_done",
|
30
|
+
"/projects/#{PROJECT_ID}/stories/#{STORY_ID}" => "story",
|
31
|
+
"/projects/#{PROJECT_ID}/stories?filter=type%3Afeature" => "features",
|
32
|
+
"/projects/#{PROJECT_ID}/stories?filter=type%3Arelease" => "releases",
|
33
|
+
"/projects/#{PROJECT_ID}/stories/#{RELEASE_ID}" => "release",
|
34
|
+
"/projects/#{PROJECT_ID}/stories?filter=type%3Achore" => "chores",
|
35
|
+
"/projects/#{PROJECT_ID}/stories?filter=type%3Abug" => "bugs",
|
36
|
+
"/projects/#{PROJECT_ID}/stories?filter=includedone%3Atrue" => "stories_with_done",
|
37
|
+
}.each do |(path, fixture)|
|
38
|
+
FakeWeb.register_uri(:get, PT_BASE_URI + path, :body => File.read(File.join(File.dirname(__FILE__), "fixtures", "%s.xml" % fixture)))
|
39
|
+
end
|
40
|
+
end
|
35
41
|
end
|
36
42
|
|
37
43
|
class User < Struct.new(:pivotal_tracker_api_key)
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: peaty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.6.0.beta1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Matt Todd
|
@@ -10,12 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-
|
14
|
-
default_executable:
|
13
|
+
date: 2011-10-18 00:00:00.000000000Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: activesupport
|
18
|
-
requirement: &
|
17
|
+
requirement: &2152555760 !ruby/object:Gem::Requirement
|
19
18
|
none: false
|
20
19
|
requirements:
|
21
20
|
- - ! '>='
|
@@ -23,10 +22,10 @@ dependencies:
|
|
23
22
|
version: 3.0.4
|
24
23
|
type: :runtime
|
25
24
|
prerelease: false
|
26
|
-
version_requirements: *
|
25
|
+
version_requirements: *2152555760
|
27
26
|
- !ruby/object:Gem::Dependency
|
28
27
|
name: i18n
|
29
|
-
requirement: &
|
28
|
+
requirement: &2152555280 !ruby/object:Gem::Requirement
|
30
29
|
none: false
|
31
30
|
requirements:
|
32
31
|
- - ! '>='
|
@@ -34,10 +33,10 @@ dependencies:
|
|
34
33
|
version: '0'
|
35
34
|
type: :runtime
|
36
35
|
prerelease: false
|
37
|
-
version_requirements: *
|
36
|
+
version_requirements: *2152555280
|
38
37
|
- !ruby/object:Gem::Dependency
|
39
38
|
name: nokogiri
|
40
|
-
requirement: &
|
39
|
+
requirement: &2152554800 !ruby/object:Gem::Requirement
|
41
40
|
none: false
|
42
41
|
requirements:
|
43
42
|
- - ! '>='
|
@@ -45,10 +44,10 @@ dependencies:
|
|
45
44
|
version: '0'
|
46
45
|
type: :runtime
|
47
46
|
prerelease: false
|
48
|
-
version_requirements: *
|
47
|
+
version_requirements: *2152554800
|
49
48
|
- !ruby/object:Gem::Dependency
|
50
49
|
name: nokogiri-happymapper
|
51
|
-
requirement: &
|
50
|
+
requirement: &2152554320 !ruby/object:Gem::Requirement
|
52
51
|
none: false
|
53
52
|
requirements:
|
54
53
|
- - ! '>='
|
@@ -56,10 +55,10 @@ dependencies:
|
|
56
55
|
version: '0'
|
57
56
|
type: :runtime
|
58
57
|
prerelease: false
|
59
|
-
version_requirements: *
|
58
|
+
version_requirements: *2152554320
|
60
59
|
- !ruby/object:Gem::Dependency
|
61
60
|
name: rest-client
|
62
|
-
requirement: &
|
61
|
+
requirement: &2152553840 !ruby/object:Gem::Requirement
|
63
62
|
none: false
|
64
63
|
requirements:
|
65
64
|
- - ! '>='
|
@@ -67,10 +66,10 @@ dependencies:
|
|
67
66
|
version: '0'
|
68
67
|
type: :runtime
|
69
68
|
prerelease: false
|
70
|
-
version_requirements: *
|
69
|
+
version_requirements: *2152553840
|
71
70
|
- !ruby/object:Gem::Dependency
|
72
71
|
name: xml_to_json
|
73
|
-
requirement: &
|
72
|
+
requirement: &2152553360 !ruby/object:Gem::Requirement
|
74
73
|
none: false
|
75
74
|
requirements:
|
76
75
|
- - ~>
|
@@ -78,10 +77,10 @@ dependencies:
|
|
78
77
|
version: 0.0.2
|
79
78
|
type: :runtime
|
80
79
|
prerelease: false
|
81
|
-
version_requirements: *
|
80
|
+
version_requirements: *2152553360
|
82
81
|
- !ruby/object:Gem::Dependency
|
83
82
|
name: yajl-ruby
|
84
|
-
requirement: &
|
83
|
+
requirement: &2152552880 !ruby/object:Gem::Requirement
|
85
84
|
none: false
|
86
85
|
requirements:
|
87
86
|
- - ! '>='
|
@@ -89,10 +88,10 @@ dependencies:
|
|
89
88
|
version: '0'
|
90
89
|
type: :runtime
|
91
90
|
prerelease: false
|
92
|
-
version_requirements: *
|
91
|
+
version_requirements: *2152552880
|
93
92
|
- !ruby/object:Gem::Dependency
|
94
93
|
name: builder
|
95
|
-
requirement: &
|
94
|
+
requirement: &2152552400 !ruby/object:Gem::Requirement
|
96
95
|
none: false
|
97
96
|
requirements:
|
98
97
|
- - ! '>='
|
@@ -100,10 +99,10 @@ dependencies:
|
|
100
99
|
version: '0'
|
101
100
|
type: :development
|
102
101
|
prerelease: false
|
103
|
-
version_requirements: *
|
102
|
+
version_requirements: *2152552400
|
104
103
|
- !ruby/object:Gem::Dependency
|
105
104
|
name: jeweler
|
106
|
-
requirement: &
|
105
|
+
requirement: &2152551920 !ruby/object:Gem::Requirement
|
107
106
|
none: false
|
108
107
|
requirements:
|
109
108
|
- - ~>
|
@@ -111,10 +110,10 @@ dependencies:
|
|
111
110
|
version: 1.6.0
|
112
111
|
type: :development
|
113
112
|
prerelease: false
|
114
|
-
version_requirements: *
|
113
|
+
version_requirements: *2152551920
|
115
114
|
- !ruby/object:Gem::Dependency
|
116
115
|
name: rails_code_qa
|
117
|
-
requirement: &
|
116
|
+
requirement: &2152551440 !ruby/object:Gem::Requirement
|
118
117
|
none: false
|
119
118
|
requirements:
|
120
119
|
- - ! '>='
|
@@ -122,7 +121,7 @@ dependencies:
|
|
122
121
|
version: '0'
|
123
122
|
type: :development
|
124
123
|
prerelease: false
|
125
|
-
version_requirements: *
|
124
|
+
version_requirements: *2152551440
|
126
125
|
description: Just another Pivotal Tracker API Implementation
|
127
126
|
email:
|
128
127
|
- chiology@gmail.com
|
@@ -142,6 +141,7 @@ files:
|
|
142
141
|
- lib/peaty/project.rb
|
143
142
|
- lib/peaty/proxy.rb
|
144
143
|
- lib/peaty/story.rb
|
144
|
+
- lib/peaty/task.rb
|
145
145
|
- lib/peaty/user.rb
|
146
146
|
- peaty.gemspec
|
147
147
|
- test/.gitignore
|
@@ -149,6 +149,7 @@ files:
|
|
149
149
|
- test/fixtures/chores.xml
|
150
150
|
- test/fixtures/create_story.xml
|
151
151
|
- test/fixtures/create_story_error.xml
|
152
|
+
- test/fixtures/create_task.xml
|
152
153
|
- test/fixtures/features.xml
|
153
154
|
- test/fixtures/iterations.xml
|
154
155
|
- test/fixtures/iterations_done.xml
|
@@ -161,9 +162,10 @@ files:
|
|
161
162
|
- test/fixtures/stories.xml
|
162
163
|
- test/fixtures/stories_with_done.xml
|
163
164
|
- test/fixtures/story.xml
|
165
|
+
- test/fixtures/task.xml
|
166
|
+
- test/fixtures/tasks.xml
|
164
167
|
- test/peaty_test.rb
|
165
168
|
- test/test_helper.rb
|
166
|
-
has_rdoc: true
|
167
169
|
homepage: http://github.com/mtodd/peaty
|
168
170
|
licenses:
|
169
171
|
- MIT
|
@@ -179,16 +181,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
181
|
version: '0'
|
180
182
|
segments:
|
181
183
|
- 0
|
182
|
-
hash:
|
184
|
+
hash: 861207983553646130
|
183
185
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
186
|
none: false
|
185
187
|
requirements:
|
186
|
-
- - ! '
|
188
|
+
- - ! '>'
|
187
189
|
- !ruby/object:Gem::Version
|
188
|
-
version:
|
190
|
+
version: 1.3.1
|
189
191
|
requirements: []
|
190
192
|
rubyforge_project:
|
191
|
-
rubygems_version: 1.
|
193
|
+
rubygems_version: 1.8.10
|
192
194
|
signing_key:
|
193
195
|
specification_version: 3
|
194
196
|
summary: Pivotal Tracker API Implementation
|