Improved tests and documentation. Fixed a few bugs in register()
[p5sagit/Excel-Template.git] / t / 018_register.t
1 use strict;
2
3 use Test::More tests => 15;
4
5 use lib 't';
6 use mock;
7 mock::reset;
8
9 my $CLASS = 'Excel::Template';
10 use_ok( $CLASS );
11
12 {
13     local $^W=0;
14     ok( !$CLASS->register(), "Must pass in class, name, and isa" );
15     ok( !$CLASS->register( class => 'Register_018' ), "Must pass in class, name, and isa" );
16     ok( !$CLASS->register( name => 'header' ), "Must pass in class, name, and isa" );
17     ok( !$CLASS->register( isa => 'cell' ), "Must pass in class, name, and isa" );
18     ok( !$CLASS->register( class => 'Register_018', isa => 'cell' ), "Must pass in class, name, and isa" );
19     ok( !$CLASS->register( class => 'Register_018', name => 'header' ), "Must pass in class, name, and isa" );
20     ok( !$CLASS->register( name => 'header', isa => 'cell' ), "Must pass in class, name, and isa" );
21
22     eval {
23         $CLASS->register(
24             class => 'NOT::A::CLASS',
25             name => 'not_a_node',
26             isa => 'cell',
27         );
28     };
29     like( $@, qr/Cannot find or compile/, "Verify registering a non-existent class fails" );
30
31     ok(
32         !$CLASS->register(
33             class => 'NOT::A::CLASS',
34             name => 'cell',
35             isa => 'row',
36         ), "Cannot add a nodename we already have",
37     );
38
39     ok(
40         !$CLASS->register(
41             class => 'NOT::A::CLASS',
42             name => 'new_node',
43             isa => 'not_a_node',
44         ), "Cannot inherit from a nodename we don't have",
45     );
46 }
47
48 ok(
49     $CLASS->register(
50         class => 'Register_018',
51         name => 'header',
52         isa => 'cell',
53     ), "Register Register_018 class",
54 );
55
56 my $object = $CLASS->new(
57     file => \*DATA,
58 );
59 isa_ok( $object, $CLASS );
60
61 ok( $object->write_file( 'filename' ), 'Something returned' );
62
63 my @calls = mock::get_calls;
64 is( join( $/, @calls, '' ), <<__END_EXPECTED__, 'Calls match up' );
65 Spreadsheet::WriteExcel::new( 'filename' )
66 Spreadsheet::WriteExcel::add_format( '' )
67 Spreadsheet::WriteExcel::add_worksheet( '' )
68 Spreadsheet::WriteExcel::Worksheet::new( '' )
69 Spreadsheet::WriteExcel::add_format( 'align', 'center', 'bold', '1' )
70 Spreadsheet::WriteExcel::Worksheet::write( '0', '0', 'test', '2' )
71 Spreadsheet::WriteExcel::close( '' )
72 __END_EXPECTED__
73
74 __DATA__
75 <workbook>
76   <worksheet>
77     <header text="test" />
78   </worksheet>
79 </workbook>