zendesk_apps_support 4.23.0 → 4.25.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
2
  SHA1:
3
- metadata.gz: 40c2caa76f6951364c92953a7bdb0c41e3d9d9b9
4
- data.tar.gz: 465900fbbd27294f5410e6e6069f371bb679d6cd
3
+ metadata.gz: b29599afad604e6a6adae9e02073bd95466b9e33
4
+ data.tar.gz: ee73401ed11aab0e76f126532e95f535d6c07305
5
5
  SHA512:
6
- metadata.gz: d53c27eaf542b51a4ec004fdc44856b6ca20d08400095b892e27e0bd691de51b2118347e1db530bd2c940b0404e18913ee9b02d6e20fd928319a5ae118a0a57f
7
- data.tar.gz: 9c554449f03a09400edb1e040113c6db43fe1426a476487415ae2f639ff34ff4ff24baf349e1c585f0deeaaa2dede8b54b50b8cfa476e90e78522ce7da52643b
6
+ metadata.gz: 2d0a284d1868be7d4af01943e2db275291d3505585df2ca322cf5e97d2776137e1c224e4220d215cc96da6312e424ebb0e266c553e6793c7b4c304d301608ca7
7
+ data.tar.gz: b556b25327365c6066954be876a3966bbc9b9ec972754aa8afac61c4aba096dddd6f0776bb291cbd37d55439ed1b0025a4f3ae521883c251f3ad9d33e8550e35
@@ -46,6 +46,9 @@ en:
46
46
  requirements_not_json: requirements.json is not proper JSON. %{errors}
47
47
  excessive_requirements: The requirements.json file contains too many requirements.
48
48
  The current limit is %{max} requirements. This app has %{count} requirements.
49
+ excessive_custom_objects_requirements: The requirements.json file contains
50
+ too many custom objects requirements. The current limit is %{max} requirements.
51
+ This app has %{count} requirements.
49
52
  missing_required_fields: 'Missing required fields in requirements.json:
50
53
  "%{field}" is required in "%{identifier}"'
51
54
  duplicate_requirements:
@@ -62,6 +65,9 @@ en:
62
65
  invalid_cr_schema_keys:
63
66
  one: 'Custom resources schema contains an invalid key: %{invalid_keys}'
64
67
  other: 'Custom resources schema contains invalid keys: %{invalid_keys}'
68
+ invalid_custom_objects_schema_keys:
69
+ one: 'Custom objects schema contains an invalid key: %{invalid_keys}'
70
+ other: 'Custom objects schema contains invalid keys: %{invalid_keys}'
65
71
  banner:
66
72
  invalid_format: Banner image must be a PNG file.
67
73
  invalid_size: Invalid banner image dimensions. Must be %{required_banner_width}x%{required_banner_height}px.
@@ -101,6 +101,11 @@ parts:
101
101
  key: "txt.apps.admin.error.app_build.excessive_requirements"
102
102
  title: "App builder job: requirements file contains too many requirements"
103
103
  value: "The requirements.json file contains too many requirements. The current limit is %{max} requirements. This app has %{count} requirements."
104
+ - translation:
105
+ key: "txt.apps.admin.error.app_build.excessive_custom_objects_requirements"
106
+ title: "App builder job: requirements file contains too many custom objects requirements. Leave requirements.json as is (do not localize)"
107
+ value: "The requirements.json file contains too many custom objects requirements. The current limit is %{max} requirements. This app has %{count} requirements."
108
+ screenshot: "https://drive.google.com/open?id=18yac8rV7kMe5qm49ERVFVCA7WOZl8vcP"
104
109
  - translation:
105
110
  key: "txt.apps.admin.error.app_build.missing_required_fields"
106
111
  title: "App builder job: required key missing in requirements, e.g. \"title\" is required in \"my_custom_email_target\""
@@ -140,11 +145,23 @@ parts:
140
145
  title: "App builder job: custom resources schema contains invalid key error"
141
146
  value: "Custom resources schema contains an invalid key: %{invalid_keys}"
142
147
  screenshot: "https://drive.google.com/open?id=1-CHVDcmr5mf1DKKeWqiOuGWrW25gDY4y"
148
+ obsolete: "2020-01-01"
143
149
  - translation:
144
150
  key: "txt.apps.admin.error.app_build.invalid_cr_schema_keys.other"
145
151
  title: "App builder job: custom resources schema contains invalid keys error"
146
152
  value: "Custom resources schema contains invalid keys: %{invalid_keys}"
147
153
  screenshot: "https://drive.google.com/open?id=1iEx7f7PYnum_qDQESD3Gz2PwLDza3zI0"
154
+ obsolete: "2020-01-01"
155
+ - translation:
156
+ key: "txt.apps.admin.error.app_build.invalid_custom_objects_schema_keys.one"
157
+ title: "App builder job: custom objects schema contains invalid key error"
158
+ value: "Custom objects schema contains an invalid key: %{invalid_keys}"
159
+ screenshot: "https://drive.google.com/open?id=1-CHVDcmr5mf1DKKeWqiOuGWrW25gDY4y"
160
+ - translation:
161
+ key: "txt.apps.admin.error.app_build.invalid_custom_objects_schema_keys.other"
162
+ title: "App builder job: custom objects schema contains invalid keys error"
163
+ value: "Custom objects schema contains invalid keys: %{invalid_keys}"
164
+ screenshot: "https://drive.google.com/open?id=1iEx7f7PYnum_qDQESD3Gz2PwLDza3zI0"
148
165
  - translation:
149
166
  key: "txt.apps.admin.error.app_build.banner.invalid_format"
150
167
  title: "App builder job: Banner image invalid format error"
@@ -2,7 +2,7 @@
2
2
 
3
3
  module ZendeskAppsSupport
4
4
  class AppRequirement
5
- TYPES = %w[automations channel_integrations custom_resources_schema macros targets views ticket_fields
5
+ TYPES = %w[automations channel_integrations custom_objects macros targets views ticket_fields
6
6
  triggers user_fields organization_fields].freeze
7
7
  end
8
8
  end
@@ -4,6 +4,7 @@ module ZendeskAppsSupport
4
4
  module Validations
5
5
  module Requirements
6
6
  MAX_REQUIREMENTS = 5000
7
+ MAX_CUSTOM_OBJECTS_REQUIREMENTS = 50
7
8
 
8
9
  class << self
9
10
  def call(package)
@@ -24,9 +25,10 @@ module ZendeskAppsSupport
24
25
  [].tap do |errors|
25
26
  errors << invalid_requirements_types(requirements)
26
27
  errors << excessive_requirements(requirements)
28
+ errors << excessive_custom_objects_requirements(requirements)
27
29
  errors << invalid_channel_integrations(requirements)
28
30
  errors << invalid_custom_fields(requirements)
29
- errors << invalid_custom_resources_schema(requirements)
31
+ errors << invalid_custom_objects(requirements)
30
32
  errors << missing_required_fields(requirements)
31
33
  errors.flatten!
32
34
  errors.compact!
@@ -44,9 +46,9 @@ module ZendeskAppsSupport
44
46
  def missing_required_fields(requirements)
45
47
  [].tap do |errors|
46
48
  requirements.each do |requirement_type, requirement|
47
- next if %w[channel_integrations custom_resources_schema].include? requirement_type
49
+ next if %w[channel_integrations custom_objects].include? requirement_type
48
50
  requirement.each do |identifier, fields|
49
- next if fields.include? 'title'
51
+ next if fields.nil? || fields.include?('title')
50
52
  errors << ValidationError.new(:missing_required_fields,
51
53
  field: 'title',
52
54
  identifier: identifier)
@@ -56,10 +58,23 @@ module ZendeskAppsSupport
56
58
  end
57
59
 
58
60
  def excessive_requirements(requirements)
59
- count = requirements.values.map(&:values).flatten.size
61
+ count = requirements.values.map do |req|
62
+ req.is_a?(Hash) ? req.values : req
63
+ end.flatten.size
60
64
  ValidationError.new(:excessive_requirements, max: MAX_REQUIREMENTS, count: count) if count > MAX_REQUIREMENTS
61
65
  end
62
66
 
67
+ def excessive_custom_objects_requirements(requirements)
68
+ custom_objects = requirements['custom_objects']
69
+ return unless custom_objects
70
+
71
+ count = custom_objects.values.flatten.size
72
+ if count > MAX_CUSTOM_OBJECTS_REQUIREMENTS
73
+ ValidationError.new(:excessive_custom_objects_requirements, max: MAX_CUSTOM_OBJECTS_REQUIREMENTS,
74
+ count: count)
75
+ end
76
+ end
77
+
63
78
  def invalid_custom_fields(requirements)
64
79
  user_fields = requirements['user_fields']
65
80
  organization_fields = requirements['organization_fields']
@@ -92,23 +107,26 @@ module ZendeskAppsSupport
92
107
  end
93
108
  end
94
109
 
95
- def invalid_custom_resources_schema(requirements)
96
- custom_resources_schema = requirements['custom_resources_schema']
97
- return unless custom_resources_schema
98
- valid_schema_keys = %w[resource_types relationship_types]
110
+ def invalid_custom_objects(requirements)
111
+ custom_objects = requirements['custom_objects']
112
+ return if custom_objects.nil?
113
+
99
114
  [].tap do |errors|
100
- invalid_keys = custom_resources_schema.keys - valid_schema_keys
101
- unless invalid_keys.empty?
102
- errors << ValidationError.new(:invalid_cr_schema_keys,
103
- invalid_keys: invalid_keys.join(', '),
104
- count: invalid_keys.length)
115
+ unless custom_objects.key?('custom_object_types')
116
+ errors << ValidationError.new(:missing_required_fields,
117
+ field: 'custom_object_types',
118
+ identifier: 'custom_objects')
105
119
  end
106
120
 
107
- valid_schema_keys.each do |required_key|
108
- next if custom_resources_schema.keys.include? required_key
109
- errors << ValidationError.new(:missing_required_fields,
110
- field: required_key,
111
- identifier: 'custom_resources_schema')
121
+ valid_schema = {
122
+ 'custom_object_types' => %w[key schema],
123
+ 'custom_object_relationship_types' => %w[key source target]
124
+ }
125
+
126
+ valid_schema.keys.each do |requirement_type|
127
+ (custom_objects[requirement_type] || []).each do |requirement|
128
+ validate_custom_objects_keys(requirement.keys, valid_schema[requirement_type], requirement_type, errors)
129
+ end
112
130
  end
113
131
  end
114
132
  end
@@ -121,6 +139,15 @@ module ZendeskAppsSupport
121
139
  count: invalid_types.length)
122
140
  end
123
141
  end
142
+
143
+ def validate_custom_objects_keys(keys, expected_keys, identifier, errors = [])
144
+ missing_keys = expected_keys - keys
145
+ missing_keys.each do |key|
146
+ errors << ValidationError.new(:missing_required_fields,
147
+ field: key,
148
+ identifier: identifier)
149
+ end
150
+ end
124
151
  end
125
152
  end
126
153
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk_apps_support
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.23.0
4
+ version: 4.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James A. Rosen
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2019-10-17 00:00:00.000000000 Z
14
+ date: 2019-11-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: i18n