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
|