DBIx-DataFactory

 view release on metacpan or  search on metacpan

t/01-dbix-datafactory.t  view on Meta::CPAN

}

sub _create_factory_method_dbh : Test(14) {
    my $self = shift;
    my $dsn  = $self->mysqld->dsn(dbname => 'test_factory');
    my $dbh  = DBI->connect($dsn, 'root', '');
    my $factory_maker = DBIx::DataFactory->new({
        dbh => $dbh,
    });
    $factory_maker->create_factory_method(
        method   => 'create_factory_data_dbh',
        table    => 'test_factory',
        auto_inserted_columns => {
            int => {
                type => 'Int',
                size => 8,
            },
            string => {
                type => 'Str',
                size => 10,
            },
        },
    );

    # check random value
    my $values = $factory_maker->create_factory_data_dbh();
    my $row = $dbh->selectrow_hashref(
        'select * from test_factory where `int` = ?', {}, $values->{int},
    );

    ok $row;
    is $row->{id}, $values->{id};
    is $row->{int}, $values->{int};
    ok $row->{int} < 100000000;
    is $row->{string}, $values->{string};
    like $row->{string}, qr{[a-zA-Z0-9]{10}};
    ok !$row->{text};
    is $row->{str_default}, 'default test';

    # check specified value
    $values = $factory_maker->create_factory_data_dbh(string => 'test1', text => 'texttest', str_default => 'default');
    $row = $dbh->selectrow_hashref(
        'select * from test_factory where `int` = ?', {}, $values->{int},
    );

    ok $row;
    is $row->{int}, $values->{int};
    ok $row->{int} < 100000000;
    is $row->{string}, 'test1';
    is $row->{text}, 'texttest';
    is $row->{str_default}, 'default';
}

sub _create_factory_method_connect_attr : Test(14) {
    my $self = shift;
    my $factory_maker = DBIx::DataFactory->new({
        username => 'root',
        password => '',
        dsn      => $self->mysqld->dsn(dbname => 'test_factory'),
        connect_attr => {
            mysql_enable_utf8 => 1,
            on_connect_do     => [
                "SET NAMES 'utf8'",
                "SET CHARACTER SET 'utf8'"
            ],
        },
    });
    $factory_maker->create_factory_method(
        method   => 'create_factory_data_connect_attr',
        table    => 'test_factory',
        auto_inserted_columns => {
            int => {
                type => 'Int',
                size => 8,
            },
            string => {
                type => 'Str',
                size => 10,
            },
        },
    );

    my $dbh = DBI->connect($self->mysqld->dsn(dbname => 'test_factory'), 'root', '');

    # check random value
    my $values = $factory_maker->create_factory_data_connect_attr();
    my $row = $dbh->selectrow_hashref(
        'select * from test_factory where `int` = ?', {}, $values->{int},
    );

    ok $row;
    is $row->{id}, $values->{id};
    is $row->{int}, $values->{int};
    ok $row->{int} < 100000000;
    is $row->{string}, $values->{string};
    like $row->{string}, qr{[a-zA-Z0-9]{10}};
    ok !$row->{text};
    is $row->{str_default}, 'default test';

    # check specified value
    $values = $factory_maker->create_factory_data_connect_attr(string => 'test1', text => 'texttest', str_default => 'default');
    $row = $dbh->selectrow_hashref(
        'select * from test_factory where `int` = ?', {}, $values->{int},
    );

    ok $row;
    is $row->{int}, $values->{int};
    ok $row->{int} < 100000000;
    is $row->{string}, 'test1';
    is $row->{text}, 'texttest';
    is $row->{str_default}, 'default';
}

sub _add_type : Test(2) {
    ok (!DBIx::DataFactory->defined_types->{'test'});
    DBIx::DataFactory->add_type('test::DBIx::DataFactory::Type::Test');
    is (DBIx::DataFactory->defined_types->{'test'}, 'test::DBIx::DataFactory::Type::Test');
}

__PACKAGE__->runtests;



( run in 0.817 second using v1.01-cache-2.11-cpan-39bf76dae61 )