#!/usr/local/bin/perl -w
BEGIN {
maybe_plan(5,
'CGI'
,
'HTML::Parser'
,
'SQL::Translator::Parser::MySQL'
,
'SQL::Translator::Producer::HTML'
);
}
my
(
$p
,
$tables
,
$classes
);
$p
= HTML::Parser->new(
api_version
=> 3);
$p
->strict_names(1);
my
$create
=
q|
CREATE TABLE foo (
int id PRIMARY KEY AUTO_INCREMENT NOT NULL,
name VARCHAR(255)
);
|
;
my
$tr
= SQL::Translator->new(
parser
=>
'MySQL'
,
producer
=>
'HTML'
);
my
$parsed
=
$tr
->translate(
data
=>
$create
) or
die
$tr
->error;
my
$status
;
eval
{
$status
=
$p
->parse(
$parsed
); };
if
($@) {
daig $@;
fail(
"Unable to parse the output!"
);
}
ok(
$parsed
,
"Parsed table OK"
);
ok(
$status
,
"Parsed HTML OK"
);
$p
->handler(
start
=> @{
$HANDLERS
{count_tables} });
$p
->parse(
$parsed
);
is(
$tables
, 3,
"One table in the SQL produces 3 <table> tags"
);
$tables
=
$classes
= 0;
$p
->handler(
start
=> @{
$HANDLERS
{count_classes} });
$p
->parse(
$parsed
);
is(
$classes
, 1,
"One 'LinkTable' class"
);
$tables
=
$classes
= 0;
$p
->handler(
start
=> @{
$HANDLERS
{sqlfairy} });
$p
->parse(
$parsed
);
is(
$classes
, 1,
"SQLfairy plug is alive and well "
);
$tables
=
$classes
= 0;
BEGIN {
%HANDLERS
= (
count_tables
=> [
sub
{
my
$tagname
=
shift
;
$tables
++
if
(
$tagname
eq
'table'
);
},
'tagname'
,
],
count_classes
=> [
sub
{
my
(
$tagname
,
$attr
) =
@_
;
if
(
$tagname
eq
'table'
&&
$attr
->{
'class'
}
&&
$attr
->{
'class'
} eq
'LinkTable'
) {
$classes
++;
}
},
'tagname,attr'
,
],
sqlfairy
=> [
sub
{
my
(
$tagname
,
$attr
) =
@_
;
if
(
$tagname
eq
'a'
&&
$attr
->{
'href'
}
&&
$attr
->{
'href'
} =~ /sqlfairy/i) {
$classes
++;
}
},
'tagname,attr'
,
],
);
}