tracker_api 1.1.1 → 1.2.1

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
2
  SHA1:
3
- metadata.gz: 86a0fc8286762942b07822c2dc7efa7478eff2a9
4
- data.tar.gz: 117233a3c81bbcd6177a006f1098bdcef00af6c4
3
+ metadata.gz: 5c9ea2a8e243027907fcc5a9c85368a6d6b8b42e
4
+ data.tar.gz: 572d93e69c9d3ee8ed9e92f0601581aa8e266223
5
5
  SHA512:
6
- metadata.gz: 1c275fb7385aa58a03575e5278450f6c7606bb1080b4d782da6d827049a5026c57b7612422a3aef32cf73a36bd32f3b6aa150299502ee1adce02d95388f5c9fd
7
- data.tar.gz: 2f3b1b746c5afaa4d28af7d2e1bd3b784354a3d6de23f286f25dd55a6d36f706293c3817a4f041915ee031bd891354258fc05f429bb903b415016dc54be4c22b
6
+ metadata.gz: ef0fe7129801167c7222534634b95ac652db1b7640b9bf2e14b4f3094ecff528a0d1b7361a85dbbbde276e72590cdc6aee7db84c12c246e514121cb7fa305cd2
7
+ data.tar.gz: d0fbe2d2d61c05aaadaf3e246abc85e0068d84572fcc807a11fa0f313afc0d6163053f70d38b1585ab627ce4ac45819ce0b9ccfcbcf84dd0599ba746075f8cd2
data/README.md CHANGED
@@ -68,6 +68,8 @@ task.save # Mark
68
68
  epics = project.epics # Get all epics for a project
69
69
  epic = epics.first
70
70
  label = epic.label # Get an epic's label
71
+
72
+ workspaces = client.workspaces # Get person's multi-project workspaces
71
73
  ```
72
74
 
73
75
  ## Eager Loading
data/lib/tracker_api.rb CHANGED
@@ -42,6 +42,8 @@ module TrackerApi
42
42
  autoload :Notifications, 'tracker_api/endpoints/notifications'
43
43
  autoload :Project, 'tracker_api/endpoints/project'
44
44
  autoload :Projects, 'tracker_api/endpoints/projects'
45
+ autoload :Workspace, 'tracker_api/endpoints/workspace'
46
+ autoload :Workspaces, 'tracker_api/endpoints/workspaces'
45
47
  autoload :Stories, 'tracker_api/endpoints/stories'
46
48
  autoload :Story, 'tracker_api/endpoints/story'
47
49
  autoload :StoryOwners, 'tracker_api/endpoints/story_owners'
@@ -68,6 +70,7 @@ module TrackerApi
68
70
  autoload :PrimaryResource, 'tracker_api/resources/primary_resource'
69
71
  autoload :Project, 'tracker_api/resources/project'
70
72
  autoload :ProjectMembership, 'tracker_api/resources/project_membership'
73
+ autoload :Workspace, 'tracker_api/resources/workspace'
71
74
  autoload :Story, 'tracker_api/resources/story'
72
75
  autoload :Task, 'tracker_api/resources/task'
73
76
  autoload :TimeZone, 'tracker_api/resources/time_zone'
@@ -128,6 +128,23 @@ module TrackerApi
128
128
  Endpoints::Project.new(self).get(id, params)
129
129
  end
130
130
 
131
+ # Get workspace
132
+ #
133
+ # @param [Hash] params
134
+ # @return [TrackerApi::Resources::Workspace]
135
+ def workspace(id, params={})
136
+ Endpoints::Workspace.new(self).get(id, params)
137
+ end
138
+
139
+ # Get workspaces
140
+ #
141
+ # @param [Hash] params
142
+ # @return [Array[TrackerApi::Resources::Workspace]]
143
+ def workspaces(params={})
144
+ Endpoints::Workspaces.new(self).get(params)
145
+ end
146
+
147
+
131
148
  # Get information about the authenticated user
132
149
  #
133
150
  # @return [TrackerApi::Resources::Me]
@@ -0,0 +1,17 @@
1
+ module TrackerApi
2
+ module Endpoints
3
+ class Workspace
4
+ attr_accessor :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ def get(id, params={})
11
+ data = client.get("/my/workspaces/#{id}", params: params).body
12
+
13
+ Resources::Workspace.new({ client: client }.merge(data))
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,19 @@
1
+ module TrackerApi
2
+ module Endpoints
3
+ class Workspaces
4
+ attr_accessor :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ def get(params={})
11
+ data = client.paginate('/my/workspaces', params: params)
12
+ raise Errors::UnexpectedData, 'Array of workspaces expected' unless data.is_a? Array
13
+
14
+ data.map { |workspace| Resources::Workspace.new({ client: client }.merge(workspace))
15
+ }
16
+ end
17
+ end
18
+ end
19
+ end
@@ -12,6 +12,7 @@ module TrackerApi
12
12
  attribute :project_ids, [Integer]
13
13
  attribute :projects, [MembershipSummary]
14
14
  attribute :workspace_ids, [Integer]
15
+ attribute :workspaces, [Workspace]
15
16
  attribute :email, String
16
17
  attribute :receives_in_app_notifications, Boolean
17
18
  attribute :kind, String
@@ -0,0 +1,18 @@
1
+ module TrackerApi
2
+ module Resources
3
+ class Workspace
4
+ include Shared::Base
5
+
6
+ attribute :client
7
+
8
+ attribute :person, Person
9
+ attribute :person_id, Integer
10
+ attribute :created_at, DateTime
11
+ attribute :project_ids, [Integer]
12
+ attribute :projects, [Project]
13
+ attribute :kind, String
14
+ attribute :name, String
15
+
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module TrackerApi
2
- VERSION = '1.1.1'
2
+ VERSION = '1.2.1'
3
3
  end
data/test/client_test.rb CHANGED
@@ -61,6 +61,40 @@ describe TrackerApi::Client do
61
61
  end
62
62
  end
63
63
 
64
+ describe '.workspace' do
65
+ let(:pt_user) { PT_USER_1 }
66
+ let(:client) { TrackerApi::Client.new token: pt_user[:token] }
67
+
68
+ it 'gets a workspace by id' do
69
+ VCR.use_cassette('get workspace', record: :new_episodes) do
70
+ workspace = client.workspace(pt_user[:workspace_id])
71
+
72
+ workspace.must_be_instance_of TrackerApi::Resources::Workspace
73
+ workspace.id.must_equal pt_user[:workspace_id]
74
+ workspace.name.wont_be_empty
75
+ end
76
+ end
77
+ end
78
+
79
+
80
+ describe '.workspaces' do
81
+ let(:pt_user) { PT_USER_2 }
82
+ let(:client) { TrackerApi::Client.new token: pt_user[:token] }
83
+
84
+ it 'gets all workspaces' do
85
+ VCR.use_cassette('get all workspaces', record: :new_episodes) do
86
+ workspaces = client.workspaces(fields: ':default,projects(id,name)')
87
+
88
+ workspaces.wont_be_empty
89
+ workspace = workspaces.first
90
+ workspace.must_be_instance_of TrackerApi::Resources::Workspace
91
+ workspace.id.must_equal pt_user[:workspace_id]
92
+ end
93
+ end
94
+ end
95
+
96
+
97
+
64
98
  describe '.me' do
65
99
  let(:pt_user) { PT_USER_1 }
66
100
  let(:client) { TrackerApi::Client.new token: pt_user[:token] }
@@ -25,8 +25,8 @@ VCR.configure do |c|
25
25
  end
26
26
 
27
27
  # These API Tokens are for a user with just one Public Sample Project
28
- PT_USER_1 = { username: 'trackerapi1', password: 'trackerapi1', token: 'd55c3bc1f74346b843ca84ba340b29bf', project_id: 1027488 }
29
- PT_USER_2 = { username: 'trackerapi2', password: 'trackerapi2', token: 'ab4c5895f57995bb7547986eacf91160', project_id: 1027492 }
28
+ PT_USER_1 = { username: 'trackerapi1', password: 'trackerapi1', token: 'd55c3bc1f74346b843ca84ba340b29bf', project_id: 1027488, workspace_id: 375106 }
29
+ PT_USER_2 = { username: 'trackerapi2', password: 'trackerapi2', token: 'ab4c5895f57995bb7547986eacf91160', project_ids: [1027488, 1027492], workspace_id: 581707 }
30
30
  PT_USER_3 = { username: 'trackerapi3', password: 'trackerapi3', token: '77f9b9a466c436e6456939208c84c973', project_id: 1027494 }
31
31
  PT_USERS = [PT_USER_1, PT_USER_2, PT_USER_3]
32
32
 
data/test/story_test.rb CHANGED
@@ -76,8 +76,6 @@ describe TrackerApi::Resources::Story do
76
76
 
77
77
  describe '.owners' do
78
78
  it 'gets all owners for this story with eager loading' do
79
- skip('Until this is resolved: https://pivotaltracker.zendesk.com/requests/35823')
80
-
81
79
  story = VCR.use_cassette('get story with owners', record: :new_episodes) do
82
80
  project.story(story_id, fields: ':default,owners')
83
81
  end
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/my/workspaces?fields=%3Adefault%2Cprojects%28id%2Cname%29","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.1.7 (x86_64-darwin14.0; ruby) TrackerApi/1.1.1 Faraday/0.9.2"],"X-TrackerToken":["ab4c5895f57995bb7547986eacf91160"]}},"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":["Wed, 25 May 2016 02:27:49 GMT"],"X-Request-Id":["8ea94bdaa44758cd41af559a957129bb"],"X-UA-Compatible":["IE=Edge,chrome=1"],"ETag":["\"a80576b5a281d7a36a8e3aada2cb8c7c\""],"X-Runtime":["0.063218"],"X-Rack-Cache":["miss"],"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\":\"workspace\",\"projects\":[{\"id\":1027488,\"name\":\"My Sample Project\"},{\"id\":1027492,\"name\":\"My Sample Project\"}],\"id\":581707,\"name\":\"Multi-Project Workspace\",\"person_id\":1266316,\"project_ids\":[1027488,1027492]}]"},"http_version":null},"recorded_at":"Wed, 25 May 2016 02:27:49 GMT"}],"recorded_with":"VCR 3.0.2"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/projects/1027488/stories/66728004?fields=%3Adefault%2Cowners","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.1.7 (x86_64-darwin14.0; ruby) TrackerApi/1.1.1 Faraday/0.9.2"],"X-TrackerToken":["d55c3bc1f74346b843ca84ba340b29bf"]}},"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":["Wed, 25 May 2016 02:39:30 GMT"],"X-Tracker-Project-Version":["128"],"X-Request-Id":["9ad7de7b05ba5ba68829f040e57bcbe8"],"X-UA-Compatible":["IE=Edge,chrome=1"],"ETag":["\"1fdca41d3806416d2ff9d2521aa430ba\""],"X-Runtime":["0.078259"],"X-Rack-Cache":["miss"],"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\":\"story\",\"id\":66728004,\"created_at\":\"2014-02-17T00:00:00Z\",\"updated_at\":\"2016-05-24T22:30:07Z\",\"story_type\":\"bug\",\"name\":\"Some product photos not scaled properly when browsing products++++++++\",\"description\":\"+++++++++\",\"current_state\":\"started\",\"requested_by_id\":1266314,\"url\":\"https://www.pivotaltracker.com/story/show/66728004\",\"project_id\":1027488,\"owner_ids\":[1266314,1266316],\"owners\":[{\"kind\":\"person\",\"id\":1266314,\"name\":\"Tracker API User1\",\"email\":\"forestcarlisle+trackerapi1@gmail.com\",\"initials\":\"TU1\",\"username\":\"trackerapi1\"},{\"kind\":\"person\",\"id\":1266316,\"name\":\"Tracker API User2\",\"email\":\"forestcarlisle+trackerapi2@gmail.com\",\"initials\":\"TU2\",\"username\":\"trackerapi2\"}],\"labels\":[{\"id\":11049868,\"project_id\":1027488,\"kind\":\"label\",\"name\":\"label1\",\"created_at\":\"2015-03-07T12:51:39Z\",\"updated_at\":\"2015-03-07T12:51:39Z\"},{\"id\":11049870,\"project_id\":1027488,\"kind\":\"label\",\"name\":\"label2\",\"created_at\":\"2015-03-07T12:51:39Z\",\"updated_at\":\"2015-03-07T12:51:39Z\"},{\"id\":14060665,\"project_id\":1027488,\"kind\":\"label\",\"name\":\"super-special-label\",\"created_at\":\"2016-02-12T23:45:13Z\",\"updated_at\":\"2016-02-12T23:45:13Z\"}],\"owned_by_id\":1266314}"},"http_version":null},"recorded_at":"Wed, 25 May 2016 02:39:30 GMT"}],"recorded_with":"VCR 3.0.2"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/my/workspaces/375106","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.1.7 (x86_64-darwin14.0; ruby) TrackerApi/1.1.1 Faraday/0.9.2"],"X-TrackerToken":["d55c3bc1f74346b843ca84ba340b29bf"]}},"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":["Wed, 25 May 2016 02:27:50 GMT"],"X-Request-Id":["053ec593d3e5d88b17ad2197fa9300ec"],"X-UA-Compatible":["IE=Edge,chrome=1"],"ETag":["\"f99a89b7ccb408ba3825caea4c88e1b0\""],"X-Runtime":["0.065733"],"X-Rack-Cache":["miss"],"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\":\"workspace\",\"id\":375106,\"name\":\"Multi-Project Workspace\",\"person_id\":1266314,\"project_ids\":[1027488]}"},"http_version":null},"recorded_at":"Wed, 25 May 2016 02:27:50 GMT"}],"recorded_with":"VCR 3.0.2"}
@@ -0,0 +1 @@
1
+ {"http_interactions":[{"request":{"method":"get","uri":"https://www.pivotaltracker.com/services/v5/my/workspaces/581707?fields=%3Adefault%2Cprojects%28id%2Cname%29","body":{"encoding":"US-ASCII","string":""},"headers":{"User-Agent":["Ruby/2.1.7 (x86_64-darwin14.0; ruby) TrackerApi/1.1.1 Faraday/0.9.2"],"X-TrackerToken":["ab4c5895f57995bb7547986eacf91160"]}},"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":["Wed, 25 May 2016 02:27:49 GMT"],"X-Request-Id":["1010962fe376409c1e8e83de9b3c05be"],"X-UA-Compatible":["IE=Edge,chrome=1"],"ETag":["\"58110b19fda6dfb316c0b93fff8aab95\""],"X-Runtime":["0.052909"],"X-Rack-Cache":["miss"],"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\":\"workspace\",\"projects\":[{\"id\":1027488,\"name\":\"My Sample Project\"},{\"id\":1027492,\"name\":\"My Sample Project\"}],\"id\":581707,\"name\":\"Multi-Project Workspace\",\"person_id\":1266316,\"project_ids\":[1027488,1027492]}"},"http_version":null},"recorded_at":"Wed, 25 May 2016 02:27:48 GMT"}],"recorded_with":"VCR 3.0.2"}
@@ -0,0 +1,26 @@
1
+ require_relative 'minitest_helper'
2
+
3
+ describe TrackerApi::Resources::Workspace do
4
+ let(:pt_user) { PT_USER_2 }
5
+ let(:client) { TrackerApi::Client.new token: pt_user[:token] }
6
+ let(:workspace_id) { pt_user[:workspace_id] }
7
+ let(:workspace) { VCR.use_cassette('get workspace') { client.workspace(workspace_id) } }
8
+
9
+ describe '.projects' do
10
+ it 'gets all projects for this workspace' do
11
+ VCR.use_cassette('get workspace projects', record: :new_episodes) do
12
+ workspace = client.workspace(pt_user[:workspace_id], fields: ':default,projects(id,name)')
13
+ projects = workspace.projects
14
+
15
+ projects.wont_be_empty
16
+
17
+ projects.size.must_equal 2
18
+ projects.first.must_be_instance_of TrackerApi::Resources::Project
19
+
20
+ pt_user[:project_ids].must_include projects.first.id
21
+ pt_user[:project_ids].must_include projects.last.id
22
+ end
23
+ end
24
+
25
+ end
26
+ end
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.1.1
4
+ version: 1.2.1
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-04-04 00:00:00.000000000 Z
11
+ date: 2016-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -239,6 +239,8 @@ files:
239
239
  - lib/tracker_api/endpoints/story_owners.rb
240
240
  - lib/tracker_api/endpoints/task.rb
241
241
  - lib/tracker_api/endpoints/tasks.rb
242
+ - lib/tracker_api/endpoints/workspace.rb
243
+ - lib/tracker_api/endpoints/workspaces.rb
242
244
  - lib/tracker_api/error.rb
243
245
  - lib/tracker_api/logger.rb
244
246
  - lib/tracker_api/resources/account.rb
@@ -259,6 +261,7 @@ files:
259
261
  - lib/tracker_api/resources/story.rb
260
262
  - lib/tracker_api/resources/task.rb
261
263
  - lib/tracker_api/resources/time_zone.rb
264
+ - lib/tracker_api/resources/workspace.rb
262
265
  - lib/tracker_api/version.rb
263
266
  - lib/virtus/attribute/nullify_blank.rb
264
267
  - lib/virtus/dirty_attribute.rb
@@ -278,6 +281,7 @@ files:
278
281
  - test/vcr/cassettes/create_task.json
279
282
  - test/vcr/cassettes/get_all_notifications.json
280
283
  - test/vcr/cassettes/get_all_projects.json
284
+ - test/vcr/cassettes/get_all_workspaces.json
281
285
  - test/vcr/cassettes/get_another_story.json
282
286
  - test/vcr/cassettes/get_current_iteration.json
283
287
  - test/vcr/cassettes/get_done_iterations.json
@@ -295,17 +299,21 @@ files:
295
299
  - test/vcr/cassettes/get_story_activity.json
296
300
  - test/vcr/cassettes/get_story_comments.json
297
301
  - test/vcr/cassettes/get_story_owners.json
302
+ - test/vcr/cassettes/get_story_with_owners.json
298
303
  - test/vcr/cassettes/get_story_with_tasks.json
299
304
  - test/vcr/cassettes/get_tasks.json
300
305
  - test/vcr/cassettes/get_tasks_for_story.json
301
306
  - test/vcr/cassettes/get_tasks_when_stories_filtered.json
302
307
  - test/vcr/cassettes/get_unscheduled_stories.json
303
308
  - test/vcr/cassettes/get_unscheduled_story.json
309
+ - test/vcr/cassettes/get_workspace.json
310
+ - test/vcr/cassettes/get_workspace_projects.json
304
311
  - test/vcr/cassettes/save_story.json
305
312
  - test/vcr/cassettes/save_story_with_multiple_changes.json
306
313
  - test/vcr/cassettes/save_story_with_new_label.json
307
314
  - test/vcr/cassettes/save_task.json
308
315
  - test/vcr/cassettes/update_story_to_create_activity.json
316
+ - test/workspace_test.rb
309
317
  - tracker_api.gemspec
310
318
  homepage: https://github.com/dashofcode/tracker_api
311
319
  licenses:
@@ -347,6 +355,7 @@ test_files:
347
355
  - test/vcr/cassettes/create_task.json
348
356
  - test/vcr/cassettes/get_all_notifications.json
349
357
  - test/vcr/cassettes/get_all_projects.json
358
+ - test/vcr/cassettes/get_all_workspaces.json
350
359
  - test/vcr/cassettes/get_another_story.json
351
360
  - test/vcr/cassettes/get_current_iteration.json
352
361
  - test/vcr/cassettes/get_done_iterations.json
@@ -364,14 +373,18 @@ test_files:
364
373
  - test/vcr/cassettes/get_story_activity.json
365
374
  - test/vcr/cassettes/get_story_comments.json
366
375
  - test/vcr/cassettes/get_story_owners.json
376
+ - test/vcr/cassettes/get_story_with_owners.json
367
377
  - test/vcr/cassettes/get_story_with_tasks.json
368
378
  - test/vcr/cassettes/get_tasks.json
369
379
  - test/vcr/cassettes/get_tasks_for_story.json
370
380
  - test/vcr/cassettes/get_tasks_when_stories_filtered.json
371
381
  - test/vcr/cassettes/get_unscheduled_stories.json
372
382
  - test/vcr/cassettes/get_unscheduled_story.json
383
+ - test/vcr/cassettes/get_workspace.json
384
+ - test/vcr/cassettes/get_workspace_projects.json
373
385
  - test/vcr/cassettes/save_story.json
374
386
  - test/vcr/cassettes/save_story_with_multiple_changes.json
375
387
  - test/vcr/cassettes/save_story_with_new_label.json
376
388
  - test/vcr/cassettes/save_task.json
377
389
  - test/vcr/cassettes/update_story_to_create_activity.json
390
+ - test/workspace_test.rb