zendesk_apps_support 4.23.0 → 4.25.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
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