zendesk_apps_support 1.0.1 → 1.1.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.
@@ -19,6 +19,12 @@ en:
19
19
  style_in_template: <style> tag in %{template}. Use an app.css file instead.
20
20
  invalid_default_locale: ! '%{defaultLocale} is not a valid default locale.
21
21
  Only two- and three-letter ISO 639 language codes are allowed.'
22
+ invalid_location:
23
+ one: ! '%{invalid_locations} in an invalid location.'
24
+ other: ! '%{invalid_locations} are invalid locations.'
25
+ invalid_hidden_parameter:
26
+ one: ! '%{invalid_params} is set to hidden and cannot be required.'
27
+ other: ! '%{invalid_params} are set to hidden and cannot be required.'
22
28
  translation:
23
29
  invalid_locale: ! '%{file} is not a valid locale. Only two- and three-letter
24
30
  ISO 639 language codes are allowed.'
@@ -43,6 +43,22 @@ parts:
43
43
  key: "txt.apps.admin.error.app_build.invalid_default_locale"
44
44
  title: "App builder job: invalid default locale"
45
45
  value: "%{defaultLocale} is not a valid default locale. Only two- and three-letter ISO 639 language codes are allowed."
46
+ - translation:
47
+ key: "txt.apps.admin.error.app_build.invalid_location.one"
48
+ title: "App builder job: invalid locations"
49
+ value: "%{invalid_locations} in an invalid location."
50
+ - translation:
51
+ key: "txt.apps.admin.error.app_build.invalid_location.other"
52
+ title: "App builder job: invalid locations"
53
+ value: "%{invalid_locations} are invalid locations."
54
+ - translation:
55
+ key: "txt.apps.admin.error.app_build.invalid_hidden_parameter.one"
56
+ title: "App builder job: hidden parameters set to required"
57
+ value: "%{invalid_params} is set to hidden and cannot be required."
58
+ - translation:
59
+ key: "txt.apps.admin.error.app_build.invalid_hidden_parameter.other"
60
+ title: "App builder job: hidden parameters set to required"
61
+ value: "%{invalid_params} are set to hidden and cannot be required."
46
62
  - translation:
47
63
  key: "txt.apps.admin.error.app_build.translation.invalid_locale"
48
64
  title: "App builder job: invalid locale file name"
@@ -5,6 +5,7 @@ module ZendeskAppsSupport
5
5
  module Manifest
6
6
 
7
7
  REQUIRED_MANIFEST_FIELDS = %w( author defaultLocale location frameworkVersion).freeze
8
+ LOCATIONS_AVAILABLE = %w( nav_bar ticket_sidebar ).freeze
8
9
 
9
10
  class <<self
10
11
  def call(package)
@@ -17,6 +18,8 @@ module ZendeskAppsSupport
17
18
  [].tap do |errors|
18
19
  errors << missing_keys_error(manifest)
19
20
  errors << default_locale_error(manifest)
21
+ errors << invalid_location_error(manifest)
22
+ errors << invalid_hidden_parameter_error(manifest)
20
23
  errors.compact!
21
24
  end
22
25
  rescue MultiJson::DecodeError => e
@@ -42,6 +45,25 @@ module ZendeskAppsSupport
42
45
  end
43
46
  end
44
47
 
48
+ def invalid_location_error(manifest)
49
+ invalid_locations = [*manifest['location']] - LOCATIONS_AVAILABLE
50
+ unless invalid_locations.empty?
51
+ ValidationError.new(:invalid_location, :invalid_locations => invalid_locations.join(', '), :count => invalid_locations.length)
52
+ end
53
+ end
54
+
55
+ def invalid_hidden_parameter_error(manifest)
56
+ invalid_params = []
57
+
58
+ if manifest.has_key?('parameters')
59
+ invalid_params = manifest['parameters'].select { |p| p['type'] == 'hidden' && p['required'] }.map { |p| p['name'] }
60
+ end
61
+
62
+ if invalid_params.any?
63
+ ValidationError.new(:invalid_hidden_parameter, :invalid_params => invalid_params.join(', '), :count => invalid_params.length)
64
+ end
65
+ end
66
+
45
67
  end
46
68
  end
47
69
  end
@@ -29,6 +29,33 @@ describe ZendeskAppsSupport::Validations::Manifest do
29
29
  locale_error.should_not be_nil
30
30
  end
31
31
 
32
+ it 'should have an error when the location is invalid' do
33
+ manifest = { 'location' => ['ticket_sidebar', 'a_invalid_location'] }
34
+ manifest_file = mock('AppFile', :relative_path => 'manifest.json', :read => JSON.dump(manifest))
35
+ package = mock('Package', :files => [manifest_file])
36
+ errors = ZendeskAppsSupport::Validations::Manifest.call(package)
37
+
38
+ locations_error = errors.find { |e| e.to_s =~ /invalid location/ }
39
+ locations_error.should_not be_nil
40
+ end
41
+
42
+ it 'should have an error when a hidden parameter is set to required' do
43
+ manifest = {
44
+ 'parameters' => [
45
+ 'name' => 'a parameter',
46
+ 'type' => 'hidden',
47
+ 'required' => true
48
+ ]
49
+ }
50
+
51
+ manifest_file = mock('AppFile', :relative_path => 'manifest.json', :read => JSON.dump(manifest))
52
+ package = mock('Package', :files => [manifest_file])
53
+ errors = ZendeskAppsSupport::Validations::Manifest.call(package)
54
+
55
+ hidden_params_error = errors.find { |e| e.to_s =~ /set to hidden and cannot be required/ }
56
+ hidden_params_error.should_not be_nil
57
+ end
58
+
32
59
  it 'should have an error when manifest is not a valid json' do
33
60
  manifest = mock('AppFile', :relative_path => 'manifest.json', :read => "}")
34
61
  package = mock('Package', :files => [manifest])
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: 1.0.1
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-03-18 00:00:00.000000000 Z
14
+ date: 2013-04-11 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: i18n
@@ -189,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
189
189
  version: 1.3.6
190
190
  requirements: []
191
191
  rubyforge_project:
192
- rubygems_version: 1.8.24
192
+ rubygems_version: 1.8.25
193
193
  signing_key:
194
194
  specification_version: 3
195
195
  summary: Support to help you develop Zendesk Apps.