tracker_api 1.11.0 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cce8ed0f32ae28c44915d1a2aa0dff3f7deb44f9
4
- data.tar.gz: 6478d86c0e8e8e826e0ffd50b8111758f0dec9c0
2
+ SHA256:
3
+ metadata.gz: 7d0c3f349c8d57bc33c44401068ae359892d33a8d8ed2c5c20ed96110fe02b3b
4
+ data.tar.gz: adac66edc9ddf17883734c6908b1cce46cbac8b932702a7c3f31573b0ad38b13
5
5
  SHA512:
6
- metadata.gz: 34b10827d2868cf6e0de4039ef23444b412fcb5d162e6fca2a20258f22d3ceede1e45cb4f7e829cb57ccd8a66a3506144e53eed8f7ae6954b2d2196c6244e0f1
7
- data.tar.gz: 69eb1bbad1ea7a6ef35b84e36c9b856ebc300eda60369769c242a9ec77fd5cf3c436c7280101341f657d46beab1fc382e16bbb43c074bcb6b89c97b74d71105b
6
+ metadata.gz: ea30f0006b6dff8684c3d46381d65ddfc00d3a481fbcea3489f844c7bb2c687b065e618114af8cd4392c63d770fcf1ad1ea86aad1305a5c8fca4f95ba58d7150
7
+ data.tar.gz: e67ea8cd72e9947862bdd58230aecea038e311a14ecb081f65545003f2fb3d7924c680c55a4d34a1711492f9509a2da6c368d1c93689c7b9f92f2a91e8faf267
data/README.md CHANGED
@@ -86,6 +86,10 @@ task = story.tasks.first # Get
86
86
  task.complete = true
87
87
  task.save # Mark a task complete
88
88
 
89
+ review = story.reviews.first # Mark a review as complete
90
+ review.status = 'pass'
91
+ review.save
92
+
89
93
  epics = project.epics # Get all epics for a project
90
94
  epic = epics.first
91
95
  label = epic.label # Get an epic's label
@@ -66,6 +66,7 @@ module TrackerApi
66
66
  autoload :Attachments, 'tracker_api/endpoints/attachments'
67
67
  autoload :Releases, 'tracker_api/endpoints/releases'
68
68
  autoload :Release, 'tracker_api/endpoints/release'
69
+ autoload :Review, 'tracker_api/endpoints/review'
69
70
  autoload :Reviews, 'tracker_api/endpoints/reviews'
70
71
  end
71
72
 
@@ -0,0 +1,21 @@
1
+ module TrackerApi
2
+ module Endpoints
3
+ class Review
4
+ attr_accessor :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ def update(review, params = {})
11
+ raise ArgumentError, 'Valid review required to update.' unless review.instance_of?(Resources::Review)
12
+
13
+ data = client.put("/projects/#{review.project_id}/stories/#{review.story_id}/reviews/#{review.id}", params: params).body
14
+
15
+ review.attributes = data
16
+ review.clean!
17
+ review
18
+ end
19
+ end
20
+ end
21
+ end
@@ -7,6 +7,7 @@ module TrackerApi
7
7
 
8
8
  attribute :id, Integer
9
9
  attribute :story_id, Integer
10
+ attribute :project_id, Integer
10
11
  attribute :review_type_id, Integer
11
12
  attribute :reviewer_id, Integer
12
13
  attribute :status, String # (unstarted, in_review, pass, revise)
@@ -14,6 +15,21 @@ module TrackerApi
14
15
  attribute :updated_at, DateTime
15
16
  attribute :kind, String
16
17
  attribute :review_type, ReviewType
18
+
19
+ class UpdateRepresenter < Representable::Decorator
20
+ include Representable::JSON
21
+
22
+ property :id
23
+ property :review_type_id
24
+ property :reviewer_id
25
+ property :status
26
+ end
27
+
28
+ def save
29
+ raise ArgumentError, 'Cannot update a review with an unknown story_id.' if story_id.nil?
30
+
31
+ Endpoints::Review.new(client).update(self, UpdateRepresenter.new(Review.new(dirty_attributes)))
32
+ end
17
33
  end
18
34
  end
19
- end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module TrackerApi
2
- VERSION = '1.11.0'
2
+ VERSION = '1.12.0'
3
3
  end
@@ -0,0 +1,27 @@
1
+ require_relative 'minitest_helper'
2
+
3
+ describe TrackerApi::Resources::Review do
4
+ let(:pt_user) { PT_USER_1 }
5
+ let(:client) { TrackerApi::Client.new token: pt_user[:token] }
6
+ let(:story) do
7
+ TrackerApi::Resources::Story.new(
8
+ client: client,
9
+ project_id: pt_user[:project_id],
10
+ id: '66728004'
11
+ )
12
+ end
13
+ let(:reviews) { VCR.use_cassette('get story reviews') { story.reviews } }
14
+ let(:existing_review) { reviews.first }
15
+
16
+ it 'can update an existing review' do
17
+ new_state = 'pass'
18
+ existing_review.status = new_state
19
+
20
+ VCR.use_cassette('save review', record: :new_episodes) do
21
+ existing_review.save
22
+ end
23
+
24
+ _(existing_review.status).must_equal new_state
25
+ _(existing_review.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/reviews/1129224", "body": { "encoding": "UTF-8", "string": "{\"status\":\"pass\"}" }, "headers": { "User-Agent": [ "Ruby/2.3.1 (x86_64-darwin15; ruby) TrackerApi/1.7.0 Faraday/0.9.2" ], "X-TrackerToken": ["d55c3bc1f74346b843ca84ba340b29bf"], "Content-Type": ["application/json"] } }, "response": { "status": { "code": 200, "message": null }, "headers": { "Access-Control-Allow-Credentials": ["false"], "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" ], "Access-Control-Allow-Methods": ["GET, POST, PUT, DELETE, OPTIONS"], "Access-Control-Allow-Origin": ["*"], "Cache-Control": ["max-age=0, private, must-revalidate"], "Content-Type": ["application/json; charset=utf-8"], "Date": ["Wed, 03 May 2017 23:29:39 GMT"], "Etag": ["\"32f56ee2d2f58495f5243892aa8ab824\""], "Server": ["nginx + Phusion Passenger"], "Status": ["200 OK"], "Strict-Transport-Security": [ "max-age=31536000; includeSubDomains; preload" ], "X-Content-Type-Options": ["nosniff"], "X-Powered-By": ["Phusion Passenger Enterprise"], "X-Rack-Cache": ["invalidate, pass"], "X-Request-Id": ["51304f42f751d73a2484764013fcd838"], "X-Runtime": ["0.344871"], "X-Tracker-Client-Pinger-Interval": ["20"], "X-Tracker-Project-Version": ["231"], "X-Ua-Compatible": ["IE=Edge,chrome=1"], "X-Vcap-Request-Id": ["76b36118-3332-4513-5eef-f0667c4b9bb6"], "X-Xss-Protection": ["1; mode=block"], "Content-Length": ["176"], "Connection": ["keep-alive"] }, "body": { "encoding": "ASCII-8BIT", "string": "{\"kind\":\"review\",\"id\":1129224,\"story_id\":66728004,\"review_type_id\":2293634,\"reviewer_id\":1266314,\"status\":\"pass\",\"created_at\":\"2020-06-03T15:55:47Z\",\"updated_at\":\"2020-06-03T15:56:00Z\"}" }, "http_version": null }, "recorded_at": "Wed, 03 May 2017 23:29:39 GMT" } ], "recorded_with": "VCR 2.9.3" }
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.11.0
4
+ version: 1.12.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: 2020-06-04 00:00:00.000000000 Z
11
+ date: 2021-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -255,6 +255,7 @@ files:
255
255
  - lib/tracker_api/endpoints/projects.rb
256
256
  - lib/tracker_api/endpoints/release.rb
257
257
  - lib/tracker_api/endpoints/releases.rb
258
+ - lib/tracker_api/endpoints/review.rb
258
259
  - lib/tracker_api/endpoints/reviews.rb
259
260
  - lib/tracker_api/endpoints/search.rb
260
261
  - lib/tracker_api/endpoints/stories.rb
@@ -313,6 +314,7 @@ files:
313
314
  - test/minitest_helper.rb
314
315
  - test/project_test.rb
315
316
  - test/release_test.rb
317
+ - test/review_test.rb
316
318
  - test/story_test.rb
317
319
  - test/task_test.rb
318
320
  - test/vcr/cassettes/client_done_iterations_with_pagination.json
@@ -370,6 +372,7 @@ files:
370
372
  - test/vcr/cassettes/release_stories.json
371
373
  - test/vcr/cassettes/save_comment.json
372
374
  - test/vcr/cassettes/save_previously_no_label_story_with_new_label.json
375
+ - test/vcr/cassettes/save_review.json
373
376
  - test/vcr/cassettes/save_story.json
374
377
  - test/vcr/cassettes/save_story_in_epic.json
375
378
  - test/vcr/cassettes/save_story_with_multiple_changes.json
@@ -454,8 +457,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
454
457
  - !ruby/object:Gem::Version
455
458
  version: '0'
456
459
  requirements: []
457
- rubyforge_project:
458
- rubygems_version: 2.5.2.3
460
+ rubygems_version: 3.1.4
459
461
  signing_key:
460
462
  specification_version: 4
461
463
  summary: API client for the Pivotal Tracker v5 API
@@ -468,6 +470,7 @@ test_files:
468
470
  - test/minitest_helper.rb
469
471
  - test/project_test.rb
470
472
  - test/release_test.rb
473
+ - test/review_test.rb
471
474
  - test/story_test.rb
472
475
  - test/task_test.rb
473
476
  - test/vcr/cassettes/client_done_iterations_with_pagination.json
@@ -525,6 +528,7 @@ test_files:
525
528
  - test/vcr/cassettes/release_stories.json
526
529
  - test/vcr/cassettes/save_comment.json
527
530
  - test/vcr/cassettes/save_previously_no_label_story_with_new_label.json
531
+ - test/vcr/cassettes/save_review.json
528
532
  - test/vcr/cassettes/save_story.json
529
533
  - test/vcr/cassettes/save_story_in_epic.json
530
534
  - test/vcr/cassettes/save_story_with_multiple_changes.json