From 8ab6a21fdf24667db411de42462be5b5c8da2191 Mon Sep 17 00:00:00 2001 From: Ilya Kaplan Date: Tue, 28 Mar 2017 11:44:44 +0300 Subject: [PATCH 1/2] Add access to whole parsed json --- lib/assert_json/assert_json.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/assert_json/assert_json.rb b/lib/assert_json/assert_json.rb index 1831d7e..e79f2bd 100644 --- a/lib/assert_json/assert_json.rb +++ b/lib/assert_json/assert_json.rb @@ -34,7 +34,7 @@ def only? # nodoc class Json def initialize(json_string) - @decoded_json = ActiveSupport::JSON.decode(json_string) + @decoded_json = @root = ActiveSupport::JSON.decode(json_string) @expected_keys = [] @only = false end @@ -152,6 +152,10 @@ def test_for_unexpected_keys(name = 'root') raise_error("element #{name} has unexpected keys: #{unexpected_keys.join(', ')}") end + def [](key) + @root[key] + end + private def raise_error(message) From 3684ab67771aa805f07bfc9962abc8de12961631 Mon Sep 17 00:00:00 2001 From: Ilya Kaplan Date: Tue, 28 Mar 2017 11:49:36 +0300 Subject: [PATCH 2/2] Make #has and #item pass value to block This allows doing additonal asserts on the value like: has 'price' do |price| assert_operator price, :>, 0 end --- lib/assert_json/assert_json.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/assert_json/assert_json.rb b/lib/assert_json/assert_json.rb index e79f2bd..4ddeeaf 100644 --- a/lib/assert_json/assert_json.rb +++ b/lib/assert_json/assert_json.rb @@ -52,7 +52,7 @@ def item(index) decoded_json_in_scope = @decoded_json @decoded_json = @decoded_json[index] begin - yield if block_given? + yield @decoded_json if block_given? test_for_unexpected_keys(index) ensure @decoded_json = decoded_json_in_scope @@ -116,7 +116,7 @@ def element(*args) else token end - yield + yield @decoded_json test_for_unexpected_keys(arg) ensure @expected_keys = expected_keys_in_scope