api_for_asana 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f8625a70dc2a0bbcf9db770477c38f95e32fa44e13bc71a60276be983d897a5
4
- data.tar.gz: 7b9eb78aa907c57ffb7ed4da99136429dcfa1d9de6d645f2ec380fdfec2d773b
3
+ metadata.gz: 7b3f292508c7d9a1e1c68a73afb5402518b9e1e45b199543102d5209dec48dd5
4
+ data.tar.gz: 8d1b2d3080291a30d04af55879bee1f61b4c4dc6ae660c942197f30b80cea8fb
5
5
  SHA512:
6
- metadata.gz: 90ec20d8ed487721653805567945dab5f2f33d09a1edc22a657027991e73cf37c01af43fc7f2da66d9a5dc377b133906156272d3d50f31a330cb647db4d98767
7
- data.tar.gz: f3cd0e58a11cfa63f07c7e63c74128850700034d1079425283883971782990addf5c25d37d5158fd9a83ec9678a77a25c0044241d01577c05aaf54628d225375
6
+ metadata.gz: b48c58ea6466aec0674cfca314bdb2f3b44055e10ed593a99839e36c9fa60e18ce64bd7fc0c0fe200775d3dfd372718ba780f2f30109200d816e0d7f787d3f67
7
+ data.tar.gz: 16c0358509964889cf39b742b7352280e85b342b32138be376624d0b2b0f968c2403ce16bd3d3c51302c8dfdc84b1f4df55250f67c54975e3f5f7262437d2fde
@@ -12,6 +12,8 @@ Gem::Specification.new do |spec|
12
12
  spec.files = Dir['lib/**/*.rb', 'LICENSE', 'spec/**/*.rb', 'api_for_asana.gemspec', 'README.md', 'Gemfile']
13
13
  spec.add_development_dependency 'rspec'
14
14
  spec.add_development_dependency 'rspec-rails'
15
+ spec.add_development_dependency 'dotenv'
16
+ spec.add_development_dependency 'webmock'
15
17
 
16
18
 
17
19
  # spec.metadata = {
@@ -0,0 +1,8 @@
1
+ module Helper
2
+ def send_http_request(req, uri)
3
+ req['Authorization'] = "Bearer #{ENV['API_KEY']}"
4
+ Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
5
+ http.request(req)
6
+ end
7
+ end
8
+ end
@@ -1,3 +1,3 @@
1
1
  module Version
2
- VERSION = "0.0.2"
2
+ VERSION = '0.0.3'
3
3
  end
data/lib/api_for_asana.rb CHANGED
@@ -1,72 +1,52 @@
1
1
  require 'net/http'
2
+ require 'dotenv'
3
+ require_relative './api_for_asana/helper'
4
+
2
5
  module ApiForAsana
3
-
4
- def get_sections
5
- req = Net::HTTP::Get.new(project_url)
6
- req['Authorization'] = token
7
- Net::HTTP.start(project_url.hostname, project_url.port, use_ssl: true) do |http|
8
- http.request(req)
9
- end
6
+ include Helper
7
+ Dotenv.load
8
+ def get_section(project_id)
9
+ uri = URI("#{base_url}/projects/#{project_id}/sections")
10
+ req = Net::HTTP::Get.new(uri)
11
+ send_http_request(req, uri)
10
12
  end
11
13
 
12
- def get_tasks(id)
13
- uri = URI("https://app.asana.com/api/1.0/sections/#{id}/tasks")
14
+ def get_tasks(task_id)
15
+ uri = URI("#{base_url}/sections/#{task_id}/tasks")
14
16
  req = Net::HTTP::Get.new(uri)
15
- req['Authorization'] = token
16
- Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
17
- http.request(req)
18
- end
17
+ send_http_request(req, uri)
19
18
  end
20
19
 
21
- def update_section(id, name)
22
- uri = section_url(id)
20
+ def update_section(section_id, name)
21
+ uri = URI("#{base_url}/sections/#{section_id}")
23
22
  req = Net::HTTP::Put.new(uri)
24
- req['Authorization'] = token
25
23
  req.set_form_data(name: name)
26
- Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
27
- http.request(req)
28
- end
24
+ send_http_request(req, uri)
29
25
  end
30
26
 
31
- def create_section(name)
32
- req = Net::HTTP::Post.new(project_url)
33
- req['Authorization'] = token
27
+ def create_section(project_id, name)
28
+ uri = URI("#{base_url}/projects/#{project_id}/sections")
29
+ req = Net::HTTP::Post.new(uri)
34
30
  req.set_form_data(name: name)
35
- Net::HTTP.start(project_url.hostname, project_url.port, use_ssl: true) do |http|
36
- http.request(req)
37
- end
31
+ send_http_request(req, uri)
38
32
  end
39
33
 
40
- def delete_section(id)
41
- uri = section_url(id)
34
+ def delete_section(section_id)
35
+ uri = URI("#{base_url}/sections/#{section_id}")
42
36
  req = Net::HTTP::Delete.new(uri)
43
- req['Authorization'] = token
44
- Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
45
- http.request(req)
46
- end
37
+ send_http_request(req, uri)
47
38
  end
48
39
 
49
- def update_task(id, name)
50
- uri = URI("https://app.asana.com/api/1.0/tasks/#{id}")
40
+ def update_task(task_id, name)
41
+ uri = URI("#{base_url}/tasks/#{task_id}")
51
42
  req = Net::HTTP::Put.new(uri)
52
- req['Authorization'] = token
53
43
  req.set_form_data(name: name)
54
- Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
55
- http.request(req)
56
- end
44
+ send_http_request(req, uri)
57
45
  end
58
46
 
59
47
  private
60
48
 
61
- def project_url
62
- URI('https://app.asana.com/api/1.0/projects/1204884610326667/sections')
63
- end
64
-
65
- def token
66
- 'Bearer 1/1204884589111623:bcd5f3b78ab8580dab44dda843374ad5'
67
- end
68
-
69
- def section_url(id)
70
- URI("https://app.asana.com/api/1.0/sections/#{id}")
49
+ def base_url
50
+ 'https://app.asana.com/api/1.0'
71
51
  end
72
52
  end
@@ -1,122 +1,73 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
-
5
3
  require 'spec_helper'
6
-
4
+ require 'webmock/rspec'
7
5
  require 'api_for_asana'
8
6
 
9
- describe 'ApiForAsana' do
10
-
11
- let(:dummy) { Dummy.new }
12
-
13
-
7
+ describe ApiForAsana do
8
+ let(:base_url) { 'https://app.asana.com/api/1.0' }
9
+ let(:api) { Class.new { extend ApiForAsana } }
14
10
 
15
11
  context 'When we try to access all section' do
16
-
17
12
  it 'should return status code 200' do
18
-
19
- res = dummy.get_sections
20
-
13
+ stub_request(:get, "#{base_url}/projects/1204884610326667/sections")
14
+ .with(headers: { 'Authorization' => "Bearer #{ENV['API_KEY']}" })
15
+ res = api.get_section('1204884610326667')
21
16
  expect(res.code).to eq('200')
22
-
23
- end
24
-
25
- end
26
-
27
-
28
-
29
- context 'When we try to access a task list with wrong section id' do
30
-
31
- it 'should return status code 404' do
32
-
33
- res = dummy.get_tasks('45689')
34
-
35
- expect(res.code).to eq('404')
36
-
37
17
  end
38
-
39
18
  end
40
19
 
41
- context 'When we try to access a task list with correct section id' do
42
-
20
+ context 'When we try to access a task list' do
43
21
  it 'should return status code 200' do
44
-
45
- res = dummy.get_tasks('1204884610326670')
46
-
22
+ stub_request(:get, "#{base_url}/sections/45689/tasks")
23
+ .with(headers: { 'Authorization' => "Bearer #{ENV['API_KEY']}" })
24
+ res = api.get_tasks('45689')
47
25
  expect(res.code).to eq('200')
48
-
49
26
  end
50
-
51
27
  end
52
28
 
53
- context 'When we try to update the section' do
54
29
 
55
- it 'should return status code 200' do
56
-
57
- res = dummy.update_section('1204884610326671', 'Completed')
58
30
 
31
+ context 'When we try to update the section' do
32
+ it 'should return status code 200' do
33
+ stub_request(:put, "#{base_url}/sections/1204884610326671")
34
+ .with(body: {name: 'Approved'}, headers: { 'Authorization' => "Bearer #{ENV['API_KEY']}" })
35
+ res = api.update_section('1204884610326671', 'Approved')
59
36
  expect(res.code).to eq('200')
60
-
61
37
  end
62
-
63
38
  end
64
39
 
65
- context 'When we try to update the section with wrong id' do
66
-
67
- it 'should return status code 404' do
68
-
69
- res = dummy.update_section('12048846103271', 'Completed')
70
-
71
- expect(res.code).to eq('404')
72
-
73
- end
74
40
 
75
- end
76
- context 'When we try to update the task with wrong id' do
77
- it 'should return status code 404' do
78
- res = dummy.update_task('12048846103271', 'Draft Logo')
79
- expect(res.code).to eq('404')
80
- end
81
- end
82
- context 'When we try to update the task with valid task id' do
41
+
42
+ context 'When we try to update the task' do
83
43
  it 'should return status code 200' do
84
- res = dummy.update_task('1204884611102860', 'Draft Logo')
44
+ stub_request(:put, "#{base_url}/tasks/12048846103271")
45
+ .with(body: {name: 'Draft Logo'}, headers: { 'Authorization' => "Bearer #{ENV['API_KEY']}" })
46
+ res = api.update_task('12048846103271', 'Draft Logo')
85
47
  expect(res.code).to eq('200')
86
48
  end
87
49
  end
88
50
 
89
- context 'When we try to create new section' do
90
51
 
91
- it 'should return status code 201' do
92
-
93
- res = dummy.create_section('Approved')
94
52
 
53
+ context 'When we try to create new section' do
54
+ it 'should return status code 201' do
55
+ stub_request(:post, "#{base_url}/projects/1204884610326667/sections")
56
+ .with(body: {name: 'Approved'}, headers: { 'Authorization' => "Bearer #{ENV['API_KEY']}" }).to_return( body: "", status: 201, headers: {})
57
+ res = api.create_section('1204884610326667', 'Approved')
95
58
  expect(res.code).to eq('201')
96
-
97
59
  end
98
-
99
60
  end
100
61
 
101
- context 'When we try to delete non empty section' do
102
-
103
- it 'should return status code 404' do
104
-
105
- res = dummy.delete_section('12048846103271')
106
-
107
- expect(res.code).to eq('404')
62
+ context 'When we try to delete section' do
63
+ it 'should return status code 200' do
64
+ stub_request(:delete, "#{base_url}/sections/12048846103271")
65
+ .with(headers: { 'Authorization' => "Bearer #{ENV['API_KEY']}" })
66
+ res = api.delete_section('12048846103271')
67
+ expect(res.code).to eq('200')
108
68
 
109
69
  end
110
70
 
111
71
  end
112
-
113
- end
114
-
115
-
116
-
117
- class Dummy
118
-
119
- include ApiForAsana
120
-
121
72
  end
122
73
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_for_asana
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Melashu Amare
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: dotenv
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: webmock
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  description:
42
70
  email: meshu.amare@gmail.com
43
71
  executables: []
@@ -48,6 +76,7 @@ files:
48
76
  - README.md
49
77
  - api_for_asana.gemspec
50
78
  - lib/api_for_asana.rb
79
+ - lib/api_for_asana/helper.rb
51
80
  - lib/api_for_asana/version.rb
52
81
  - spec/api_for_asana_spec.rb
53
82
  - spec/spec_helper.rb