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