test excell file
[webpac2] / t / 4-store.t
1 #!/usr/bin/perl -w
2
3 use strict;
4 use blib;
5
6 use Test::More tests => 38;
7
8 use File::Temp qw/tempdir/;
9
10 BEGIN {
11 use_ok( 'WebPAC::Test' );
12 use_ok( 'WebPAC::Store' );
13 }
14
15 my $db;
16
17 diag "NULL Store";
18
19 ok(new WebPAC::Store(), 'new without database');
20
21 ok($db = new WebPAC::Store({ database => 'foobar', %LOG }), "new");
22
23 throws_ok { $db->load_ds() } qr/id/, 'load_ds without id';
24 ok(! $db->load_ds( id => 000 ), 'load_ds');
25
26 throws_ok { $db->save_ds() } qr/id/, "save_ds without id";
27 throws_ok { $db->save_ds( id => 000 ) } qr/ds/, 'save_ds without ds';
28
29 undef $db;
30
31 ok($db = new WebPAC::Store({ database => 'webpac-test', %LOG }), "new");
32
33 #
34 # test *_ds
35 #
36
37 throws_ok { $db->load_ds() } qr/without id/, 'load_ds without arguments';
38 ok(! $db->load_ds( id => 000 ), 'load_ds');
39
40 throws_ok { $db->save_ds() } qr/id/, "save_ds - need id";
41
42 my $ds = {
43         'Source' => {
44                 'name' => 'Izvor: ',
45                 'tag' => 'Source',
46                 'display' => [ 'foo' ]
47         },
48         'ID' => {
49                 'name' => 'ID',
50                 'tag' => 'IDths',
51                 'swish' => [ 'bar' ],
52                 'lookup_key' => [ 'bar' ]
53         },
54 };
55
56 throws_ok { $db->save_ds( id => 1 ) } qr/ds/, "save_ds - need ds";
57
58 ok($db->save_ds( id => 1, ds => $ds ), "save_ds");
59
60 ok(my $ds2 = $db->load_ds( id => 1 ), "load_ds with id");
61
62 is_deeply($ds, $ds2, "loaded data");
63
64 throws_ok { $ds2 = $db->load_ds( 1 ) } qr/HASH/, "load_ds without hash";
65
66 ok($ds2 = $db->load_ds( id => 1 ), "load_ds");
67
68 is_deeply($ds, $ds2, "loaded data");
69
70 ok(! $db->load_ds( id => 42 ), "load_ds non-existing");
71
72 ok($db = new WebPAC::Store({ database => 'webpac-test', %LOG }), "new");
73
74 ok(! $db->load_ds( id => 1, input => 'foobar' ), "load_ds with invalid input");
75
76 ok(! $db->load_ds( id => 1, database => 'non-existant', ), "load_ds with unknown database");
77
78 ok($ds2 = $db->load_ds( id => 1, database => 'webpac-test' ), "load_ds");
79
80 #
81 # test *_lookup
82 #
83
84 my $l = {
85         foo => { 42 => 1 },
86 };
87
88 ok(! $db->load_lookup( input => 'non-existant', key => 'foo' ), 'invalid load_lookup');
89
90 ok($db->save_lookup( input => 'foo', key => 'bar', data => $l ), "save_lookup");
91
92 ok(-e $db->var_path( 'lookup', 'webpac-test', 'foo', 'bar'), "exists");
93
94 is_deeply($db->load_lookup( input => 'foo', key => 'bar' ), $l, 'load_lookup');
95
96 ok($db->save_lookup( database => 'baz', input => 'foo', key => 'bar', data => $l ), "save_lookup with database");
97
98 ok(-e $db->var_path( '/lookup','baz','foo','bar'), "exists");
99
100 is_deeply($db->load_lookup( database => 'baz', input => 'foo', key => 'bar' ), $l, 'load_lookup');
101
102 #
103 # test *_row
104 #
105
106 my $row = {
107         '000' => [ 42 ],
108         '900' => [ qw/a foo b bar c baz/ ],
109 };
110
111 ok(! $db->load_row( input => 'non-existant', id => 1234 ), 'invalid load_row');
112
113 ok($db->save_row( input => 'foo', id => 1234, row => $row ), "save_row");
114
115 ok(-e $db->var_path( 'row','webpac-test','foo',1234), "exists");
116
117 is_deeply($db->load_row( input => 'foo', id => 1234 ), $row, 'load_row');
118
119 ok($db->save_row( database => 'baz', input => 'foo', id => 1234, row => $row ), "save_row with database");
120
121 ok(-e $db->var_path( 'row','baz','foo',1234), "exists");
122
123 is_deeply($db->load_row( database => 'baz', input => 'foo', id => 1234 ), $row, 'load_row');
124
125 undef $db;
126