#!/usr/bin/perl -w package Local::Xmldoom::Schema::Parser; use base qw(Test::Class); use Xmldoom::Schema::Parser; use Test::More; use strict; use Data::Dumper; sub parse { return Xmldoom::Schema::Parser::parse(@_); } sub testDatabaseTag : Test(1) { my $self = shift; my $xml = << "EOF"; EOF my $schema = parse({ data => $xml }); ok( 1 ); #is( $schema->name, 'bookstore' ); #is( $schema->extra('defaultIdMethod'), 'native'); } sub testTableTag : Test(1) { my $self = shift; my $xml = << "EOF";
EOF my $schema = parse({ data => $xml }); my $table = $schema->get_table('book'); ok( defined $table ); #is( $table->name, 'book' ); #is( $table->extra('description'), 'Book Table'); } sub testColumnTag : Test(18) { my $self = shift; my $xml = << "EOF";
EOF my $schema = parse({ data => $xml }); my $table = $schema->get_table('book'); my $field1 = $table->get_column('book_id'); my $field2 = $table->get_column('title'); my $field3 = $table->get_column('active'); my $field4 = $table->get_column('last_changed'); # check first field is( $field1->{name}, 'book_id' ); is( $field1->{type}, 'INTEGER' ); is( $field1->{primary_key}, 1 ); is( $field1->{required}, 0 ); is( $field1->{auto_increment}, 1 ); #is( $field1->extra('description'), 'Book Id' ); is( $field1->{id_generator}, 'Some::Perl::Class' ); # check second field is( $field2->{name}, 'title' ); is( $field2->{type}, 'VARCHAR' ); is( $field2->{primary_key}, 0 ); is( $field2->{required}, 1 ); is( $field2->{auto_increment}, 0 ); #is( $field2->extra('description'), 'Book Title' ); is( $field2->{default}, 'Unknown' ); # check enum field my $options = $field3->{options}; is( scalar @$options, 2 ); is( $options->[0], 'Y' ); is( $options->[1], 'N' ); # check the timestamp attribute is( $field4->{timestamp}, 'current' ); my $primary_key = $table->get_primary_key; ok( scalar @$primary_key == 1 ); is( $primary_key->[0]->{name}, 'book_id' ); } sub testForeignKeyTag : Test(6) { my $self = shift; my $xml = << "EOF";
EOF my $schema = parse({ data => $xml }); my $table = $schema->get_table('book'); my $foreign_keys = $table->get_foreign_keys; ok( scalar @$foreign_keys == 1 ); my $ref_table = $foreign_keys->[0]->get_reference_table_name(); my $local_cols = $foreign_keys->[0]->get_local_column_names(); my $foreign_cols = $foreign_keys->[0]->get_foreign_column_names(); is( $ref_table, 'author' ); is( scalar @$local_cols, 1 ); is( $local_cols->[0], 'author_id' ); is( scalar @$foreign_cols, 1 ); is( $foreign_cols->[0], 'author_id' ); } 1;