use strict; use warnings; use Test::More tests => 14; use ok 'Template::Refine::Processor::Rule::Select'; use ok 'Template::Refine::Processor::Rule::Select::Pattern'; use ok 'Template::Refine::Processor::Rule::Select::XPath'; use ok 'Template::Refine::Processor::Rule::Select::CSS'; use XML::LibXML; use Test::Exception; my $doc = XML::LibXML->new->parse_string( '

Foo

Bar

OH HAI

' ); { my $pattern = Template::Refine::Processor::Rule::Select::XPath->new( pattern => '//p[@class="foo"]', ); my @nodes = $pattern->select($doc); is scalar @nodes, 1, 'got one node'; is $nodes[0]->textContent, 'Foo'; } { my $pattern = Template::Refine::Processor::Rule::Select::CSS->new( pattern => '#bar', ); my @nodes = $pattern->select($doc); is scalar @nodes, 1, 'got one node'; is $nodes[0]->textContent, 'Bar'; } { my $pattern = Template::Refine::Processor::Rule::Select::CSS->new( pattern => 'p', ); my @nodes = $pattern->select($doc); is scalar @nodes, 3, 'got three nodes'; is $nodes[0]->textContent, 'Foo'; is $nodes[1]->textContent, 'Bar'; is $nodes[2]->textContent, 'OH HAI'; } { my $frag = XML::LibXML->new->parse_balanced_chunk( '

foo

', ); throws_ok { my $pattern = Template::Refine::Processor::Rule::Select::CSS->new( pattern => 'p', ); my @nodes = $pattern->select($frag); } qr/The document must be an XML::LibXML::Document/; throws_ok { my $pattern = Template::Refine::Processor::Rule::Select::XPath->new( pattern => '//p[0]', ); my @nodes = $pattern->select($frag); } qr/The document must be an XML::LibXML::Document/; }