zendesk_api 0.3.3 → 0.3.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/Gemfile.lock CHANGED
@@ -7,7 +7,7 @@ GIT
7
7
  PATH
8
8
  remote: .
9
9
  specs:
10
- zendesk_api (0.3.3)
10
+ zendesk_api (0.3.4)
11
11
  faraday (>= 0.8.0)
12
12
  faraday_middleware (>= 0.8.7)
13
13
  hashie (~> 2.0.0)
@@ -55,7 +55,7 @@ GEM
55
55
  fssm (0.2.10)
56
56
  haml (4.0.1)
57
57
  tilt
58
- hashie (2.0.0)
58
+ hashie (2.0.3)
59
59
  i18n (0.6.1)
60
60
  inflection (1.0.0)
61
61
  jruby-openssl (0.8.7)
data/Readme.md CHANGED
@@ -12,6 +12,7 @@ Additional documentation can be found on our [documentation site](https://zendes
12
12
 
13
13
  * Version 0.0.5 brings with it a change to the top-level namespace. All references to Zendesk should now use ZendeskAPI.
14
14
  * Version 0.3.0 changed the license from MIT to Apache Version 2.
15
+ * Version 0.3.2 introduced a regression when side-loading roles on users. This was fixed in 0.3.4.
15
16
 
16
17
  ## Installation
17
18
 
@@ -13,7 +13,7 @@ module ZendeskAPI
13
13
  base.extend ClassMethods
14
14
  end
15
15
 
16
- def wrap_resource(resource, class_level_association)
16
+ def wrap_resource(resource, class_level_association, options = {})
17
17
  instance_association = Association.new(class_level_association.merge(:parent => self))
18
18
  klass = class_level_association[:class]
19
19
 
@@ -21,7 +21,7 @@ module ZendeskAPI
21
21
  when Hash
22
22
  klass.new(@client, resource.merge(:association => instance_association))
23
23
  when String, Fixnum
24
- klass.new(@client, :id => resource, :association => instance_association)
24
+ klass.new(@client, (options[:include_key] || :id) => resource, :association => instance_association)
25
25
  else
26
26
  resource.association = instance_association
27
27
  resource
@@ -110,7 +110,7 @@ module ZendeskAPI
110
110
  resource = if klass.respond_to?(:find) && resource_id = method_missing(association[:id_column])
111
111
  klass.find(@client, :id => resource_id, :association => instance_association)
112
112
  elsif found = method_missing(association[:name].to_sym)
113
- wrap_resource(found, association)
113
+ wrap_resource(found, association, :include_key => association[:include_key])
114
114
  elsif klass.superclass == DataResource && !association[:inline]
115
115
  rescue_client_error do
116
116
  response = @client.connection.get(instance_association.generate_path(:with_parent => true))
@@ -331,6 +331,13 @@ module ZendeskAPI
331
331
  put :request_verification
332
332
  end
333
333
 
334
+ def initialize(*)
335
+ super
336
+
337
+ # Needed for proper Role sideloading
338
+ self.role_id = role.name if key?(:role)
339
+ end
340
+
334
341
  has Organization
335
342
 
336
343
  has CustomRole, :inline => true, :include => :roles
@@ -1,3 +1,3 @@
1
1
  module ZendeskAPI
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
@@ -34,14 +34,16 @@ describe ZendeskAPI::Ticket do
34
34
  end
35
35
 
36
36
  describe ".incremental_export" do
37
- let(:results){ ZendeskAPI::Ticket.incremental_export(client, Time.at(1023059503)) } # ~ 10 years ago
37
+ let(:results) { ZendeskAPI::Ticket.incremental_export(client, Time.at(1023059503)) } # ~ 10 years ago
38
38
 
39
39
  around do |example|
40
40
  # 1 request every 5 minutes allowed <-> you can only test 1 call ...
41
41
  VCR.use_cassette("incremental_export") do
42
- Timeout.timeout(5) do # fail if we get rate-limited
43
- example.call
44
- end
42
+ client.config.retry = false
43
+
44
+ example.call
45
+
46
+ client.config.retry = true
45
47
  end
46
48
  end
47
49
 
@@ -16,4 +16,42 @@ describe ZendeskAPI::User, :delete_after do
16
16
  client.users.search(:query => current_user.email).to_a.should == [current_user]
17
17
  end
18
18
  end
19
+
20
+ context "side-loading" do
21
+ context "no permission set" do
22
+ subject do
23
+ VCR.use_cassette("user_admin_role") { client.users.find(:id => 20014182, :include => :roles) }
24
+ end
25
+
26
+ it "should include role" do
27
+ if subject
28
+ subject.role.should_not be_nil
29
+ subject.role.id.should be_nil
30
+ subject.role.name.should == "admin"
31
+ subject.role.configuration.should_not be_nil
32
+
33
+ subject.custom_role.should be_nil
34
+ end
35
+ end
36
+ end
37
+
38
+ context "permission set" do
39
+ subject do
40
+ VCR.use_cassette("user_permission_set") { client.users.find(:id => 20014327, :include => :roles) }
41
+ end
42
+
43
+ it "should include role" do
44
+ if subject
45
+ subject.role.should_not be_nil
46
+ subject.role.id.should be_nil
47
+ subject.role.name.should == "agent"
48
+
49
+ subject.custom_role.should_not be_nil
50
+ subject.custom_role.id.should == 3692
51
+ subject.custom_role.name.should == "Staff"
52
+ subject.custom_role.configuration.should_not be_nil
53
+ end
54
+ end
55
+ end
56
+ end
19
57
  end
@@ -1,6 +1,6 @@
1
1
  module ResourceMacros
2
2
  def self.extended(klass)
3
- klass.define_method(:default_options) {{}}
3
+ klass.send(:define_method, :default_options) {{}}
4
4
  end
5
5
 
6
6
  def under(object, &blk)
metadata CHANGED
@@ -1,233 +1,223 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: zendesk_api
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.3
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 4
10
+ version: 0.3.4
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Steven Davidovitz
9
14
  - Michael Grosser
10
15
  autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
- date: 2013-04-02 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2013-04-04 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
16
22
  name: bump
17
- requirement: !ruby/object:Gem::Requirement
18
- none: false
19
- requirements:
20
- - - ! '>='
21
- - !ruby/object:Gem::Version
22
- version: '0'
23
- type: :development
24
23
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ! '>='
29
- - !ruby/object:Gem::Version
30
- version: '0'
31
- - !ruby/object:Gem::Dependency
32
- name: rake
33
- requirement: !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
34
25
  none: false
35
- requirements:
36
- - - ! '>='
37
- - !ruby/object:Gem::Version
38
- version: '0'
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
39
33
  type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rake
40
37
  prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ! '>='
45
- - !ruby/object:Gem::Version
46
- version: '0'
47
- - !ruby/object:Gem::Dependency
48
- name: rspec
49
- requirement: !ruby/object:Gem::Requirement
38
+ requirement: &id002 !ruby/object:Gem::Requirement
50
39
  none: false
51
- requirements:
52
- - - ! '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
55
47
  type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: rspec
56
51
  prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
60
- - - ! '>='
61
- - !ruby/object:Gem::Version
62
- version: '0'
63
- - !ruby/object:Gem::Dependency
64
- name: vcr
65
- requirement: !ruby/object:Gem::Requirement
52
+ requirement: &id003 !ruby/object:Gem::Requirement
66
53
  none: false
67
- requirements:
68
- - - ! '>='
69
- - !ruby/object:Gem::Version
70
- version: '0'
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
71
61
  type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: vcr
72
65
  prerelease: false
73
- version_requirements: !ruby/object:Gem::Requirement
66
+ requirement: &id004 !ruby/object:Gem::Requirement
74
67
  none: false
75
- requirements:
76
- - - ! '>='
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- - !ruby/object:Gem::Dependency
80
- name: webmock
81
- requirement: !ruby/object:Gem::Requirement
82
- none: false
83
- requirements:
84
- - - ~>
85
- - !ruby/object:Gem::Version
86
- version: 1.9.0
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
87
75
  type: :development
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: webmock
88
79
  prerelease: false
89
- version_requirements: !ruby/object:Gem::Requirement
80
+ requirement: &id005 !ruby/object:Gem::Requirement
90
81
  none: false
91
- requirements:
82
+ requirements:
92
83
  - - ~>
93
- - !ruby/object:Gem::Version
84
+ - !ruby/object:Gem::Version
85
+ hash: 51
86
+ segments:
87
+ - 1
88
+ - 9
89
+ - 0
94
90
  version: 1.9.0
95
- - !ruby/object:Gem::Dependency
96
- name: yard
97
- requirement: !ruby/object:Gem::Requirement
98
- none: false
99
- requirements:
100
- - - ! '>='
101
- - !ruby/object:Gem::Version
102
- version: '0'
103
91
  type: :development
92
+ version_requirements: *id005
93
+ - !ruby/object:Gem::Dependency
94
+ name: yard
104
95
  prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
96
+ requirement: &id006 !ruby/object:Gem::Requirement
106
97
  none: false
107
- requirements:
108
- - - ! '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ hash: 3
102
+ segments:
103
+ - 0
104
+ version: "0"
105
+ type: :development
106
+ version_requirements: *id006
107
+ - !ruby/object:Gem::Dependency
112
108
  name: faraday
113
- requirement: !ruby/object:Gem::Requirement
114
- none: false
115
- requirements:
116
- - - ! '>='
117
- - !ruby/object:Gem::Version
118
- version: 0.8.0
119
- type: :runtime
120
109
  prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
110
+ requirement: &id007 !ruby/object:Gem::Requirement
122
111
  none: false
123
- requirements:
124
- - - ! '>='
125
- - !ruby/object:Gem::Version
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ hash: 63
116
+ segments:
117
+ - 0
118
+ - 8
119
+ - 0
126
120
  version: 0.8.0
127
- - !ruby/object:Gem::Dependency
128
- name: faraday_middleware
129
- requirement: !ruby/object:Gem::Requirement
130
- none: false
131
- requirements:
132
- - - ! '>='
133
- - !ruby/object:Gem::Version
134
- version: 0.8.7
135
121
  type: :runtime
122
+ version_requirements: *id007
123
+ - !ruby/object:Gem::Dependency
124
+ name: faraday_middleware
136
125
  prerelease: false
137
- version_requirements: !ruby/object:Gem::Requirement
126
+ requirement: &id008 !ruby/object:Gem::Requirement
138
127
  none: false
139
- requirements:
140
- - - ! '>='
141
- - !ruby/object:Gem::Version
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ hash: 49
132
+ segments:
133
+ - 0
134
+ - 8
135
+ - 7
142
136
  version: 0.8.7
143
- - !ruby/object:Gem::Dependency
144
- name: hashie
145
- requirement: !ruby/object:Gem::Requirement
146
- none: false
147
- requirements:
148
- - - ~>
149
- - !ruby/object:Gem::Version
150
- version: 2.0.0
151
137
  type: :runtime
138
+ version_requirements: *id008
139
+ - !ruby/object:Gem::Dependency
140
+ name: hashie
152
141
  prerelease: false
153
- version_requirements: !ruby/object:Gem::Requirement
142
+ requirement: &id009 !ruby/object:Gem::Requirement
154
143
  none: false
155
- requirements:
144
+ requirements:
156
145
  - - ~>
157
- - !ruby/object:Gem::Version
146
+ - !ruby/object:Gem::Version
147
+ hash: 15
148
+ segments:
149
+ - 2
150
+ - 0
151
+ - 0
158
152
  version: 2.0.0
159
- - !ruby/object:Gem::Dependency
160
- name: inflection
161
- requirement: !ruby/object:Gem::Requirement
162
- none: false
163
- requirements:
164
- - - ! '>='
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
153
  type: :runtime
154
+ version_requirements: *id009
155
+ - !ruby/object:Gem::Dependency
156
+ name: inflection
168
157
  prerelease: false
169
- version_requirements: !ruby/object:Gem::Requirement
170
- none: false
171
- requirements:
172
- - - ! '>='
173
- - !ruby/object:Gem::Version
174
- version: '0'
175
- - !ruby/object:Gem::Dependency
176
- name: json
177
- requirement: !ruby/object:Gem::Requirement
158
+ requirement: &id010 !ruby/object:Gem::Requirement
178
159
  none: false
179
- requirements:
180
- - - ! '>='
181
- - !ruby/object:Gem::Version
182
- version: '0'
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ hash: 3
164
+ segments:
165
+ - 0
166
+ version: "0"
183
167
  type: :runtime
168
+ version_requirements: *id010
169
+ - !ruby/object:Gem::Dependency
170
+ name: json
184
171
  prerelease: false
185
- version_requirements: !ruby/object:Gem::Requirement
186
- none: false
187
- requirements:
188
- - - ! '>='
189
- - !ruby/object:Gem::Version
190
- version: '0'
191
- - !ruby/object:Gem::Dependency
192
- name: mime-types
193
- requirement: !ruby/object:Gem::Requirement
172
+ requirement: &id011 !ruby/object:Gem::Requirement
194
173
  none: false
195
- requirements:
196
- - - ! '>='
197
- - !ruby/object:Gem::Version
198
- version: '0'
174
+ requirements:
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ hash: 3
178
+ segments:
179
+ - 0
180
+ version: "0"
199
181
  type: :runtime
182
+ version_requirements: *id011
183
+ - !ruby/object:Gem::Dependency
184
+ name: mime-types
200
185
  prerelease: false
201
- version_requirements: !ruby/object:Gem::Requirement
202
- none: false
203
- requirements:
204
- - - ! '>='
205
- - !ruby/object:Gem::Version
206
- version: '0'
207
- - !ruby/object:Gem::Dependency
208
- name: multipart-post
209
- requirement: !ruby/object:Gem::Requirement
186
+ requirement: &id012 !ruby/object:Gem::Requirement
210
187
  none: false
211
- requirements:
212
- - - ! '>='
213
- - !ruby/object:Gem::Version
214
- version: '0'
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ hash: 3
192
+ segments:
193
+ - 0
194
+ version: "0"
215
195
  type: :runtime
196
+ version_requirements: *id012
197
+ - !ruby/object:Gem::Dependency
198
+ name: multipart-post
216
199
  prerelease: false
217
- version_requirements: !ruby/object:Gem::Requirement
200
+ requirement: &id013 !ruby/object:Gem::Requirement
218
201
  none: false
219
- requirements:
220
- - - ! '>='
221
- - !ruby/object:Gem::Version
222
- version: '0'
223
- description: Ruby wrapper for the REST API at http://www.zendesk.com. Documentation
224
- at http://developer.zendesk.com.
225
- email:
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ hash: 3
206
+ segments:
207
+ - 0
208
+ version: "0"
209
+ type: :runtime
210
+ version_requirements: *id013
211
+ description: Ruby wrapper for the REST API at http://www.zendesk.com. Documentation at http://developer.zendesk.com.
212
+ email:
226
213
  - support@zendesk.com
227
214
  executables: []
215
+
228
216
  extensions: []
217
+
229
218
  extra_rdoc_files: []
230
- files:
219
+
220
+ files:
231
221
  - .gitignore
232
222
  - .rspec
233
223
  - .travis.yml
@@ -507,31 +497,43 @@ files:
507
497
  - util/verb_handler.rb
508
498
  - zendesk_api.gemspec
509
499
  homepage: http://developer.zendesk.com
510
- licenses:
500
+ licenses:
511
501
  - Apache License Version 2.0
512
502
  post_install_message:
513
503
  rdoc_options: []
514
- require_paths:
504
+
505
+ require_paths:
515
506
  - lib
516
- required_ruby_version: !ruby/object:Gem::Requirement
507
+ required_ruby_version: !ruby/object:Gem::Requirement
517
508
  none: false
518
- requirements:
519
- - - ! '>='
520
- - !ruby/object:Gem::Version
509
+ requirements:
510
+ - - ">="
511
+ - !ruby/object:Gem::Version
512
+ hash: 57
513
+ segments:
514
+ - 1
515
+ - 8
516
+ - 7
521
517
  version: 1.8.7
522
- required_rubygems_version: !ruby/object:Gem::Requirement
518
+ required_rubygems_version: !ruby/object:Gem::Requirement
523
519
  none: false
524
- requirements:
525
- - - ! '>='
526
- - !ruby/object:Gem::Version
520
+ requirements:
521
+ - - ">="
522
+ - !ruby/object:Gem::Version
523
+ hash: 23
524
+ segments:
525
+ - 1
526
+ - 3
527
+ - 6
527
528
  version: 1.3.6
528
529
  requirements: []
530
+
529
531
  rubyforge_project:
530
- rubygems_version: 1.8.25
532
+ rubygems_version: 1.8.21
531
533
  signing_key:
532
534
  specification_version: 3
533
535
  summary: Zendesk REST API Client
534
- test_files:
536
+ test_files:
535
537
  - spec/core/association_spec.rb
536
538
  - spec/core/client_spec.rb
537
539
  - spec/core/collection_spec.rb