Bigtop
view release on metacpan or search on metacpan
t/sqlite/03_gen.t view on Meta::CPAN
use strict;
use File::Spec;
use Test::More tests => 1;
use Test::Files;
use Bigtop::Parser;
use lib 't';
use Purge;
my $dir = File::Spec->catdir( qw( t sqlite ) );
my $sql_file = File::Spec->catfile(
$dir, 'Apps-Checkbook', 'docs', 'schema.sqlite'
);
my $actual_dir = File::Spec->catdir( $dir, 'Apps-Checkbook' );
Purge::real_purge_dir( $actual_dir );
my $bigtop_string = << "EO_Bigtop_STRING";
config {
base_dir `$dir`;
SQL SQLite {}
}
app Apps::Checkbook {
table payeepayor {
field id { is int4, primary_key, assign_by_sequence; }
field name { is varchar; }
data
name => `Gas Company`;
data
id => 2,
name => `Crow Business Center`;
}
literal SQL `CREATE INDEX payor_name_ind ON payeepayor ( name );`;
table not_seen {
not_for SQL;
field id { is int4, primary_key; }
field not_much { is varchar; }
}
table other {
field id { is int4, primary_key; }
}
join_table payeeor_other {
joins payeepayor => other;
data payeepayor => 1, other => 1;
data payeepayor => 2, other => 2;
}
}
EO_Bigtop_STRING
Bigtop::Parser->gen_from_string(
{
bigtop_string => $bigtop_string,
create => 'create',
build_list => [ 'SQL', ],
}
);
my $correct_sql = <<'EO_CORRECT_SQL';
CREATE TABLE payeepayor (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name varchar
);
INSERT INTO payeepayor ( name )
VALUES ( 'Gas Company' );
INSERT INTO payeepayor ( id, name )
VALUES ( 2, 'Crow Business Center' );
CREATE INDEX payor_name_ind ON payeepayor ( name );
CREATE TABLE other (
id INTEGER PRIMARY KEY
);
CREATE TABLE payeeor_other (
id INTEGER PRIMARY KEY AUTOINCREMENT,
payeepayor INTEGER,
other INTEGER
);
INSERT INTO payeeor_other ( payeepayor, other )
VALUES ( 1, 1 );
INSERT INTO payeeor_other ( payeepayor, other )
VALUES ( 2, 2 );
EO_CORRECT_SQL
file_ok( $sql_file, $correct_sql, 'tiny gened sql file' );
Purge::real_purge_dir( $actual_dir );
( run in 0.718 second using v1.01-cache-2.11-cpan-39bf76dae61 )