zendesk2 1.12.0 → 1.13.0

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
- SHA1:
3
- metadata.gz: a61d3d90ed074ac942698a76c6032da01d98dc49
4
- data.tar.gz: c7c9d087bc7d353345a15e02455b679c745d3a91
2
+ SHA256:
3
+ metadata.gz: 976b953f93c756c82467fc000cf0ec1bbb81f7b8811592474e115aaba2395134
4
+ data.tar.gz: 4f6c9bb551ea4801c525c7925ead6aa331c97d549c32c4901ead32f60af2656d
5
5
  SHA512:
6
- metadata.gz: 68410198ef99c316d62bb865a3f2d29e9975848972ee8b706d37bd0acb84ba547209efecbff793afdee1d85edccda4fdfc93f0a069675f0a5968472c922b6cd1
7
- data.tar.gz: bf5cc95b1b2e4dc8e616112aabc0ade9419a1b68ef1223ff136209f470b3f1b0e986dc2c154fa69f898a73347eee04f17728a3d89a43f63999ab6a0c7f357b1c
6
+ metadata.gz: d0add53ea5c6a5d74d31adc1609b8cba4a8db75d3421695473e6543ec3269c84b37bc2ee946ba117fd3e63b26594f1337b7ecf168f32838556faf3b6158b70fb
7
+ data.tar.gz: d81940091f8df258e37f22ee46e408ef85dabb71c32b980dce14bc6a85f603820201eb7e79f9374acac21df25f17c1bfd7973f914def13ae9d7587a3095061bf
data/README.md CHANGED
@@ -61,6 +61,7 @@ Zendesk2.new(url: "http://support.cloud.engineyard.com", username: "mate", token
61
61
  Currently support resources:
62
62
 
63
63
  * Audit Events
64
+ * Brands
64
65
  * Categories
65
66
  * Forums
66
67
  * Groups
@@ -69,6 +70,7 @@ Currently support resources:
69
70
  * Ticket Audits
70
71
  * Ticket Fields
71
72
  * Tickets
73
+ * Ticket Forms
72
74
  * Topic Comments
73
75
  * Topics
74
76
  * User Identities
@@ -59,12 +59,14 @@ require 'zendesk2/model'
59
59
  require 'zendesk2/collection'
60
60
  require 'zendesk2/help_center'
61
61
 
62
+ require 'zendesk2/create_brand'
62
63
  require 'zendesk2/create_category'
63
64
  require 'zendesk2/create_forum'
64
65
  require 'zendesk2/create_group'
65
66
  require 'zendesk2/create_membership'
66
67
  require 'zendesk2/create_organization'
67
68
  require 'zendesk2/create_ticket'
69
+ require 'zendesk2/create_ticket_form'
68
70
  require 'zendesk2/create_ticket_field'
69
71
  require 'zendesk2/create_topic'
70
72
  require 'zendesk2/create_topic_comment'
@@ -72,12 +74,14 @@ require 'zendesk2/create_user'
72
74
  require 'zendesk2/create_user_field'
73
75
  require 'zendesk2/create_user_identity'
74
76
  require 'zendesk2/create_view'
77
+ require 'zendesk2/destroy_brand'
75
78
  require 'zendesk2/destroy_category'
76
79
  require 'zendesk2/destroy_forum'
77
80
  require 'zendesk2/destroy_group'
78
81
  require 'zendesk2/destroy_membership'
79
82
  require 'zendesk2/destroy_organization'
80
83
  require 'zendesk2/destroy_ticket'
84
+ require 'zendesk2/destroy_ticket_form'
81
85
  require 'zendesk2/destroy_ticket_field'
82
86
  require 'zendesk2/destroy_topic'
83
87
  require 'zendesk2/destroy_topic_comment'
@@ -86,6 +90,8 @@ require 'zendesk2/destroy_user_field'
86
90
  require 'zendesk2/destroy_user_identity'
87
91
  require 'zendesk2/destroy_view'
88
92
  require 'zendesk2/get_assignable_groups'
93
+ require 'zendesk2/get_brand'
94
+ require 'zendesk2/get_brands'
89
95
  require 'zendesk2/get_categories'
90
96
  require 'zendesk2/get_category'
91
97
  require 'zendesk2/get_ccd_tickets'
@@ -109,6 +115,8 @@ require 'zendesk2/get_ticket_audits'
109
115
  require 'zendesk2/get_ticket_comments'
110
116
  require 'zendesk2/get_ticket_field'
111
117
  require 'zendesk2/get_ticket_fields'
118
+ require 'zendesk2/get_ticket_form'
119
+ require 'zendesk2/get_ticket_forms'
112
120
  require 'zendesk2/get_ticket_metric'
113
121
  require 'zendesk2/get_ticket_metrics'
114
122
  require 'zendesk2/get_tickets'
@@ -130,10 +138,12 @@ require 'zendesk2/get_views'
130
138
  require 'zendesk2/mark_membership_default'
131
139
  require 'zendesk2/mark_user_identity_primary'
132
140
  require 'zendesk2/update_category'
141
+ require 'zendesk2/update_brand'
133
142
  require 'zendesk2/update_forum'
134
143
  require 'zendesk2/update_group'
135
144
  require 'zendesk2/update_organization'
136
145
  require 'zendesk2/update_ticket'
146
+ require 'zendesk2/update_ticket_form'
137
147
  require 'zendesk2/update_ticket_field'
138
148
  require 'zendesk2/update_topic'
139
149
  require 'zendesk2/update_user'
@@ -147,6 +157,7 @@ require 'zendesk2/search_user'
147
157
 
148
158
  require 'zendesk2/audit_event'
149
159
 
160
+ require 'zendesk2/brand'
150
161
  require 'zendesk2/category'
151
162
  require 'zendesk2/forum'
152
163
  require 'zendesk2/group'
@@ -156,6 +167,7 @@ require 'zendesk2/ticket'
156
167
  require 'zendesk2/ticket_audit'
157
168
  require 'zendesk2/ticket_comment'
158
169
  require 'zendesk2/ticket_field'
170
+ require 'zendesk2/ticket_form'
159
171
  require 'zendesk2/topic'
160
172
  require 'zendesk2/topic_comment'
161
173
  require 'zendesk2/user'
@@ -163,6 +175,7 @@ require 'zendesk2/user_field'
163
175
  require 'zendesk2/user_identity'
164
176
  require 'zendesk2/view'
165
177
 
178
+ require 'zendesk2/brands'
166
179
  require 'zendesk2/categories'
167
180
  require 'zendesk2/forums'
168
181
  require 'zendesk2/groups'
@@ -171,6 +184,7 @@ require 'zendesk2/organizations'
171
184
  require 'zendesk2/ticket_audits'
172
185
  require 'zendesk2/ticket_comments'
173
186
  require 'zendesk2/ticket_fields'
187
+ require 'zendesk2/ticket_forms'
174
188
  require 'zendesk2/tickets'
175
189
  require 'zendesk2/topic_comments'
176
190
  require 'zendesk2/topics'
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::Brand
3
+ include Zendesk2::Model
4
+
5
+ extend Zendesk2::Attributes
6
+
7
+ # @return [integer] Automatically assigned upon creation
8
+ identity :id, type: :integer
9
+
10
+ # @return [String] The API url of this brand
11
+ attribute :url, type: :string
12
+ # @return [String] The name of the brand
13
+ attribute :name, type: :string
14
+ # @return [String] The url of the brand
15
+ attribute :brand_url, type: :string
16
+ # @return [Boolean] If the brand has a Help Center
17
+ attribute :has_help_center, type: :boolean
18
+ # @return [String] The state of the Help Center: enabled, disabled, or restricted
19
+ attribute :help_center_state, type: :string
20
+ # @return [Boolean] If the brand is set as active
21
+ attribute :active, type: :boolean
22
+ # @return [Boolean] Is the brand the default brand for this account
23
+ attribute :default, type: :boolean
24
+ # @return [Attachment] Logo image for this brand
25
+ attribute :logo, type: :Attachment
26
+ # @return [Array] The ids of ticket forms that are available for use by a brand
27
+ attribute :ticket_form_ids, type: :array
28
+ # @return [Date] The time the brand was created
29
+ attribute :created_at, type: :date
30
+ # @return [Date] The time of the last update of the brand
31
+ attribute :updated_at, type: :date
32
+ # @return [String] The subdomain of the brand
33
+ attribute :subdomain, type: :string
34
+ # @return [String] The hostmapping to this brand, if any (only admins view this key)
35
+ attribute :host_mapping, type: :string
36
+ # @return [String] The signature template for a brand
37
+ attribute :signature_template, type: :string
38
+
39
+ def save!
40
+ data = if new_record?
41
+ requires :name
42
+
43
+ cistern.create_brand('brand' => attributes)
44
+ else
45
+ requires :identity
46
+
47
+ cistern.update_brand('brand' => attributes)
48
+ end.body['brand']
49
+
50
+ merge_attributes(data)
51
+ end
52
+
53
+ def destroy!
54
+ requires :identity
55
+
56
+ cistern.destroy_brand('brand' => { 'id' => identity })
57
+ end
58
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::Brands
3
+ include Zendesk2::Collection
4
+
5
+ model Zendesk2::Brand
6
+
7
+ attribute :count, type: :integer
8
+
9
+ self.collection_method = :get_brands
10
+ self.collection_root = 'brands'
11
+ self.model_method = :get_brand
12
+ self.model_root = 'brand'
13
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::CreateBrand
3
+ include Zendesk2::Request
4
+
5
+ request_method :post
6
+ request_path { |_| '/brands.json' }
7
+ request_body { |r| { 'brand' => r.brand_params } }
8
+
9
+ def self.accepted_attributes
10
+ %w(name brand_url has_help_center help_center_state active default ticket_form_ids
11
+ subdomain host_mapping signature_template)
12
+ end
13
+
14
+ def brand_params
15
+ Cistern::Hash.slice(params.fetch('brand'), *self.class.accepted_attributes)
16
+ end
17
+
18
+ def mock
19
+ identity = cistern.serial_id
20
+
21
+ record = {
22
+ 'id' => identity,
23
+ 'name' => params['name'],
24
+ 'brand_url' => '',
25
+ 'has_help_center' => true,
26
+ 'help_center_state' => true,
27
+ 'active' => true,
28
+ 'end_user_visible' => true,
29
+ 'default' => false,
30
+ 'ticket_form_ids' => params['ticket_form_ids'],
31
+ 'subdomain' => params['subdomain'],
32
+ 'host_mapping' => '',
33
+ 'signature_template' => '',
34
+ 'url' => url_for("/brands/#{identity}.json"),
35
+ }.merge(brand_params)
36
+
37
+ data[:brands][identity] = record
38
+
39
+ mock_response('brand' => record)
40
+ end
41
+ end
@@ -8,7 +8,7 @@ class Zendesk2::CreateTicket
8
8
 
9
9
  def self.accepted_attributes
10
10
  %w(external_id via priority requester requester_id submitter_id assignee_id organization_id subject description
11
- custom_fields recipient status collaborator_ids collaborators tags)
11
+ custom_fields recipient status collaborator_ids collaborators tags ticket_form_id brand_id)
12
12
  end
13
13
 
14
14
  def ticket_params
@@ -8,7 +8,7 @@ class Zendesk2::CreateTicketField
8
8
 
9
9
  def self.accepted_attributes
10
10
  %w(type title description position active required collapsed_for_agents regexp_for_validation title_in_portal
11
- visible_in_portal editable_in_portal required_in_portal tag custom_field_options)
11
+ visible_in_portal editable_in_portal required_in_portal tag custom_field_options agent_description)
12
12
  end
13
13
 
14
14
  def ticket_field_params
@@ -35,6 +35,7 @@ class Zendesk2::CreateTicketField
35
35
  'updated_at' => timestamp,
36
36
  'url' => url_for("/ticket_fields/#{identity}.json"),
37
37
  'visible_in_portal' => false,
38
+ 'agent_description' => '',
38
39
  }.merge(ticket_field_params)
39
40
 
40
41
  data[:ticket_fields][identity] = record
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::CreateTicketForm
3
+ include Zendesk2::Request
4
+
5
+ request_method :post
6
+ request_path { |_| '/ticket_forms.json' }
7
+ request_body { |r| { 'ticket_form' => r.ticket_form_params } }
8
+
9
+ def self.accepted_attributes
10
+ %w(name raw_name display_name raw_display_name position active end_user_visible default ticket_field_ids
11
+ in_all_brands restricted_brand_ids)
12
+ end
13
+
14
+ def ticket_form_params
15
+ Cistern::Hash.slice(params.fetch('ticket_form'), *self.class.accepted_attributes)
16
+ end
17
+
18
+ def mock
19
+ identity = cistern.serial_id
20
+
21
+ record = {
22
+ 'id' => identity,
23
+ 'name' => params['name'],
24
+ 'raw_name' => '',
25
+ 'display_name' => '',
26
+ 'raw_display_name' => '',
27
+ 'position' => 9999,
28
+ 'active' => true,
29
+ 'end_user_visible' => true,
30
+ 'default' => false,
31
+ 'ticket_field_ids' => params['ticket_field_ids'],
32
+ 'in_all_brands' => false,
33
+ 'restricted_brand_ids' => params['restricted_brand_ids'],
34
+ 'url' => url_for("/ticket_forms/#{identity}.json"),
35
+ }.merge(ticket_form_params)
36
+
37
+ data[:ticket_forms][identity] = record
38
+
39
+ mock_response('ticket_form' => record)
40
+ end
41
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::DestroyBrand
3
+ include Zendesk2::Request
4
+
5
+ request_method :delete
6
+ request_path { |r| "/brands/#{r.brand_id}.json" }
7
+
8
+ def brand_id
9
+ params.fetch('brand').fetch('id')
10
+ end
11
+
12
+ def mock
13
+ delete!(:brands, brand_id)
14
+
15
+ mock_response(nil)
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::DestroyTicketForm
3
+ include Zendesk2::Request
4
+
5
+ request_method :delete
6
+ request_path { |r| "/ticket_forms/#{r.ticket_form_id}.json" }
7
+
8
+ def ticket_form_id
9
+ params.fetch('ticket_form').fetch('id')
10
+ end
11
+
12
+ def mock
13
+ delete!(:ticket_forms, ticket_form_id)
14
+
15
+ mock_response(nil)
16
+ end
17
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::GetBrand
3
+ include Zendesk2::Request
4
+
5
+ request_method :get
6
+ request_path { |r| "/brands/#{r.brand_id}.json" }
7
+
8
+ def brand_id
9
+ params.fetch('brand').fetch('id').to_i
10
+ end
11
+
12
+ def mock
13
+ mock_response('brand' => find!(:brands, brand_id))
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::GetBrands
3
+ include Zendesk2::Request
4
+
5
+ request_method :get
6
+ request_path { |_r| '/brands.json' }
7
+
8
+ page_params!
9
+
10
+ def mock
11
+ page(:brands)
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::GetTicketForm
3
+ include Zendesk2::Request
4
+
5
+ request_method :get
6
+ request_path { |r| "/ticket_forms/#{r.ticket_form_id}.json" }
7
+
8
+ def ticket_form_id
9
+ params.fetch('ticket_form').fetch('id').to_i
10
+ end
11
+
12
+ def mock
13
+ mock_response('ticket_form' => find!(:ticket_forms, ticket_form_id))
14
+ end
15
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::GetTicketForms
3
+ include Zendesk2::Request
4
+
5
+ request_method :get
6
+ request_path { |_| '/ticket_forms.json' }
7
+ request_params do |r|
8
+ result = {}
9
+ result['active'] = r.active unless r.active.nil?
10
+ result['end_user_visible'] = r.end_user_visible unless r.end_user_visible.nil?
11
+ result['fallback_to_default'] = r.fallback_to_default unless r.fallback_to_default.nil?
12
+ result['associated_to_brand'] = r.associated_to_brand unless r.associated_to_brand.nil?
13
+ result
14
+ end
15
+
16
+ page_params!
17
+
18
+ def active
19
+ params['active']
20
+ end
21
+
22
+ def end_user_visible
23
+ params['end_user_visible']
24
+ end
25
+
26
+ def fallback_to_default
27
+ params['fallback_to_default']
28
+ end
29
+
30
+ def associated_to_brand
31
+ params['associated_to_brand']
32
+ end
33
+
34
+ def mock
35
+ page(:ticket_forms)
36
+ end
37
+ end
@@ -45,6 +45,10 @@ class Zendesk2::HelpCenter::Article
45
45
  attribute :vote_count, type: :integer # ro:yes required:no
46
46
  # @return [Integer] The total sum of votes on this article
47
47
  attribute :vote_sum, type: :integer # ro:yes required:no
48
+ # @return [Integer] The id of the user segment which defines who can see this article
49
+ attribute :user_segment_id, type: :integer, default: nil # ro:no required:yes
50
+ # @return [Integer] The id of the permission group which defines who can edit and publish this article
51
+ attribute :permission_group_id, type: :integer # ro:no required:yes
48
52
 
49
53
  assoc_accessor :section, collection: :help_center_sections
50
54
 
@@ -62,7 +66,7 @@ class Zendesk2::HelpCenter::Article
62
66
 
63
67
  def save!
64
68
  response = if new_record?
65
- requires :title, :locale, :section_id
69
+ requires :title, :locale, :section_id, :permission_group_id
66
70
 
67
71
  cistern.create_help_center_article('article' => attributes)
68
72
  else
@@ -14,7 +14,19 @@ class Zendesk2::CreateHelpCenterArticle
14
14
  end
15
15
 
16
16
  def self.accepted_attributes
17
- %w(author_id body comments_disabled draft label_names locale position promoted section_id title)
17
+ %w(
18
+ author_id
19
+ body
20
+ comments_disabled
21
+ draft
22
+ label_names
23
+ locale
24
+ position
25
+ promoted
26
+ section_id
27
+ title user_segment_id
28
+ permission_group_id
29
+ )
18
30
  end
19
31
 
20
32
  def article_params
@@ -32,24 +44,26 @@ class Zendesk2::CreateHelpCenterArticle
32
44
  position = data[:help_center_articles].values.select { |a| a['section_id'] == section_id }.size
33
45
 
34
46
  record = {
35
- 'id' => identity,
36
- 'url' => url_for("/help_center/#{locale}/articles/#{identity}.json"),
37
- 'html_url' => html_url_for("/hc/#{locale}/articles/#{identity}.json"),
38
- 'author_id' => cistern.current_user['id'],
39
- 'comments_disabled' => false,
40
- 'label_names' => [],
41
- 'draft' => false,
42
- 'promoted' => false,
43
- 'position' => position,
44
- 'vote_sum' => 0,
45
- 'vote_count' => 0,
46
- 'section_id' => section_id,
47
- 'created_at' => timestamp,
48
- 'updated_at' => timestamp,
49
- 'title' => '',
50
- 'body' => '',
51
- 'source_locale' => locale,
52
- 'outdated' => false,
47
+ 'id' => identity,
48
+ 'url' => url_for("/help_center/#{locale}/articles/#{identity}.json"),
49
+ 'html_url' => html_url_for("/hc/#{locale}/articles/#{identity}.json"),
50
+ 'author_id' => cistern.current_user['id'],
51
+ 'comments_disabled' => false,
52
+ 'label_names' => [],
53
+ 'draft' => false,
54
+ 'promoted' => false,
55
+ 'position' => position,
56
+ 'vote_sum' => 0,
57
+ 'vote_count' => 0,
58
+ 'section_id' => section_id,
59
+ 'created_at' => timestamp,
60
+ 'updated_at' => timestamp,
61
+ 'title' => '',
62
+ 'body' => '',
63
+ 'source_locale' => locale,
64
+ 'outdated' => false,
65
+ 'user_segment_id' => 0,
66
+ 'permission_group_id' => 0,
53
67
  }.merge(article_params)
54
68
 
55
69
  data[:help_center_articles][identity] = record
@@ -7,6 +7,7 @@ class Zendesk2::Mock
7
7
  def self.data
8
8
  @data ||= Hash.new do |h, k|
9
9
  h[k] = {
10
+ brands: {},
10
11
  categories: {},
11
12
  forums: {},
12
13
  groups: {},
@@ -24,6 +25,7 @@ class Zendesk2::Mock
24
25
  ticket_audits: {},
25
26
  ticket_comments: {},
26
27
  ticket_fields: {},
28
+ ticket_forms: {},
27
29
  ticket_metrics: {},
28
30
  tickets: {},
29
31
  topic_comments: {},
@@ -57,6 +57,10 @@ class Zendesk2::Ticket
57
57
  attribute :url, type: :string
58
58
  # @return [Hash] This object explains how the ticket was created
59
59
  attribute :via
60
+ # @return [Integer] Enterprise only. The id of the ticket form to render for the ticket
61
+ attribute :ticket_form_id
62
+ # @return [Integer] Enterprise only. The id of the brand this ticket is associated with
63
+ attribute :brand_id
60
64
 
61
65
  # @return [Zendesk2::Organization] organization assigned to ticket
62
66
  assoc_reader :organization
@@ -45,6 +45,8 @@ class Zendesk2::TicketField
45
45
  attribute :url, type: :string
46
46
  # @return [Boolean] Whether this field is available to end users
47
47
  attribute :visible_in_portal, type: :boolean
48
+ # @return [String] A description of the ticket field that only agents can see
49
+ attribute :agent_description, type: :string
48
50
 
49
51
  def save!
50
52
  data = if new_record?
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::TicketForm
3
+ include Zendesk2::Model
4
+
5
+ extend Zendesk2::Attributes
6
+
7
+ # @return [integer] Automatically assigned upon creation
8
+ identity :id, type: :integer
9
+
10
+ # @return [String] The name of the form
11
+ attribute :name, type: :string
12
+ # @return [String] The dynamic content placeholder, if present, or the "name" value, if not
13
+ attribute :raw_name, type: :string
14
+ # @return [String] The name of the form that is displayed to an end user
15
+ attribute :display_name, type: :string
16
+ # @return [String] The dynamic content placeholder, if present, or the "display_name" value, if not
17
+ attribute :raw_display_name, type: :string
18
+ # @return [Integer] The position of this form among other forms in the account, i.e. dropdown
19
+ attribute :position, type: :integer
20
+ # @return [Boolean] If the form is set as active
21
+ attribute :active, type: :boolean
22
+ # @return [Boolean] Is the form visible to the end user
23
+ attribute :end_user_visible, type: :boolean
24
+ # @return [Boolean] Is the form the default form for this account
25
+ attribute :default, type: :boolean
26
+ # @return [Array] ids of all ticket fields which are in this ticket form
27
+ attribute :ticket_field_ids, type: :array
28
+ # @return [Boolean] Is the form available for use in all brands on this account
29
+ attribute :in_all_brands, type: :boolean
30
+ # @return [Array] ids of all brands that this ticket form is restricted to
31
+ attribute :restricted_brand_ids, type: :array
32
+
33
+ def save!
34
+ data = if new_record?
35
+ requires :name
36
+
37
+ cistern.create_ticket_form('ticket_form' => attributes)
38
+ else
39
+ requires :identity
40
+
41
+ cistern.update_ticket_form('ticket_form' => attributes)
42
+ end.body['ticket_form']
43
+
44
+ merge_attributes(data)
45
+ end
46
+
47
+ def destroy!
48
+ requires :identity
49
+
50
+ cistern.destroy_ticket_form('ticket_form' => { 'id' => identity })
51
+ end
52
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::TicketForms
3
+ include Zendesk2::Collection
4
+
5
+ include Zendesk2::Searchable
6
+
7
+ model Zendesk2::TicketForm
8
+
9
+ attribute :count, type: :integer
10
+
11
+ self.collection_method = :get_ticket_forms
12
+ self.collection_root = 'ticket_forms'
13
+ self.model_method = :get_ticket_form
14
+ self.model_root = 'ticket_form'
15
+ self.search_type = 'ticket_form'
16
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::UpdateBrand
3
+ include Zendesk2::Request
4
+
5
+ request_method :put
6
+ request_path { |r| "/brands/#{r.brand_id}.json" }
7
+ request_body { |r| { 'brand' => r.brand_params } }
8
+
9
+ def brand_id
10
+ params.fetch('brand').fetch('id')
11
+ end
12
+
13
+ def brand_params
14
+ Cistern::Hash.slice(params.fetch('brand'), *Zendesk2::CreateTicketForm.accepted_attributes)
15
+ end
16
+
17
+ def mock
18
+ mock_response('brand' => find!(:brands, brand_id).merge!(brand_params))
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+ class Zendesk2::UpdateTicketForm
3
+ include Zendesk2::Request
4
+
5
+ request_method :put
6
+ request_path { |r| "/ticket_forms/#{r.ticket_form_id}.json" }
7
+ request_body { |r| { 'ticket_form' => r.ticket_form_params } }
8
+
9
+ def ticket_form_id
10
+ params.fetch('ticket_form').fetch('id')
11
+ end
12
+
13
+ def ticket_form_params
14
+ Cistern::Hash.slice(params.fetch('ticket_form'), *Zendesk2::CreateTicketForm.accepted_attributes)
15
+ end
16
+
17
+ def mock
18
+ mock_response('ticket_form' => find!(:ticket_forms, ticket_form_id).merge!(ticket_form_params))
19
+ end
20
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Zendesk2
3
- VERSION = '1.12.0'.freeze
3
+ VERSION = '1.13.0'.freeze
4
4
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ describe 'brands' do
5
+ let(:client) { create_client }
6
+
7
+ include_examples 'zendesk#resource', collection: -> { client.brands },
8
+ create_params: -> { { name: mock_uuid } },
9
+ update_params: -> { { name: mock_uuid } },
10
+ paged: false,
11
+ search: false
12
+ end
@@ -13,7 +13,8 @@ describe 'help_center/articles' do
13
13
 
14
14
  include_examples 'zendesk#resource',
15
15
  collection: -> { client.help_center_articles },
16
- create_params: -> { { title: mock_uuid, locale: 'en-us', section: section } },
16
+ create_params:
17
+ -> { { title: mock_uuid, locale: 'en-us', section: section, permission_group_id: 0 } },
17
18
  update_params: -> { { title: mock_uuid } },
18
19
  search_params: -> { Cistern::Hash.slice(create_params, :title) },
19
20
  search: true
@@ -13,11 +13,14 @@ describe 'help_center/categories' do
13
13
  context 'with a category, sections, and articles' do
14
14
  let!(:category) { client.help_center_categories.create!(name: mock_uuid, locale: 'en-us') }
15
15
  let!(:section) { category.sections.create!(name: mock_uuid, locale: 'en-us') }
16
- let!(:articles) { Array.new(2) { section.articles.create(title: mock_uuid, locale: 'en-us') } }
16
+ let!(:articles) do
17
+ Array.new(2) { section.articles.create(title: mock_uuid, locale: 'en-us', permission_group_id: 0) }
18
+ end
17
19
 
18
20
  before do
19
21
  client.help_center_categories.create!(name: mock_uuid, locale: 'en-us')
20
- .sections.create!(name: mock_uuid, locale: 'en-us').articles.create!(title: mock_uuid, locale: 'en-us')
22
+ .sections.create!(name: mock_uuid, locale: 'en-us')
23
+ .articles.create!(title: mock_uuid, locale: 'en-us', permission_group_id: 0)
21
24
  end
22
25
 
23
26
  it 'lists sections within a category' do
@@ -18,11 +18,14 @@ describe 'help_center/sections' do
18
18
 
19
19
  context 'with a category, sections, and articles' do
20
20
  let!(:section) { category.sections.create!(name: mock_uuid, locale: 'en-us') }
21
- let!(:articles) { Array.new(2) { section.articles.create(title: mock_uuid, locale: 'en-us') } }
21
+ let!(:articles) do
22
+ Array.new(2) { section.articles.create(title: mock_uuid, locale: 'en-us', permission_group_id: 0) }
23
+ end
22
24
 
23
25
  before do
24
26
  client.help_center_categories.create!(name: mock_uuid, locale: 'en-us')
25
- .sections.create!(name: mock_uuid, locale: 'en-us').articles.create!(title: mock_uuid, locale: 'en-us')
27
+ .sections.create!(name: mock_uuid, locale: 'en-us')
28
+ .articles.create!(title: mock_uuid, locale: 'en-us', permission_group_id: 0)
26
29
  end
27
30
 
28
31
  it 'lists articles within a section' do
@@ -14,7 +14,8 @@ describe 'help_center/subscriptions' do
14
14
  let!(:article) do
15
15
  client.help_center_articles.create!(title: mock_uuid,
16
16
  locale: 'en-us',
17
- section: section)
17
+ section: section,
18
+ permission_group_id: 0)
18
19
  end
19
20
 
20
21
  include_examples 'zendesk#resource',
@@ -29,7 +29,9 @@ describe 'help_center/translations' do
29
29
  end
30
30
 
31
31
  describe 'by article' do
32
- let!(:article) { client.help_center_articles.create!(title: mock_uuid, locale: 'en-us', section: section) }
32
+ let!(:article) do
33
+ client.help_center_articles.create!(title: mock_uuid, locale: 'en-us', section: section, permission_group_id: 0)
34
+ end
33
35
 
34
36
  include_examples 'zendesk#resource',
35
37
  collection: -> { article.translations },
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require 'spec_helper'
3
3
 
4
- describe 'ticket_fields' do
4
+ describe ' ticket_fields' do
5
5
  let(:client) { create_client }
6
6
 
7
7
  include_examples 'zendesk#resource', collection: -> { client.ticket_fields },
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+ require 'spec_helper'
3
+
4
+ describe 'ticket_forms' do
5
+ let(:client) { create_client }
6
+
7
+ include_examples 'zendesk#resource', collection: -> { client.ticket_forms },
8
+ create_params: -> { { name: mock_uuid } },
9
+ update_params: -> { { name: mock_uuid } },
10
+ paged: false
11
+ end
@@ -122,6 +122,22 @@ describe 'Zendesk2' do
122
122
  expect(ticket.priority).to eq('urgent')
123
123
  expect(client.tickets.get!(ticket.id).priority).to eq(priority)
124
124
  end
125
+
126
+ it 'should set ticket_form_id' do
127
+ ticket_form_id = 42
128
+
129
+ ticket = client.tickets.create!(subject: mock_uuid, description: mock_uuid, ticket_form_id: ticket_form_id)
130
+
131
+ expect(ticket.ticket_form_id).to eq(42)
132
+ end
133
+
134
+ it 'should set brand_id' do
135
+ brand_id = 42
136
+
137
+ ticket = client.tickets.create!(subject: mock_uuid, description: mock_uuid, brand_id: brand_id)
138
+
139
+ expect(ticket.brand_id).to eq(42)
140
+ end
125
141
  end
126
142
 
127
143
  describe 'with a created ticket' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.0
4
+ version: 1.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Lane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-25 00:00:00.000000000 Z
11
+ date: 2019-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cistern
@@ -106,10 +106,13 @@ files:
106
106
  - lib/zendesk2.rb
107
107
  - lib/zendesk2/attributes.rb
108
108
  - lib/zendesk2/audit_event.rb
109
+ - lib/zendesk2/brand.rb
110
+ - lib/zendesk2/brands.rb
109
111
  - lib/zendesk2/categories.rb
110
112
  - lib/zendesk2/category.rb
111
113
  - lib/zendesk2/client.rb
112
114
  - lib/zendesk2/collection.rb
115
+ - lib/zendesk2/create_brand.rb
113
116
  - lib/zendesk2/create_category.rb
114
117
  - lib/zendesk2/create_forum.rb
115
118
  - lib/zendesk2/create_group.rb
@@ -117,12 +120,14 @@ files:
117
120
  - lib/zendesk2/create_organization.rb
118
121
  - lib/zendesk2/create_ticket.rb
119
122
  - lib/zendesk2/create_ticket_field.rb
123
+ - lib/zendesk2/create_ticket_form.rb
120
124
  - lib/zendesk2/create_topic.rb
121
125
  - lib/zendesk2/create_topic_comment.rb
122
126
  - lib/zendesk2/create_user.rb
123
127
  - lib/zendesk2/create_user_field.rb
124
128
  - lib/zendesk2/create_user_identity.rb
125
129
  - lib/zendesk2/create_view.rb
130
+ - lib/zendesk2/destroy_brand.rb
126
131
  - lib/zendesk2/destroy_category.rb
127
132
  - lib/zendesk2/destroy_forum.rb
128
133
  - lib/zendesk2/destroy_group.rb
@@ -130,6 +135,7 @@ files:
130
135
  - lib/zendesk2/destroy_organization.rb
131
136
  - lib/zendesk2/destroy_ticket.rb
132
137
  - lib/zendesk2/destroy_ticket_field.rb
138
+ - lib/zendesk2/destroy_ticket_form.rb
133
139
  - lib/zendesk2/destroy_topic.rb
134
140
  - lib/zendesk2/destroy_topic_comment.rb
135
141
  - lib/zendesk2/destroy_user.rb
@@ -140,6 +146,8 @@ files:
140
146
  - lib/zendesk2/forum.rb
141
147
  - lib/zendesk2/forums.rb
142
148
  - lib/zendesk2/get_assignable_groups.rb
149
+ - lib/zendesk2/get_brand.rb
150
+ - lib/zendesk2/get_brands.rb
143
151
  - lib/zendesk2/get_categories.rb
144
152
  - lib/zendesk2/get_category.rb
145
153
  - lib/zendesk2/get_ccd_tickets.rb
@@ -163,6 +171,8 @@ files:
163
171
  - lib/zendesk2/get_ticket_comments.rb
164
172
  - lib/zendesk2/get_ticket_field.rb
165
173
  - lib/zendesk2/get_ticket_fields.rb
174
+ - lib/zendesk2/get_ticket_form.rb
175
+ - lib/zendesk2/get_ticket_forms.rb
166
176
  - lib/zendesk2/get_ticket_metric.rb
167
177
  - lib/zendesk2/get_ticket_metrics.rb
168
178
  - lib/zendesk2/get_tickets.rb
@@ -270,6 +280,8 @@ files:
270
280
  - lib/zendesk2/ticket_create.rb
271
281
  - lib/zendesk2/ticket_field.rb
272
282
  - lib/zendesk2/ticket_fields.rb
283
+ - lib/zendesk2/ticket_form.rb
284
+ - lib/zendesk2/ticket_forms.rb
273
285
  - lib/zendesk2/ticket_metric.rb
274
286
  - lib/zendesk2/ticket_metrics.rb
275
287
  - lib/zendesk2/ticket_notification.rb
@@ -279,6 +291,7 @@ files:
279
291
  - lib/zendesk2/topic_comment.rb
280
292
  - lib/zendesk2/topic_comments.rb
281
293
  - lib/zendesk2/topics.rb
294
+ - lib/zendesk2/update_brand.rb
282
295
  - lib/zendesk2/update_category.rb
283
296
  - lib/zendesk2/update_forum.rb
284
297
  - lib/zendesk2/update_group.rb
@@ -286,6 +299,7 @@ files:
286
299
  - lib/zendesk2/update_request.rb
287
300
  - lib/zendesk2/update_ticket.rb
288
301
  - lib/zendesk2/update_ticket_field.rb
302
+ - lib/zendesk2/update_ticket_form.rb
289
303
  - lib/zendesk2/update_topic.rb
290
304
  - lib/zendesk2/update_user.rb
291
305
  - lib/zendesk2/update_user_field.rb
@@ -300,6 +314,7 @@ files:
300
314
  - lib/zendesk2/version.rb
301
315
  - lib/zendesk2/view.rb
302
316
  - lib/zendesk2/views.rb
317
+ - spec/brands_spec.rb
303
318
  - spec/categories_spec.rb
304
319
  - spec/client_spec.rb
305
320
  - spec/forums_spec.rb
@@ -320,6 +335,7 @@ files:
320
335
  - spec/support/client_helper.rb
321
336
  - spec/support/data_helper.rb
322
337
  - spec/ticket_fields_spec.rb
338
+ - spec/ticket_forms_spec.rb
323
339
  - spec/tickets_spec.rb
324
340
  - spec/topic_comments_spec.rb
325
341
  - spec/topics_spec.rb
@@ -348,12 +364,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
348
364
  - !ruby/object:Gem::Version
349
365
  version: '0'
350
366
  requirements: []
351
- rubyforge_project:
352
- rubygems_version: 2.5.1
367
+ rubygems_version: 3.0.1
353
368
  signing_key:
354
369
  specification_version: 4
355
370
  summary: Zendesk V2 API client
356
371
  test_files:
372
+ - spec/brands_spec.rb
357
373
  - spec/categories_spec.rb
358
374
  - spec/client_spec.rb
359
375
  - spec/forums_spec.rb
@@ -374,6 +390,7 @@ test_files:
374
390
  - spec/support/client_helper.rb
375
391
  - spec/support/data_helper.rb
376
392
  - spec/ticket_fields_spec.rb
393
+ - spec/ticket_forms_spec.rb
377
394
  - spec/tickets_spec.rb
378
395
  - spec/topic_comments_spec.rb
379
396
  - spec/topics_spec.rb
@@ -382,4 +399,3 @@ test_files:
382
399
  - spec/users_spec.rb
383
400
  - spec/views_spec.rb
384
401
  - spec/zendesk2_spec.rb
385
- has_rdoc: