tracker_api 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -3
- data/README.md +15 -1
- data/lib/tracker_api/endpoints/task.rb +12 -1
- data/lib/tracker_api/endpoints/tasks.rb +3 -1
- data/lib/tracker_api/resources/task.rb +19 -0
- data/lib/tracker_api/version.rb +1 -1
- data/test/task_test.rb +27 -0
- data/test/vcr/cassettes/save_task.json +1 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c36830bc748e4e3d5a45d61f64ba9df00e4f6d2
|
4
|
+
data.tar.gz: 15b700b9490e7b950862bc23ef55d7965e7de984
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0411d1435854aa5c42dd379340caed6fb4e515e6279d873af31398088d871314d05f06a1bc153a56936c467a5ee208fc921fcabd652a2df8d84dfcfe581e8da0
|
7
|
+
data.tar.gz: 526003eba259c2f63e49aa0ffdb428ef723bfe438b2a88440b351d2aa01cad084a096591b3c858441d0dce88922b8dd816b2f5a9f2df64ddf8cb1d9cad2f99d7
|
data/.travis.yml
CHANGED
@@ -4,9 +4,7 @@ rvm:
|
|
4
4
|
- "2.0.0"
|
5
5
|
- "2.1.0"
|
6
6
|
- "2.2.3"
|
7
|
-
#
|
8
|
-
# http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7044060
|
9
|
-
- "jruby"
|
7
|
+
# - "jruby"
|
10
8
|
# - rbx
|
11
9
|
# - "1.8.7"
|
12
10
|
# uncomment this line if your project needs to run something other than `rake`:
|
data/README.md
CHANGED
@@ -59,8 +59,11 @@ story.save # Save
|
|
59
59
|
story = TrackerApi::Resources::Story.new( client: client,
|
60
60
|
project_id: 123456,
|
61
61
|
id: 847762630) # Use the Story resource to get the story
|
62
|
-
comments = story.comments #
|
62
|
+
comments = story.comments # comments without first fetching the story
|
63
63
|
|
64
|
+
task = story.tasks.first # Get story tasks
|
65
|
+
task.complete = true
|
66
|
+
task.save # Mark a task complete
|
64
67
|
|
65
68
|
epics = project.epics # Get all epics for a project
|
66
69
|
epic = epics.first
|
@@ -86,6 +89,17 @@ story.comments(fields: ':default,person') # Eage
|
|
86
89
|
- Add missing resources and endpoints
|
87
90
|
- Add create, update, delete for resources
|
88
91
|
|
92
|
+
## Semantic Versioning
|
93
|
+
http://semver.org/
|
94
|
+
|
95
|
+
Given a version number MAJOR.MINOR.PATCH, increment the:
|
96
|
+
|
97
|
+
1. MAJOR version when you make incompatible API changes,
|
98
|
+
2. MINOR version when you add functionality in a backwards-compatible manner, and
|
99
|
+
3. PATCH version when you make backwards-compatible bug fixes.
|
100
|
+
|
101
|
+
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
|
102
|
+
|
89
103
|
## Contributing
|
90
104
|
|
91
105
|
Currently this client supports read-only access to Pivotal Tracker.
|
@@ -9,7 +9,18 @@ module TrackerApi
|
|
9
9
|
|
10
10
|
def create(project_id, story_id, params={})
|
11
11
|
data = client.post("/projects/#{project_id}/stories/#{story_id}/tasks", params: params).body
|
12
|
-
Resources::Task.new(data)
|
12
|
+
Resources::Task.new({ client: client }.merge(data))
|
13
|
+
end
|
14
|
+
|
15
|
+
def update(task, params={})
|
16
|
+
raise ArgumentError, 'Valid task required to update.' unless task.instance_of?(Resources::Task)
|
17
|
+
|
18
|
+
data = client.put("/projects/#{task.project_id}/stories/#{task.story_id}/tasks/#{task.id}",
|
19
|
+
params: params).body
|
20
|
+
|
21
|
+
task.attributes = data
|
22
|
+
task.clean!
|
23
|
+
task
|
13
24
|
end
|
14
25
|
end
|
15
26
|
end
|
@@ -12,7 +12,9 @@ module TrackerApi
|
|
12
12
|
raise Errors::UnexpectedData, 'Array of tasks expected' unless data.is_a? Array
|
13
13
|
|
14
14
|
data.map do |task|
|
15
|
-
Resources::Task.new({
|
15
|
+
Resources::Task.new({ client: client,
|
16
|
+
project_id: project_id,
|
17
|
+
story_id: story_id }.merge(task))
|
16
18
|
end
|
17
19
|
end
|
18
20
|
end
|
@@ -3,6 +3,9 @@ module TrackerApi
|
|
3
3
|
class Task
|
4
4
|
include Shared::Base
|
5
5
|
|
6
|
+
attribute :client
|
7
|
+
|
8
|
+
attribute :project_id, Integer
|
6
9
|
attribute :story_id, Integer
|
7
10
|
attribute :description, String
|
8
11
|
attribute :complete, Boolean
|
@@ -10,6 +13,22 @@ module TrackerApi
|
|
10
13
|
attribute :created_at, DateTime
|
11
14
|
attribute :updated_at, DateTime
|
12
15
|
attribute :kind, String
|
16
|
+
|
17
|
+
class UpdateRepresenter < Representable::Decorator
|
18
|
+
include Representable::JSON
|
19
|
+
|
20
|
+
property :id
|
21
|
+
property :description
|
22
|
+
property :complete
|
23
|
+
property :position
|
24
|
+
end
|
25
|
+
|
26
|
+
def save
|
27
|
+
raise ArgumentError, 'Cannot update a task with an unknown project_id.' if project_id.nil?
|
28
|
+
raise ArgumentError, 'Cannot update a task with an unknown story_id.' if story_id.nil?
|
29
|
+
|
30
|
+
Endpoints::Task.new(client).update(self, UpdateRepresenter.new(Task.new(self.dirty_attributes)))
|
31
|
+
end
|
13
32
|
end
|
14
33
|
end
|
15
34
|
end
|
data/lib/tracker_api/version.rb
CHANGED
data/test/task_test.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative 'minitest_helper'
|
2
|
+
|
3
|
+
describe TrackerApi::Resources::Task do
|
4
|
+
let(:pt_user) { PT_USER_1 }
|
5
|
+
let(:client) { TrackerApi::Client.new token: pt_user[:token] }
|
6
|
+
let(:project_id) { pt_user[:project_id] }
|
7
|
+
let(:project) { VCR.use_cassette('get project') { client.project(project_id) } }
|
8
|
+
let(:story_id) { '66728004' }
|
9
|
+
let(:story) { VCR.use_cassette('get story') { project.story(story_id) } }
|
10
|
+
let(:tasks) { VCR.use_cassette('get tasks', record: :new_episodes) {
|
11
|
+
VCR.use_cassette('get tasks for story') { story.tasks } } }
|
12
|
+
let(:task) { tasks.first }
|
13
|
+
|
14
|
+
it 'can update an existing task' do
|
15
|
+
new_description = "#{task.description}+"
|
16
|
+
task.description = new_description
|
17
|
+
task.complete = true
|
18
|
+
|
19
|
+
VCR.use_cassette('save task', record: :new_episodes) do
|
20
|
+
task.save
|
21
|
+
end
|
22
|
+
|
23
|
+
task.description.must_equal new_description
|
24
|
+
task.complete.must_equal true
|
25
|
+
task.clean?.must_equal true
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
{"http_interactions":[{"request":{"method":"put","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488/stories/66728004/tasks/22778038","body":{"encoding":"UTF-8","string":"{\"description\":\"Check unscaled+\",\"complete\":true}"},"headers":{"User-Agent":["Ruby/2.1.3 (x86_64-darwin15.0; ruby) TrackerApi/1.0.0 Faraday/0.9.2"],"X-TrackerToken":["d55c3bc1f74346b843ca84ba340b29bf"],"Content-Type":["application/json"]}},"response":{"status":{"code":200,"message":null},"headers":{"Content-Type":["application/json; charset=utf-8"],"Status":["200 OK"],"Cache-Control":["max-age=0, private, must-revalidate"],"Date":["Fri, 18 Mar 2016 19:14:30 GMT"],"X-Tracker-Project-Version":["122"],"X-Request-Id":["8e0ec08fef65b2f8fa9bae27a697c8db"],"X-UA-Compatible":["IE=Edge,chrome=1"],"ETag":["\"914ce4063b95be351bc4878e1242b175\""],"X-Runtime":["0.175452"],"X-Rack-Cache":["invalidate, pass"],"X-Powered-By":["Phusion Passenger Enterprise"],"Server":["nginx + Phusion Passenger"],"Access-Control-Allow-Origin":["*"],"Access-Control-Allow-Credentials":["false"],"Access-Control-Allow-Methods":["GET, POST, PUT, DELETE, OPTIONS"],"Access-Control-Allow-Headers":["X-TrackerToken,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-Tracker-Warn-Unless-Project-Version-Is"],"X-Tracker-Client-Pinger-Interval":["12"]},"body":{"encoding":"UTF-8","string":"{\"kind\":\"task\",\"id\":22778038,\"story_id\":66728004,\"description\":\"Check unscaled+\",\"complete\":true,\"position\":1,\"created_at\":\"2014-06-02T12:44:52Z\",\"updated_at\":\"2016-03-18T19:14:30Z\"}"},"http_version":null},"recorded_at":"Fri, 18 Mar 2016 19:14:30 GMT"}],"recorded_with":"VCR 3.0.1"}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tracker_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Forest Carlisle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -268,6 +268,7 @@ files:
|
|
268
268
|
- test/minitest_helper.rb
|
269
269
|
- test/project_test.rb
|
270
270
|
- test/story_test.rb
|
271
|
+
- test/task_test.rb
|
271
272
|
- test/vcr/cassettes/client_done_iterations_with_pagination.json
|
272
273
|
- test/vcr/cassettes/client_get_all_stories_with_pagination.json
|
273
274
|
- test/vcr/cassettes/client_get_limited_stories_with_no_pagination.json
|
@@ -304,6 +305,7 @@ files:
|
|
304
305
|
- test/vcr/cassettes/save_story.json
|
305
306
|
- test/vcr/cassettes/save_story_with_multiple_changes.json
|
306
307
|
- test/vcr/cassettes/save_story_with_new_label.json
|
308
|
+
- test/vcr/cassettes/save_task.json
|
307
309
|
- test/vcr/cassettes/update_story_to_create_activity.json
|
308
310
|
- tracker_api.gemspec
|
309
311
|
homepage: https://github.com/dashofcode/tracker_api
|
@@ -335,6 +337,7 @@ test_files:
|
|
335
337
|
- test/minitest_helper.rb
|
336
338
|
- test/project_test.rb
|
337
339
|
- test/story_test.rb
|
340
|
+
- test/task_test.rb
|
338
341
|
- test/vcr/cassettes/client_done_iterations_with_pagination.json
|
339
342
|
- test/vcr/cassettes/client_get_all_stories_with_pagination.json
|
340
343
|
- test/vcr/cassettes/client_get_limited_stories_with_no_pagination.json
|
@@ -371,4 +374,5 @@ test_files:
|
|
371
374
|
- test/vcr/cassettes/save_story.json
|
372
375
|
- test/vcr/cassettes/save_story_with_multiple_changes.json
|
373
376
|
- test/vcr/cassettes/save_story_with_new_label.json
|
377
|
+
- test/vcr/cassettes/save_task.json
|
374
378
|
- test/vcr/cassettes/update_story_to_create_activity.json
|