use strict; use warnings; use Test::More; use Test::Deep; use lib 't/lib'; use IRC::Schema; subtest Channel => sub { # {{{ my $result_class = IRC::Schema->resultset('Channel')->result_class; isa_ok $result_class, 'IRC::Schema::Result'; cmp_set [$result_class->columns], [qw(id name network_id)], 'columns get set correctly'; cmp_deeply $result_class->column_info('name'), { data_type => 'varchar', size => 100, }, 'name metadata set'; cmp_deeply $result_class->column_info('id'), { data_type => 'int', is_auto_increment => 1, }, 'id metadata set'; cmp_deeply $result_class->column_info('network_id'), { data_type => 'int', }, 'network_id metadata set'; ok $result_class->has_relationship('network'), 'network relationship works'; cmp_deeply([$result_class->primary_columns], [ 'id' ], 'id gets set to pk'); cmp_deeply({ $result_class->unique_constraints }, { Channels_name => [ 'name' ], primary => [ 'id' ], }, 'unqiue constraints get set correctly'); is( $result_class->table, 'Channels', 'table gets set correctly'); is( $result_class->test_perl_version, 'station', 'perl version gets set from base class') if $] >= 5.010; }; # }}} subtest Message => sub { # {{{ my $result_class = IRC::Schema->resultset('Message')->result_class; isa_ok $result_class, 'DBIx::Class::Core'; ok(!$result_class->isa('IRC::Schema::Result'), 'Not a ::Result'); cmp_set [$result_class->columns], [qw(id user_id mode_id channel_id value when_said)], 'columns get set correctly'; cmp_deeply $result_class->column_info('id'), { data_type => 'int', is_auto_increment => 1, }, 'id metadata set'; cmp_deeply $result_class->column_info('user_id'), { data_type => 'int', }, 'user_id metadata set'; cmp_deeply $result_class->column_info('mode_id'), { data_type => 'int', }, 'mode_id metadata set'; cmp_deeply $result_class->column_info('channel_id'), { data_type => 'int', }, 'channel_id metadata set'; cmp_deeply $result_class->column_info('value'), { data_type => 'varchar', size => 100, }, 'value metadata set'; cmp_deeply $result_class->column_info('when_said'), { data_type => 'datetime', }, 'when_said metadata set'; ok $result_class->has_relationship('user'), 'user relationship works'; ok $result_class->has_relationship('channel'), 'channel relationship works'; ok $result_class->has_relationship('mode'), 'mode relationship works'; cmp_deeply([$result_class->primary_columns], [ 'id' ], 'id gets set to pk'); is( $result_class->table, 'Messages', 'table gets set correctly'); }; # }}} subtest Mode => sub { # {{{ my $result_class = IRC::Schema->resultset('Mode')->result_class; isa_ok $result_class, 'IRC::Schema::Result'; cmp_set [$result_class->columns], [qw(id name code)], 'columns get set correctly'; cmp_deeply $result_class->column_info('id'), { data_type => 'int', is_auto_increment => 1, }, 'id metadata set'; cmp_deeply $result_class->column_info('name'), { data_type => 'varchar', size => 30, }, 'name metadata set'; cmp_deeply $result_class->column_info('code'), { data_type => 'char', size => 1, }, 'code metadata set'; cmp_deeply([$result_class->primary_columns], [ 'id' ], 'id gets set to pk'); cmp_deeply({ $result_class->unique_constraints }, { Modes_name => [ 'name' ], Modes_code => [ 'code' ], primary => [ 'id' ], }, 'unqiue constraints get set correctly'); is( $result_class->table, 'Modes', 'table gets set correctly'); }; # }}} subtest Network => sub { # {{{ my $result_class = IRC::Schema->resultset('Network')->result_class; isa_ok $result_class, 'IRC::Schema::Result'; cmp_set [$result_class->columns], [qw(id name)], 'columns get set correctly'; cmp_deeply $result_class->column_info('id'), { data_type => 'int', is_auto_increment => 1, }, 'id metadata set'; cmp_deeply $result_class->column_info('name'), { data_type => 'varchar', size => 100, }, 'name metadata set'; cmp_deeply([$result_class->primary_columns], [ 'id' ], 'id gets set to pk'); cmp_deeply({ $result_class->unique_constraints }, { Networks_name => [ 'name' ], primary => [ 'id' ], }, 'unqiue constraints get set correctly'); is( $result_class->table, 'Networks', 'table gets set correctly'); }; # }}} subtest User => sub { # {{{ my $result_class = IRC::Schema->resultset('User')->result_class; isa_ok $result_class, 'IRC::Schema::Result'; cmp_set [$result_class->columns], [qw(id handle)], 'columns get set correctly'; cmp_deeply $result_class->column_info('id'), { data_type => 'int', is_auto_increment => 1, }, 'id metadata set'; cmp_deeply $result_class->column_info('handle'), { data_type => 'varchar', size => 30, }, 'handle metadata set'; ok $result_class->has_relationship('messages'), 'messages relationship works'; cmp_deeply([$result_class->primary_columns], [ 'id' ], 'id gets set to pk'); cmp_deeply({ $result_class->unique_constraints }, { users_handle => [ 'handle' ], primary => [ 'id' ], }, 'unqiue constraints get set correctly'); is( $result_class->table, 'users', 'table gets set correctly'); }; # }}} done_testing; # vim: foldmethod=marker