XML-Loy
view release on metacpan or search on metacpan
lib/Test/XML/Loy.pm view on Meta::CPAN
_desc($desc, 'content is similar')
);
};
# Check for plain text dissimilarity
sub content_unlike {
my ($self, $regex, $desc) = @_;
return $self->_test(
'unlike',
$self->_loy_text,
$regex,
_desc($desc, 'content is not similar')
);
};
# Test for element occurrences
sub element_count_is {
my ($self, $selector, $count, $desc) = @_;
my $size = $self->loy->find($selector)->size;
return $self->_test(
'is',
$size,
$count,
_desc($desc, qq{element count for selector "$selector"})
);
};
# Test for element existence
sub element_exists {
my ($self, $selector, $desc) = @_;
$desc = _desc(
$desc,
qq{element for selector "$selector" exists}
);
return $self->_test(
'ok',
$self->loy->at($selector),
$desc
);
};
# Test for missing element
sub element_exists_not {
my ($self, $selector, $desc) = @_;
$desc = _desc(
$desc,
qq{no element for selector "$selector"}
);
return $self->_test(
'ok',
!$self->loy->at($selector),
$desc
);
};
# Test for exact pcdata match
sub text_is {
my ($self, $selector, $value, $desc) = @_;
return $self->_test(
'is',
$self->_text($selector),
$value,
_desc($desc, qq{exact match for selector "$selector"})
);
};
# Test for pcdata mismatch
sub text_isnt {
my ($self, $selector, $value, $desc) = @_;
return $self->_test(
'isnt',
$self->_text($selector),
$value,
_desc($desc, qq{no match for selector "$selector"})
);
};
# Test for pcdata similarity
sub text_like {
my ($self, $selector, $regex, $desc) = @_;
return $self->_test(
'like',
$self->_text($selector),
$regex,
_desc($desc, qq{similar match for selector "$selector"})
);
};
# Test for pcdata dissimilarity
sub text_unlike {
my ($self, $selector, $regex, $desc) = @_;
return $self->_test(
'unlike',
$self->_text($selector),
$regex,
_desc($desc, qq{no similar match for selector "$selector"})
);
};
sub _desc {
encode 'UTF-8', shift || shift;
};
sub _attr {
my ($self, $selector, $attr) = @_;
return '' unless my $e = $self->loy->at($selector);
return $e->attr($attr) || '';
};
sub _test {
my ($self, $name, @args) = @_;
local $Test::Builder::Level = $Test::Builder::Level + 2;
return $self->success(!!Test::More->can($name)->(@args));
};
sub _text {
return '' unless my $e = shift->loy->at(shift);
return $e->text;
};
sub _loy_text {
my $self = shift;
return $self->{_data} if $self->{_data};
$self->{_data} = $self->loy->to_pretty_xml;
return $self->{_data};
};
1;
__END__
=pod
=encoding utf8
=head1 NAME
Test::XML::Loy - Test XML and XML::Loy objects
=head1 SYNOPSIS
( run in 0.764 second using v1.01-cache-2.11-cpan-39bf76dae61 )