The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use utf8;
use Test::More;

package Hoge;
use DBIx::Schema::DSL;

database 'MySQL';
create_database 'test';

add_table_options
    mysql_charset => 'utf8mb4';

default_unsigned;

create_table user => columns {
    integer 'id',   primary_key, auto_increment;
    integer 'member_id', unique;
    column  'gender', 'tinyint', null => 1;
    integer 'age', limit => 1, unsigned => 0, null;
    varchar 'name', null => 0;
    varchar 'description', null => 1;
    text    'profile';
};

create_table book => columns {
    integer 'id',   primary_key, auto_increment;
    varchar 'name', null => 0;
    integer 'author_id';
    decimal 'price', size => [4,2];

    belongs_to 'author';
};

create_table author => columns {
    primary_key 'id';
    varchar 'name';
    decimal 'height', precision => 4, scale => 1;

    has_many 'book';
};

create_table user_purchase => columns {
    integer  'id', auto_increment;
    integer  'user_id';
    datetime 'purchased_at';

    set_primary_key qw/id purchased_at/;
    add_index user_id_idx => [qw/user_id/];
};

package Fuga;
use DBIx::Schema::DSL;

create_table player => columns {
    integer 'id',   primary_key => 1, auto_increment => 1;
    integer 'member_id', unique;
    column  'gender', 'tinyint', null => 1;
    integer 'age', limit => 1, unsigned => 0, null;
    varchar 'name', null => 0;
    varchar 'description', null => 1;
};

package main;

my $output = Hoge->output;
ok $output and note $output;
ok(Hoge->no_fk_output);
ok(Hoge->translate_to('HTML'));

like(Fuga->output, qr/player/ms);
unlike(Fuga->output, qr/user_purchase/ms);

done_testing;