DBIx-Class-Wrapper

 view release on metacpan or  search on metacpan

t/03-loop_through.t  view on Meta::CPAN

#!perl -T

use Test::More;
use Test::Fatal qw/dies_ok lives_ok/;
# use File::Temp;
use DBI;
use DBD::SQLite;

use lib 't/lib';

use My::Schema;
use My::Model;

my $TEST_SIZE = 1000;

## Connect to a DB and dynamically build the DBIC model.
ok( my $dbh = DBI->connect("dbi:SQLite::memory:" , "" , "") , "Ok connected as a DBI");
ok( $dbh->{AutoCommit} = 1 , "Ok autocommit set");
ok( $dbh->do("CREATE TABLE simple_record(some_id INTEGER PRIMARY KEY AUTOINCREMENT , value INTEGER NOT NULL)") , "Ok creating some simple table");
ok( $dbh->do(qq{ CREATE TABLE complex_record(top_id INTEGER NOT NULL,
                                             middle_id VARCHAR(255) NOT NULL,
                                             bottom_id BOOLEAN NOT NULL,
                                             value INTEGER NOT NULL,
                                             PRIMARY KEY( top_id, middle_id , bottom_id )
                                             )
               }) , "Ok can create complex record table" );

## Build a schema dynamically.
ok( my $schema = My::Schema->connect(sub{ return $dbh ;} , { unsafe => 1 } ), "Ok built schema with dbh");
## Just to check
ok( $schema->resultset('SimpleRecord') , "Simple record is there");
ok( $schema->resultset('ComplexRecord') , "Complex record is there");


## Build a My::Model using it
ok( my $bm = My::Model->new({ dbic_schema => $schema }) , "Ok built a model");

ok( my $sf = $bm->dbic_factory('SimpleRecord') );
ok( my $cf =  $bm->dbic_factory('ComplexRecord') );

my @SIMPLE_ROWS = ();

# Insert a lot of dummy data
{
  my $i = 0;
  while( $i++ < $TEST_SIZE ){
    push @SIMPLE_ROWS , $sf->create({ value => $i });
  }
}
is( $sf->count() , $TEST_SIZE, "Ok got right number of dummy data");


my @COMPLEX_ROWS = ();

{
  my $top = 0;
  my $middle = 0;
  my $bottom = 0;

  my $n_rows = $TEST_SIZE;
  while( $n_rows-- ){
    push @COMPLEX_ROWS  , $cf->create({ top_id => $top,
                                        middle_id => 'STRING'.sprintf('%02d',$middle),
                                        bottom_id => $bottom,



( run in 0.984 second using v1.01-cache-2.11-cpan-54e63673c56 )