File Coverage

blib/lib/Test/Fixture/DBI/Util.pm
Criterion Covered Total %
statement 21 41 51.2
branch 0 8 0.0
condition n/a
subroutine 7 9 77.7
pod 2 2 100.0
total 30 60 50.0


line stmt bran cond sub pod time code
1             package Test::Fixture::DBI::Util;
2              
3 3     3   1353 use strict;
  3         5  
  3         91  
4 3     3   11 use warnings;
  3         4  
  3         87  
5 3     3   11 use Exporter qw(import);
  3         2  
  3         87  
6              
7 3     3   10 use Carp;
  3         3  
  3         201  
8 3     3   4339 use DBI;
  3         44493  
  3         225  
9 3     3   1874 use YAML::Syck;
  3         4792  
  3         181  
10 3     3   1239 use UNIVERSAL::require;
  3         3525  
  3         23  
11              
12             our $VERSION = '0.01';
13             our @EXPORT = qw(make_database_yaml make_fixture_yaml);
14              
15             sub make_database_yaml {
16 0     0 1   my ( $dbh, $filename ) = @_;
17 0           my $driver = $dbh->{Driver}{Name};
18 0           my $driver_class = __PACKAGE__ . '::' . $driver;
19 0 0         unless ( eval { $driver_class->require; 1 } ) {
  0            
  0            
20 0           croak( sprintf( 'Driver %s is not supported yet', $driver ) );
21             }
22 0           my $data = $driver_class->make_database($dbh);
23 0 0         if ($filename) {
24 0           YAML::Syck::DumpFile( $filename, $data );
25             }
26             else {
27 0           return $data;
28             }
29             }
30              
31             sub make_fixture_yaml {
32 0     0 1   my ( $dbh, $schema, $name_column, $sql, $filename ) = @_;
33 0           my $rows = $dbh->selectall_arrayref( $sql, +{ Slice => +{} } );
34              
35 0           my @data;
36 0           for my $row (@$rows) {
37             push(
38             @data,
39             +{
40             name => ref $name_column
41 0           ? join( '_', map { $row->{$_} } @$name_column )
42 0 0         : $row->{$name_column},
43             schema => $schema,
44             data => $row,
45             }
46             );
47             }
48              
49 0 0         if ($filename) {
50 0           YAML::Syck::DumpFile( $filename, \@data );
51             }
52             else {
53 0           return \@data;
54             }
55             }
56              
57             1;
58              
59             __END__