use strict;
use warnings;
use Path::Class;
use Test::More 'no_plan';
use Test::Differences;
use WebCoso::Resource;
BEGIN {use_ok('WebCoso::Step::ReST::SplitLang')}
my $step=WebCoso::Step::ReST::SplitLang->new();
sub make_res {
my ($rst_doc)=@_;
my $resource=WebCoso::Resource->new();
open my $rst_fh,'<',\$rst_doc;
$resource->set_property({filename=>'mydoc.rest.txt'},datastream=>$rst_fh);
return $resource;
}
my $resource=make_res(<<'END_REST');
riga comune
.. lang::
ancora comune
.. lang:: it
italiano
.. lang:: en
inglese
.. lang::
any nested
.. lang:: it
italiano ancora
.. lang::
comune (con spazi)
END_REST
$step->process($resource,'gen');
is_deeply([$resource->get_axes()],
['filename'],
'no action on second pass');
$step->process($resource,'meta');
is_deeply([sort $resource->get_axes()],
['filename','language'],
'action on first pass');
is_deeply([sort $resource->get_axis_values('language')],
['en','it'],
'lingue giuste');
eq_or_diff($resource->get_property({language=>'it'},'rstdoc'),<<'END_REST_IT','italiano');
riga comune
ancora comune
italiano
any nested
italiano ancora
comune (con spazi)
END_REST_IT
eq_or_diff($resource->get_property({language=>'en'},'rstdoc'),<<'END_REST_EN','inglese');
riga comune
ancora comune
inglese
any nested
comune (con spazi)
END_REST_EN
my $rst_doc=<<'END_REST';
tutto a comune
monolingua
END_REST
$resource=make_res($rst_doc);
$step->process($resource,'meta');
is_deeply([$resource->get_axes()],
['filename'],
'monolingua');
eq_or_diff($resource->get_property('rstdoc'),$rst_doc,'monolingua cat');
$rst_doc=<<'END_REST';
.. lang::
tutto a comune
monolingua
END_REST
$resource=make_res($rst_doc);
$step->process($resource,'meta');
is_deeply([$resource->get_axes()],
['filename'],
'monolingua 2');
eq_or_diff($resource->get_property('rstdoc'),$rst_doc,'monolingua 2 cat');