package LIMS::Local::TestDB; # provide temporary SQLite DB for t/ # ref catalyst Ch8 Testing # requires username & password passing as hashref use strict; use warnings; use Directory::Scratch; use LIMS::Schema; use YAML qw(DumpFile); use FindBin qw($Bin); my ($schema, $config); BEGIN { my $tmp = Directory::Scratch->new; my $db = $tmp->touch('database'); my $dsn = "DBI:SQLite:$db"; $rose = LIMS::DB->connect($dsn); $config = "$Bin/../conf/lims_db_local.yml"; DumpFile( $config, { 'Model::DB' => { connect_info => [ $dsn ] } } ); } sub rose { return $rose; } # need to set up minimal environment for app to work: sub setup_tables { my $login = shift || die 'No login details passed to setup_tables()'; schema->resultset('Hospitals')->create( { location_name => 'Airedale', organisation_code => 'RCF22', } ); schema->resultset('Trials')->create( { trial_name => 'TestTrial', } ); schema->resultset('Groups')->create( { group_name => 'TestUser', idle_time => 30, } ); schema->resultset('Users')->create( { username => $login->{username}, password => $login->{password}, group_id => 1, } ); schema->resultset('Specimens')->create( { sample_code => 'PB', sample_type => 'peripheral blood', } ); schema->resultset('Clinicians')->create( { national_code => 'C9999998', surname => 'Unknown', initials => 'NK', } ); schema->resultset('Requests')->create( { date => DateTime->today, specimen => 'PB', request_number => 1, patient_id => 1, case_id => 1, referrer_id => 1, } ); } END { unlink $config; } 1;