zendesk_apps_support 4.11.1 → 4.11.2

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
  SHA256:
3
- metadata.gz: a8fedffd68a61d5c41bb26ce85e5912112b6fc2fe6595b17e6164a60dc390e66
4
- data.tar.gz: bf78421277309f7d8166f108da3eff4906c66efa3c30fdf537589c854e54b2c9
3
+ metadata.gz: c9188517f4a57a804b4648f6d4efbe06ec79ed6510b2acc95366aea3419691cb
4
+ data.tar.gz: e7c7235e7ba466161d93d0ceb5e3f43c1a4c28ee30eeecbddcd698d948ea900b
5
5
  SHA512:
6
- metadata.gz: cb67d2e2d27605d4bd477a3866f382ac8a78f8314d5d7a80e3c03ea68681074f37f85e2bc7366353031f73a2dffa48fa9e0ee288b39fc6783908311a587d1725
7
- data.tar.gz: 51d583a6f058dd550a6ada1d842c0658a28b54e0010f6dbbe01767ae4e79b9fd7adde4a3aae6f0af1e7efc883fc48fb8555666567c8de2f4d7722eb1f9051c56
6
+ metadata.gz: 5072150921ee6e3eb4f8d070079aedea3854a20a3ab7c55d6e7a2b6715422109e9b7fbf60f82fb2ae9aa6ad73e55f5adbfbdb62ee2ad09d24b095571311eb0ee
7
+ data.tar.gz: 046b5813b2fc8e18d8b3514834eadd4d886036fde06750013ffa1b9c2aa1bbdb58edc01dbce9bbdb803f614e555f8c77b2e185e960cb9a6f8221d450d72493a7
@@ -28,13 +28,13 @@ module ZendeskAppsSupport
28
28
  @warnings = []
29
29
  end
30
30
 
31
- def validate(marketplace: true)
31
+ def validate(marketplace: true, skip_marketplace_translations: false)
32
32
  errors = []
33
33
  errors << Validations::Manifest.call(self)
34
34
  if has_valid_manifest?(errors)
35
35
  errors << Validations::Marketplace.call(self) if marketplace
36
36
  errors << Validations::Source.call(self)
37
- errors << Validations::Translations.call(self)
37
+ errors << Validations::Translations.call(self, skip_marketplace_translations: skip_marketplace_translations)
38
38
  errors << Validations::Requirements.call(self)
39
39
 
40
40
  unless manifest.requirements_only? || manifest.marketing_only? || manifest.iframe_only?
@@ -49,8 +49,8 @@ module ZendeskAppsSupport
49
49
  errors.flatten.compact
50
50
  end
51
51
 
52
- def validate!(marketplace: true)
53
- errors = validate(marketplace: marketplace)
52
+ def validate!(marketplace: true, skip_marketplace_translations: false)
53
+ errors = validate(marketplace: marketplace, skip_marketplace_translations: skip_marketplace_translations)
54
54
  raise errors.first if errors.any?
55
55
  true
56
56
  end
@@ -13,13 +13,16 @@ module ZendeskAppsSupport
13
13
  end
14
14
 
15
15
  class << self
16
- def call(package)
16
+ def call(package, opts = {})
17
17
  package.files.each_with_object([]) do |file, errors|
18
18
  path_match = TRANSLATIONS_PATH.match(file.relative_path)
19
19
  next unless path_match
20
20
  errors << locale_error(file, path_match[1]) << json_error(file) << format_error(file)
21
21
  next unless errors.compact.empty?
22
- errors.push(*validate_marketplace_content(file, package)) if file.relative_path == 'translations/en.json'
22
+ if file.relative_path == 'translations/en.json'
23
+ # rubocop:disable Metrics/LineLength
24
+ errors.push(*validate_marketplace_content(file, package, opts.fetch(:skip_marketplace_translations, false)))
25
+ end
23
26
  end.compact
24
27
  end
25
28
 
@@ -70,24 +73,30 @@ module ZendeskAppsSupport
70
73
  ValidationError.new('translation.not_json', file: file.relative_path, errors: e)
71
74
  end
72
75
 
73
- def validate_marketplace_content(file, package)
76
+ def validate_marketplace_content(file, package, skip_marketplace_translations)
74
77
  errors = []
75
78
  json = JSON.parse(file.read)
76
79
  product_names = Product::PRODUCTS_AVAILABLE.map(&:name)
77
80
  present_product_keys = json['app'].is_a?(Hash) ? json['app'].keys & product_names : []
81
+ skip_marketplace_strings = package.manifest.private? || skip_marketplace_translations
78
82
 
79
83
  if present_product_keys.empty?
80
- errors << validate_top_level_required_keys(json, package, file.relative_path)
84
+ errors << validate_top_level_required_keys(json, file.relative_path, skip_marketplace_strings)
81
85
  else
82
86
  errors << validate_products_match_manifest_products(present_product_keys, package, file.relative_path)
83
- errors << validate_products_have_required_keys(json, package, present_product_keys, file.relative_path)
87
+ errors << validate_products_have_required_keys(
88
+ json,
89
+ present_product_keys,
90
+ file.relative_path,
91
+ skip_marketplace_strings
92
+ )
84
93
  end
85
94
  errors.compact
86
95
  end
87
96
 
88
- def validate_top_level_required_keys(json, package, file_path)
97
+ def validate_top_level_required_keys(json, file_path, skip_marketplace_strings)
89
98
  keys = json['app'].is_a?(Hash) ? json['app'].keys : []
90
- missing_keys = get_missing_keys(package, keys)
99
+ missing_keys = get_missing_keys(keys, skip_marketplace_strings)
91
100
  return if missing_keys.empty?
92
101
  ValidationError.new(
93
102
  'translation.missing_required_key',
@@ -96,9 +105,9 @@ module ZendeskAppsSupport
96
105
  )
97
106
  end
98
107
 
99
- def validate_products_have_required_keys(json, package, products, file_path)
108
+ def validate_products_have_required_keys(json, products, file_path, skip_marketplace_strings)
100
109
  products.each do |product|
101
- missing_keys = get_missing_keys(package, json['app'][product].keys)
110
+ missing_keys = get_missing_keys(json['app'][product].keys, skip_marketplace_strings)
102
111
  next if missing_keys.empty?
103
112
  return ValidationError.new(
104
113
  'translation.missing_required_key_for_product',
@@ -135,10 +144,9 @@ module ZendeskAppsSupport
135
144
  end
136
145
  end
137
146
 
138
- def get_missing_keys(package, keys)
147
+ def get_missing_keys(keys, skip_marketplace_strings)
139
148
  public_app_keys = %w[name short_description installation_instructions long_description]
140
- mandatory_keys = package.manifest.private? ? ['name'] : public_app_keys
141
-
149
+ mandatory_keys = skip_marketplace_strings ? ['name'] : public_app_keys
142
150
  # since we support description as well as short_description for backwards compatibility,
143
151
  # validate keys as if description == short_description
144
152
  keys_to_validate = keys.map do |key|
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.11.1
4
+ version: 4.11.2
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: 2018-05-22 00:00:00.000000000 Z
14
+ date: 2018-06-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: i18n
@@ -274,7 +274,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
274
274
  version: 1.3.6
275
275
  requirements: []
276
276
  rubyforge_project:
277
- rubygems_version: 2.7.0
277
+ rubygems_version: 2.7.3
278
278
  signing_key:
279
279
  specification_version: 4
280
280
  summary: Support to help you develop Zendesk Apps.