1# -*-perl-*-
2
3# $Id: 63_export_sql.t,v 1.2 2004/02/26 02:02:29 lachoy Exp $
4
5use strict;
6use lib qw( t/ );
7use Test::More tests => 15;
8
9do "t/config.pl";
10
11my $ALL =
12q{INSERT INTO foo ( myname )
13VALUES ( 'foo' ) ;
14INSERT INTO foo ( myname )
15VALUES ( 'bar' ) ;
16INSERT INTO foo ( myname )
17VALUES ( 'baz' ) ;
18};
19
20my $SOME =
21q{INSERT INTO foo ( myname )
22VALUES ( 'bar' ) ;
23};
24
25my $ALL_ID =
26q{INSERT INTO foo ( myid, myname )
27VALUES ( '1', 'foo' ) ;
28INSERT INTO foo ( myid, myname )
29VALUES ( '2', 'bar' ) ;
30INSERT INTO foo ( myid, myname )
31VALUES ( '3', 'baz' ) ;
32};
33
34my $SOME_ID =
35q{INSERT INTO foo ( myid, myname )
36VALUES ( '2', 'bar' ) ;
37};
38
39{
40    my %config = (
41      test => {
42         class               => 'ExportObjectTest',
43         isa                 => [ 'SPOPS::Loopback', 'SPOPS::DBI' ],
44         field               => [ qw( myid myname ) ],
45         id_field            => 'myid',
46         base_table          => 'foo',
47      },
48    );
49
50    # Create our test class using the loopback
51
52    require_ok( 'SPOPS::Initialize' );
53
54    my $class_init_list = eval { SPOPS::Initialize->process({
55                                             config => \%config }) };
56    ok( ! $@, "Initialize process run $@" );
57    is( $class_init_list->[0], 'ExportObjectTest', 'Object class initialized' );
58
59    eval {
60        ExportObjectTest->new({ myid => 1, myname => 'foo' })->save();
61        ExportObjectTest->new({ myid => 2, myname => 'bar' })->save();
62        ExportObjectTest->new({ myid => 3, myname => 'baz' })->save();
63    };
64    diag( "Error creating loopback objects: $@" ) if ( $@ );
65    ok( ! $@, "Objects to export created" );
66
67    require_ok( 'SPOPS::Export' );
68
69    my ( $exporter, $export_all_data, $export_some_data );
70    eval { $exporter = SPOPS::Export->new(
71                         'sql', { object_class => 'ExportObjectTest' } ) };
72    diag( "Error creating exporter: $@" ) if ( $@ );
73    ok( ! $@, "Exporter created" );
74    $export_all_data  = eval { $exporter->run };
75    ok( ! $@, "Export all data (no ID)" );
76    is( $export_all_data, $ALL, "Export all data matches (no ID)" );
77
78    $exporter->where( "myname = 'bar'" );
79    $export_some_data = eval { $exporter->run };
80    ok( ! $@, "Export some data (no ID)" );
81    is( $export_some_data, $SOME, "Export some data matches (no ID)" );
82
83    my ( $exporter_id, $export_all_id_data, $export_some_id_data );
84    eval { $exporter_id = SPOPS::Export->new(
85                              'sql', { object_class => 'ExportObjectTest',
86                                       include_id   => 1 } ) };
87    ok( ! $@, "Exporter including ID created" );
88
89    $export_all_id_data = eval { $exporter_id->run };
90    ok( ! $@, "Export all data (with ID)" );
91    is( $export_all_id_data, $ALL_ID, "Export all data matches (with ID)" );
92
93    $exporter_id->where( "myname = 'bar'" );
94    $export_some_id_data = eval { $exporter_id->run };
95    ok( ! $@, "Export some data (with ID)" );
96    is( $export_some_id_data, $SOME_ID, "Export some data (with ID)" );
97}
98
99