diff --git a/lib/assert_json/assert_json.rb b/lib/assert_json/assert_json.rb index 1831d7e..4ddeeaf 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 @@ -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 @@ -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)