zendesk2 1.12.0 → 1.13.0

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
- 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: