diff --git a/spec/implicit_conversion_spec.rb b/spec/implicit_conversion_spec.rb index a08c993..9366843 100644 --- a/spec/implicit_conversion_spec.rb +++ b/spec/implicit_conversion_spec.rb @@ -54,5 +54,33 @@ module JMESPath end end + + describe 'Compliance' do + Dir.glob('spec/{compliance,legacy}/*.json').each do |path| + + test_file = File.basename(path).split('.').first + next if test_file == 'benchmarks' + next if ENV['TEST_FILE'] && ENV['TEST_FILE'] != test_file + + describe(test_file) do + JMESPath.load_json(path).each do |scenario| + describe("Given #{scenario['given'].to_json}") do + scenario['cases'].each do |test_case| + + if !test_case['error'] + it "searching #{test_case['expression'].inspect} returns #{test_case['result'].to_json}" do + result = JMESPath.search(test_case['expression'], Wrapper.wrap(scenario['given'])) + + expect(JMESPath::Util.as_json(result)).to eq(test_case['result']) + end + + end + end + end + end + end + end + end + end end