File: db-object-loader-9.t

package info (click to toggle)
librose-db-object-perl 1%3A0.815-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 4,408 kB
  • ctags: 2,365
  • sloc: perl: 79,670; sql: 28; makefile: 7
file content (102 lines) | stat: -rw-r--r-- 1,695 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/usr/bin/perl -w

use strict;

use FindBin qw($Bin);
use lib "$Bin/lib";

use Test::More tests => 1 + (1 * 3);

BEGIN 
{
  require 't/test-lib.pl';
  use_ok('Rose::DB::Object::Loader');
}

our %Have;

#
# Tests
#

foreach my $db_type (qw(sqlite))
{
  SKIP:
  {
    skip("$db_type tests", 3)  unless($Have{$db_type});
  }

  next  unless($Have{$db_type});

  my $loader =
    Rose::DB::Object::Loader->new(
      db_class       => 'My::DB::Opa',
      base_classes   => 'My::DB::Opa::Object',
      class_prefix   => "My::ModelDynamic::$db_type",
      include_tables => 'sites',
  );

  my @classes = $loader->make_classes;

  is(join(',', sort @classes), "My::ModelDynamic::${db_type}::Site,My::ModelDynamic::${db_type}::Site::Manager", "make_classes - $db_type");

  is("My::ModelDynamic::${db_type}::Site"->new->dbh, My::DB::Opa->new_or_cached->dbh, "dbh is cached - $db_type");

  is(My::DB::Opa->connection_count, 1, "connection count - $db_type");
}

BEGIN
{
  our %Have;

  #
  # SQLite
  #

  my $dbh;

  eval
  {
    $dbh = Rose::DB->new('sqlite_admin')->retain_dbh()
      or die Rose::DB->error;
  };

  if(!$@ && $dbh)
  {
    $Have{'sqlite'} = 1;

    # Drop existing tables, ignoring errors
    {
      local $dbh->{'RaiseError'} = 0;
      local $dbh->{'PrintError'} = 0;

      $dbh->do('DROP TABLE sites');
    }

    $dbh->do(<<"EOF");
CREATE TABLE sites (
  id    INT(10) NOT NULL,
  host  VARCHAR(45) DEFAULT NULL,
  PRIMARY KEY (id)
)
EOF

    $dbh->disconnect;
  }
}

END
{
  if($Have{'sqlite'})
  {
    # Informix
    my $dbh = Rose::DB->new('sqlite_admin')->retain_dbh()
      or die Rose::DB->error;

    $dbh->do('DROP TABLE sites');

    $dbh->disconnect;
  }
}

1;