Method: ZendeskAppsSupport::Validations::Requirements.call

Defined in:
lib/zendesk_apps_support/validations/requirements.rb

.call(package) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/zendesk_apps_support/validations/requirements.rb', line 10

def call(package)
  requirements_file = package.files.find { |f| f.relative_path == 'requirements.json' }

  return [ValidationError.new(:missing_requirements)] unless requirements_file

  requirements_stream = requirements_file.read
  duplicates = non_unique_type_keys(requirements_stream)
  unless duplicates.empty?
    return [ValidationError.new(:duplicate_requirements, duplicate_keys: duplicates.join(', '), count: duplicates.length)]
  end

  requirements = JSON.load(requirements_stream)
  [].tap do |errors|
    errors << invalid_requirements_types(requirements)
    errors << excessive_requirements(requirements)
    errors << invalid_channel_integrations(requirements)
    errors << invalid_user_fields(requirements)
    errors << missing_required_fields(requirements)
    errors.flatten!
    errors.compact!
  end
rescue JSON::ParserError => e
  return [ValidationError.new(:requirements_not_json, errors: e)]
end