zendesk_api 1.4.4 → 1.4.5

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
  SHA1:
3
- metadata.gz: 04ffe4c8d58e8f4e587f813afee1b867cc8e15a6
4
- data.tar.gz: 12bee85ee43c5d1af6fda0a4f069c6f2cfe57334
3
+ metadata.gz: a7021e19badde0fd416969c1bc4be207caaf5834
4
+ data.tar.gz: ea01dab8e9c693b241f54f5041d2c7ce99f9a8a9
5
5
  SHA512:
6
- metadata.gz: 03cea5cefaecc99504fdf12040b4dc1fc7b1bb12465d2804aec05f794da7c12b0148b196affcdedc3a77b07d97034e24983a0e4d958a716d07673132e78295dd
7
- data.tar.gz: 0fd99e6c20b86d84b5703282fdb2d9d09a5d4a41d62fbda52b7ccb5b43d038d59b3eefdec02ae7a1d6e14a1fd48940cb135578479f0d15c1c0a0d9965de73203
6
+ metadata.gz: 6d873f7e34fded76987026be01fa1150d04985928c1a56a349f8e58aabe3fcbc00af0d1e5cafdaaa7bad4833bc60775b26d3d5892559377b0c30633353478397
7
+ data.tar.gz: a1237c1049bcafe8331e6ed6e2e1c7eeeaf88c6ce59e548e874035dd2ff72e823c0f89e3534a01f164a8d83971d1a09ec198af63a4159b914fd71745ffbe732b
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zendesk_api (1.4.4)
4
+ zendesk_api (1.4.5)
5
5
  faraday (~> 0.9)
6
6
  hashie (>= 1.2, < 4.0)
7
7
  inflection
@@ -4,6 +4,31 @@ module ZendeskAPI
4
4
  # Represents an association between two resources
5
5
  # @private
6
6
  class Association
7
+ class << self
8
+ def namespaces
9
+ [ZendeskAPI] + ZendeskAPI::DataNamespace.descendants
10
+ end
11
+
12
+ def class_from_namespace(klass_as_string)
13
+ namespaces.each do |ns|
14
+ if module_defines_class?(ns, klass_as_string)
15
+ return ns.const_get(klass_as_string)
16
+ end
17
+ end
18
+
19
+ nil
20
+ end
21
+
22
+ # 1.9+ changed default to search ancestors, added flag to disable behavior.
23
+ def module_defines_class?(mod, klass_as_string)
24
+ if RUBY_VERSION < '1.9'
25
+ mod.const_defined?(klass_as_string)
26
+ else
27
+ mod.const_defined?(klass_as_string, false)
28
+ end
29
+ end
30
+ end
31
+
7
32
  # @return [Hash] Options passed into the association
8
33
  attr_reader :options
9
34
 
@@ -39,10 +64,10 @@ module ZendeskAPI
39
64
  has_parent = namespace.size > 1 || (options[:with_parent] && @options.parent)
40
65
 
41
66
  if has_parent
42
- parent_class = @options.parent ? @options.parent.class : ZendeskAPI.const_get(ZendeskAPI::Helpers.modulize_string(namespace[0]))
67
+ parent_class = @options.parent ? @options.parent.class : Association.class_from_namespace(ZendeskAPI::Helpers.modulize_string(namespace[0]))
43
68
  parent_namespace = build_parent_namespace(parent_class, instance, options, original_options)
44
69
  namespace[1..1] = parent_namespace if parent_namespace
45
- namespace[0] = parent_class.resource_name
70
+ namespace[0] = parent_class.resource_path
46
71
  else
47
72
  namespace[0] = @options.path || @options[:class].resource_path
48
73
  end
@@ -116,8 +116,11 @@ module ZendeskAPI
116
116
  end
117
117
  end
118
118
 
119
- def voice
120
- Delegator.new(self)
119
+ ZendeskAPI::DataNamespace.descendants.each do |namespace|
120
+ delegator = ZendeskAPI::Helpers.snakecase_string(namespace.to_s.split("::").last)
121
+ define_method delegator do |*| # takes arguments, but doesn't do anything with them
122
+ Delegator.new(self)
123
+ end
121
124
  end
122
125
 
123
126
  protected
@@ -171,32 +174,9 @@ module ZendeskAPI
171
174
 
172
175
  private
173
176
 
174
- def class_from_namespace(klass_as_string)
175
- namespaces.each do |ns|
176
- if module_defines_class?(ns, klass_as_string)
177
- return ns.const_get(klass_as_string)
178
- end
179
- end
180
-
181
- nil
182
- end
183
-
184
- # 1.9+ changed default to search ancestors, added flag to disable behavior.
185
- def module_defines_class?(mod, klass_as_string)
186
- if RUBY_VERSION < '1.9'
187
- mod.const_defined?(klass_as_string)
188
- else
189
- mod.const_defined?(klass_as_string, false)
190
- end
191
- end
192
-
193
- def namespaces
194
- [ZendeskAPI] + ZendeskAPI::DataNamespace.descendants
195
- end
196
-
197
177
  def method_as_class(method)
198
178
  klass_as_string = ZendeskAPI::Helpers.modulize_string(Inflection.singular(method.to_s))
199
- class_from_namespace(klass_as_string)
179
+ ZendeskAPI::Association.class_from_namespace(klass_as_string)
200
180
  end
201
181
 
202
182
  def check_url
@@ -1,6 +1,7 @@
1
1
  module ZendeskAPI
2
2
  # @internal The following are redefined later, but needed by some circular resources (e.g. Ticket -> User, User -> Ticket)
3
3
 
4
+
4
5
  class Ticket < Resource; end
5
6
  class Forum < Resource; end
6
7
  class User < Resource; end
@@ -102,21 +103,9 @@ module ZendeskAPI
102
103
  end
103
104
  end
104
105
 
105
- # @internal This isn't a real resource, it is used by ticket and request comments
106
- module CommentMixin
107
- include Save
108
-
109
- def self.included(klass)
110
- klass.has_many :uploads, :class => Attachment, :inline => true
111
- klass.has :author, :class => User
112
- end
113
-
114
- def save
115
- save_associations
116
- true
117
- end
118
-
119
- alias :save! :save
106
+ class MobileDevice < Resource
107
+ # Clears this devices' badge
108
+ put :clear_badge
120
109
  end
121
110
 
122
111
  class Organization < Resource
@@ -302,7 +291,17 @@ module ZendeskAPI
302
291
 
303
292
  class Request < Resource
304
293
  class Comment < DataResource
305
- include CommentMixin
294
+ include Save
295
+
296
+ has_many :uploads, :class => Attachment, :inline => true
297
+ has :author, :class => User
298
+
299
+ def save
300
+ save_associations
301
+ true
302
+ end
303
+
304
+ alias :save! :save
306
305
  end
307
306
 
308
307
  has Comment, :inline => true
@@ -344,7 +343,17 @@ module ZendeskAPI
344
343
  end
345
344
 
346
345
  class Comment < DataResource
347
- include CommentMixin
346
+ include Save
347
+
348
+ has_many :uploads, :class => Attachment, :inline => true
349
+ has :author, :class => User
350
+
351
+ def save
352
+ save_associations
353
+ true
354
+ end
355
+
356
+ alias :save! :save
348
357
  end
349
358
 
350
359
  put :mark_as_spam
@@ -738,4 +747,17 @@ module ZendeskAPI
738
747
  @attributes.replace(response.body) if response.body
739
748
  end
740
749
  end
750
+
751
+ module DynamicContent
752
+ include DataNamespace
753
+
754
+ class Item < ZendeskAPI::Resource
755
+ namespace 'dynamic_content'
756
+
757
+ class Variant < ZendeskAPI::Resource
758
+ end
759
+
760
+ has_many Variant
761
+ end
762
+ end
741
763
  end
@@ -1,3 +1,3 @@
1
1
  module ZendeskAPI
2
- VERSION = "1.4.4"
2
+ VERSION = "1.4.5"
3
3
  end
@@ -180,6 +180,20 @@ describe ZendeskAPI::Association do
180
180
  end
181
181
  end
182
182
 
183
+ context "when parent has a namespace" do
184
+ before(:each) do
185
+ instance.class.namespace 'hello'
186
+ end
187
+
188
+ after(:each) do
189
+ instance.class.namespace nil
190
+ end
191
+
192
+ it "should generate a specific nested resource path" do
193
+ expect(subject.generate_path(child)).to eq("hello/test_resources/1/children/1")
194
+ end
195
+ end
196
+
183
197
  context "with a specified path" do
184
198
  before(:each) { subject.options[:path] = "blergh" }
185
199
 
@@ -98,5 +98,12 @@ module ZendeskAPI
98
98
  end
99
99
  end
100
100
  end
101
+
102
+ def dynamic_content_item
103
+ VCR.use_cassette('valid_brand') do
104
+ @item ||= client.dynamic_content.items.first
105
+ @item ||= client.dynamic_content.items.create!(:name => 'Test Item', :content => 'Testing')
106
+ end
107
+ end
101
108
  end
102
109
  end
@@ -0,0 +1,16 @@
1
+ require 'core/spec_helper'
2
+
3
+ describe ZendeskAPI::DynamicContent::Item, :delete_after do
4
+ def valid_attributes
5
+ {
6
+ :name => "Snowboard Problem",
7
+ :default_locale_id => 1,
8
+ :content => "Snowboard Problem variant"
9
+ }
10
+ end
11
+
12
+ it_should_be_readable :dynamic_content, :items, :create => true
13
+ it_should_be_creatable
14
+ it_should_be_updatable :name
15
+ it_should_be_deletable
16
+ end
@@ -0,0 +1,19 @@
1
+ require 'core/spec_helper'
2
+
3
+ describe ZendeskAPI::DynamicContent::Item::Variant, :delete_after do
4
+ def valid_attributes
5
+ {
6
+ :locale_id => 127,
7
+ :active => true,
8
+ :default => false,
9
+ :content => 'Mon dieu!'
10
+ }
11
+ end
12
+
13
+ under dynamic_content_item do
14
+ it_should_be_readable dynamic_content_item, :variants, :create => true
15
+ it_should_be_creatable
16
+ it_should_be_updatable :content
17
+ it_should_be_deletable
18
+ end
19
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.4
4
+ version: 1.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Davidovitz
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-15 00:00:00.000000000 Z
12
+ date: 2014-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bump
@@ -285,6 +285,8 @@ files:
285
285
  - spec/live/category_spec.rb
286
286
  - spec/live/collection_spec.rb
287
287
  - spec/live/custom_role_spec.rb
288
+ - spec/live/dynamic_content/item_spec.rb
289
+ - spec/live/dynamic_content/variant_spec.rb
288
290
  - spec/live/forum_spec.rb
289
291
  - spec/live/forum_subscription_spec.rb
290
292
  - spec/live/group_membership_spec.rb
@@ -292,7 +294,6 @@ files:
292
294
  - spec/live/identity_spec.rb
293
295
  - spec/live/locale_spec.rb
294
296
  - spec/live/macro_spec.rb
295
- - spec/live/mobile_device_spec.rb
296
297
  - spec/live/organization_field_spec.rb
297
298
  - spec/live/organization_spec.rb
298
299
  - spec/live/request_spec.rb
@@ -397,6 +398,8 @@ test_files:
397
398
  - spec/live/category_spec.rb
398
399
  - spec/live/collection_spec.rb
399
400
  - spec/live/custom_role_spec.rb
401
+ - spec/live/dynamic_content/item_spec.rb
402
+ - spec/live/dynamic_content/variant_spec.rb
400
403
  - spec/live/forum_spec.rb
401
404
  - spec/live/forum_subscription_spec.rb
402
405
  - spec/live/group_membership_spec.rb
@@ -404,7 +407,6 @@ test_files:
404
407
  - spec/live/identity_spec.rb
405
408
  - spec/live/locale_spec.rb
406
409
  - spec/live/macro_spec.rb
407
- - spec/live/mobile_device_spec.rb
408
410
  - spec/live/organization_field_spec.rb
409
411
  - spec/live/organization_spec.rb
410
412
  - spec/live/request_spec.rb
@@ -1,11 +0,0 @@
1
- require 'core/spec_helper'
2
-
3
- describe ZendeskAPI::MobileDevice do
4
- def valid_attributes
5
- { :device_type => "iPhone", :token => "5D41402ABC4B2A76B9719D911017C592" }
6
- end
7
-
8
- it_should_be_creatable
9
- it_should_be_deletable
10
- it_should_be_readable :mobile_devices, :create => true
11
- end