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