🌻 📖 Test2::Tools::JSON::Pointer

NAME

Test2::Tools::JSON::Pointer - Compare parts of JSON string to data structure using JSON pointers VERSION

VERSION

version 0.02

SYNOPSIS

 use utf8;
 use Test2::V0;
 use Test2::Tools::JSON::Pointer;
 
 is(
   '{"a":"龍"}',
   json '/a' => "龍",
 );
 
 is(
   '{"a":[1,2,3],"b":{"x":"y"}',
   json '/a' => [1,2,3],
 );
 
 is(
   '{"a":[1,2,3],"b":{"x":"y"}',
   json '/b' => hash {
     field 'x' => 'y';
   },
 );
 
 done_testing;

with files:

 use Test2::V0;
 use Test2::Tools::JSON::Pointer;
 use Path::Tiny qw( path );
 
 is(
   # will also work with Path::Class::File
   path('myjsonfile.json'),
   json '/a' => [1,2,3],
 );
 
 done_testing;

DESCRIPTION

This module provides a comparison for a JSON string with a JSON pointer. This module was inspired by Test::Mojo, which provides a mechanism for checking the JSON response from a HTTP body. This module provides a generic way to write tests for JSON using a JSON pointer with or without the context of Mojolicious or HTTP. It also has a Test2::Suite style interface.

This module expects a Perl string in Perl's internal representation (utf-8), NOT raw encoded bytes. Thus if you are reading files they need to be read in with the appropriate encoding. If you are testing against the content of a HTTP::Response object you want to use decoded_content.

FUNCTIONS

json

 is(
   $json,
   json($pointer, $check)
 );

 is(
   $json,
   json($check),
 );

Compare $json to the given Test2::Suite $check after decoding the string into a deep reference (array or hash) and starting at the position of the given $pointer. If $json is an instance of Path::Tiny or Path::Class::File, then it will read from that file first to get the JSON.

SEE ALSO

Test2::Tools::JSON

Provides a similar check without JSON pointers.

Test::Deep::JSON

Provides a similar check in a Test::Deep context.

Test::Mojo

Among many other capabilities, this great testing library allows you to make checks against JSON on an HTTP response object with JSON pointers.

AUTHOR

Graham Ollis <plicease@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2018 by Graham Ollis.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.