asana 0.0.3 → 0.0.4
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.md +11 -1
- data/Rakefile +8 -0
- data/lib/asana/resources/project.rb +13 -0
- data/lib/asana/resources/task.rb +13 -0
- data/lib/asana/resources/workspace.rb +7 -0
- data/lib/asana/version.rb +1 -1
- data/spec/asana/resources/project_spec.rb +13 -7
- data/spec/asana/resources/story_spec.rb +1 -1
- data/spec/asana/resources/task_spec.rb +13 -6
- data/spec/asana/resources/user_spec.rb +1 -1
- data/spec/asana/resources/workspace_spec.rb +10 -2
- metadata +3 -3
data/README.md
CHANGED
@@ -89,6 +89,9 @@ users = workspace.users
|
|
89
89
|
|
90
90
|
# Create a new task in a given workspace and assign it to the current user
|
91
91
|
workspace.create_task(:name => 'Get milk from the grocery store')
|
92
|
+
|
93
|
+
# Create a new project in a given workspace, current user as a watcher
|
94
|
+
workspace.create_project(:name => 'Upgrade Asana gem')
|
92
95
|
```
|
93
96
|
|
94
97
|
### [Projects][]
|
@@ -109,6 +112,9 @@ project = Asana::Project.find(:project_id)
|
|
109
112
|
# Get all projects in a given workspace
|
110
113
|
workspace = Asana::Workspace.find(:workspace_id)
|
111
114
|
projects = workspace.projects
|
115
|
+
|
116
|
+
# Change the name of a project
|
117
|
+
project.modify(:name => 'New project name')
|
112
118
|
```
|
113
119
|
|
114
120
|
### [Tasks][]
|
@@ -136,6 +142,9 @@ workspace.create_task(:name => 'Get milk from the grocery store')
|
|
136
142
|
|
137
143
|
# Create a new story for the given task
|
138
144
|
task.create_story(story_settings)
|
145
|
+
|
146
|
+
# Add a project to the task (tasks can be in multiple projects)
|
147
|
+
task.add_project(project.id)
|
139
148
|
```
|
140
149
|
|
141
150
|
### [Stories][]
|
@@ -156,8 +165,9 @@ stories = task.stories
|
|
156
165
|
# Get a specific story
|
157
166
|
story = Story.find(:story_id)
|
158
167
|
|
159
|
-
# Create a new story for the given task
|
168
|
+
# Create a new story for the given task/project
|
160
169
|
task.create_story(story_settings)
|
170
|
+
project.create_story(story_settings)
|
161
171
|
```
|
162
172
|
|
163
173
|
## Contributing
|
data/Rakefile
CHANGED
@@ -18,5 +18,18 @@ module Asana
|
|
18
18
|
Task.all_by_project(:params => { :project_id => self.id })
|
19
19
|
end
|
20
20
|
|
21
|
+
def modify(modified_fields)
|
22
|
+
resource = Resource.new(modified_fields)
|
23
|
+
response = Project.put(self.id, nil, resource.to_json)
|
24
|
+
Project.new(connection.format.decode(response.body))
|
25
|
+
end
|
26
|
+
|
27
|
+
def create_story(*args)
|
28
|
+
path = "#{self.id}/stories"
|
29
|
+
story = Story.new(args.first)
|
30
|
+
response = Project.post(path, nil, story.to_json)
|
31
|
+
Story.new(connection.format.decode(response.body))
|
32
|
+
end
|
33
|
+
|
21
34
|
end
|
22
35
|
end
|
data/lib/asana/resources/task.rb
CHANGED
@@ -11,10 +11,23 @@ module Asana
|
|
11
11
|
all(*args)
|
12
12
|
end
|
13
13
|
|
14
|
+
def modify(modified_fields)
|
15
|
+
resource = Resource.new(modified_fields)
|
16
|
+
response = Task.put(self.id, nil, resource.to_json)
|
17
|
+
Task.new(connection.format.decode(response.body))
|
18
|
+
end
|
19
|
+
|
14
20
|
def projects
|
15
21
|
Project.all_by_task(:params => { :task_id => self.id })
|
16
22
|
end
|
17
23
|
|
24
|
+
def add_project(project_id)
|
25
|
+
path = "#{self.id}/addProject"
|
26
|
+
resource = Resource.new({:project => project_id})
|
27
|
+
Task.post(path, nil, resource.to_json)
|
28
|
+
self
|
29
|
+
end
|
30
|
+
|
18
31
|
def create_story(*args)
|
19
32
|
path = "#{self.id}/stories"
|
20
33
|
options = { :task => self.id }
|
@@ -8,6 +8,13 @@ module Asana
|
|
8
8
|
Project.all_by_workspace(:params => { :workspace_id => self.id })
|
9
9
|
end
|
10
10
|
|
11
|
+
def create_project(*args)
|
12
|
+
options = { :workspace => self.id }
|
13
|
+
project = Project.new(options.merge(args.first))
|
14
|
+
response = Project.post(nil, nil, project.to_json)
|
15
|
+
Project.new(connection.format.decode(response.body))
|
16
|
+
end
|
17
|
+
|
11
18
|
def tasks(assignee)
|
12
19
|
query_options = { :workspace => self.id, :assignee => assignee }
|
13
20
|
Task.all_by_workspace(:params => query_options)
|
data/lib/asana/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative '../../spec_helper'
|
2
2
|
|
3
3
|
module Asana
|
4
4
|
describe Project do
|
@@ -43,12 +43,10 @@ module Asana
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
|
-
describe '#
|
47
|
-
it 'should
|
48
|
-
project =
|
49
|
-
|
50
|
-
project.update_attribute(:name, 'foo')
|
51
|
-
project.name.must_equal 'foo'
|
46
|
+
describe '#modify' do
|
47
|
+
it 'should modify the given project with a new name' do
|
48
|
+
project = Workspace.all.first.create_project(:name => 'asana-test-project-foo')
|
49
|
+
project.modify(:name => 'asana-test-project-bar').name.must_equal 'asana-test-project-bar'
|
52
50
|
end
|
53
51
|
end
|
54
52
|
|
@@ -61,5 +59,13 @@ module Asana
|
|
61
59
|
end
|
62
60
|
end
|
63
61
|
|
62
|
+
describe '#create_story' do
|
63
|
+
it 'should create a new story for the given project' do
|
64
|
+
project = Workspace.all.first.create_project(:name => 'asana-test-project-story')
|
65
|
+
story = project.create_story(:text => 'foo')
|
66
|
+
story.must_be_instance_of Story
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
64
70
|
end
|
65
71
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative '../../spec_helper'
|
2
2
|
|
3
3
|
module Asana
|
4
4
|
describe Task do
|
@@ -21,11 +21,10 @@ module Asana
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
describe '#
|
25
|
-
it 'should
|
26
|
-
task =
|
27
|
-
task.
|
28
|
-
task.name.must_equal 'bar'
|
24
|
+
describe '#modify' do
|
25
|
+
it 'should modify the given task with a new name' do
|
26
|
+
task = Workspace.all.first.create_task(:name => 'asana-test-foo', :assignee => 'me')
|
27
|
+
task.modify(:name => 'asana-test-bar').name.must_equal 'asana-test-bar'
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
@@ -38,6 +37,14 @@ module Asana
|
|
38
37
|
end
|
39
38
|
end
|
40
39
|
|
40
|
+
describe '#add_project' do
|
41
|
+
it 'should add the project to the given task' do
|
42
|
+
task = Workspace.all.first.create_task(:name => 'asana-test-task-add-project', :assignee => 'me')
|
43
|
+
project = Workspace.all.first.create_project(:name => 'asana-test-task-parent-project')
|
44
|
+
task.add_project project.id
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
41
48
|
describe '#create_story' do
|
42
49
|
it 'should create a new story for the given task' do
|
43
50
|
task = Project.all.first.tasks.first
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require_relative '../../spec_helper'
|
2
2
|
|
3
3
|
module Asana
|
4
4
|
describe Workspace do
|
@@ -39,11 +39,19 @@ module Asana
|
|
39
39
|
describe '#create_task' do
|
40
40
|
it 'should create a new task for the given workspace' do
|
41
41
|
workspace = Workspace.all.first
|
42
|
-
task = workspace.create_task(:name => '
|
42
|
+
task = workspace.create_task(:name => 'asana-test-task', :assignee => 'me')
|
43
43
|
task.must_be_instance_of Task
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
describe '#create_project' do
|
48
|
+
it 'should create a new project for the given workspace' do
|
49
|
+
workspace = Workspace.all.first
|
50
|
+
project = workspace.create_project(:name => 'asana-test-project')
|
51
|
+
project.must_be_instance_of Project
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
47
55
|
describe '#update' do
|
48
56
|
it 'should update the given workspace with a new name' do
|
49
57
|
workspace = Workspace.all.last
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asana
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activeresource
|
@@ -172,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
172
|
version: '0'
|
173
173
|
requirements: []
|
174
174
|
rubyforge_project:
|
175
|
-
rubygems_version: 1.8.
|
175
|
+
rubygems_version: 1.8.23
|
176
176
|
signing_key:
|
177
177
|
specification_version: 3
|
178
178
|
summary: Ruby wrapper for the Asana REST API
|