Earlier I've mentined that I don't like the fact that we used copy-paste in the test script and duplicate code. Before we go on and add more test, let's refactor the test code.

I've created an array called @cases listing all the (2) test cases. We'll have more.

my @cases = ('heading1', 'headers');

I've also changed the code processing the test cases to be in a loop and use the values from the @cases array:

for my $case (@cases) {
    my $result = $m->parse_file("t/input/$case.md");
    is_deeply $result, decode_json( path("t/dom/$case.json")->slurp_utf8 );
}

Finally, though in the code it is earlier, I've updated the plan to be based on the number of entries in the @cases array.

The previous test file is here:

examples/markua-parser/c580d63/t/01-test.t

use strict;
use warnings;

use Test::More;
use JSON::MaybeXS qw(decode_json);
use Path::Tiny qw(path);
use Markua::Parser;

plan tests => 3;

my $m = Markua::Parser->new;
isa_ok $m, 'Markua::Parser';

my $result = $m->parse_file('t/input/heading1.md');
is_deeply $result, decode_json( path('t/dom/heading1.json')->slurp_utf8 );

$result = $m->parse_file('t/input/headers.md');
is_deeply $result, decode_json( path('t/dom/headers.json')->slurp_utf8 );

The new test file is here:

examples/markua-parser/79d9bfe/t/01-test.t

use strict;
use warnings;

use Test::More;
use JSON::MaybeXS qw(decode_json);
use Path::Tiny qw(path);
use Markua::Parser;

my @cases = ('heading1', 'headers');

plan tests => 1 + scalar @cases;

my $m = Markua::Parser->new;
isa_ok $m, 'Markua::Parser';

for my $case (@cases) {
    my $result = $m->parse_file("t/input/$case.md");
    is_deeply $result, decode_json( path("t/dom/$case.json")->slurp_utf8 );
}

We can then record our changes in git:

$ git add .
$ git commit -m "refactor test code"
$ git push

commit