/[webpac2]/trunk/t/4-db.t
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/t/4-db.t

Parent Directory Parent Directory | Revision Log Revision Log


Revision 70 - (hide annotations)
Sat Nov 19 23:48:24 2005 UTC (18 years, 5 months ago) by dpavlin
File MIME type: application/x-troff
File size: 1944 byte(s)
 r8980@llin:  dpavlin | 2005-11-20 00:49:22 +0100
 implement data_structure that returns HASH and not ARRAY.
 
 Little explanation for this rationale:
 
 Array was needed back in WebPAC v1 because order of tags in import_xml was
 important. However, since we are no longer depending on order of tags in
 input/*.xml, hash is much better choice.

1 dpavlin 18 #!/usr/bin/perl -w
2    
3 dpavlin 50 use Test::More tests => 26;
4 dpavlin 18 use Test::Exception;
5     use Cwd qw/abs_path/;
6     use blib;
7     use File::Temp qw/tempdir/;
8     use strict;
9    
10     BEGIN {
11     use_ok( 'WebPAC::DB' );
12     }
13    
14     ok(my $abs_path = abs_path($0), "abs_path");
15     $abs_path =~ s#/[^/]*$#/#;
16     diag "abs_path: $abs_path";
17    
18     my $db;
19 dpavlin 19 my $debug = 1;
20 dpavlin 18
21     diag "NULL DB";
22    
23 dpavlin 31 ok($db = new WebPAC::DB( debug => $debug, no_log => 1, ), "new");
24 dpavlin 18
25     ok(! $db->path, "path");
26    
27 dpavlin 22 ok(! $db->load_ds(), 'load_ds');
28     ok(! $db->load_ds({ '000' => '000' }), 'load_ds');
29 dpavlin 18
30 dpavlin 22 ok(! $db->save_ds(), "save_ds");
31     ok(! $db->save_ds({ '000' => '000' }), 'save_ds');
32 dpavlin 18
33     undef $db;
34    
35 dpavlin 22 ok(my $path = tempdir( CLEANUP => 1 ), "path");
36 dpavlin 18
37     diag "DB path: $path";
38    
39 dpavlin 31 ok($db = new WebPAC::DB( path => $path, debug => $debug, no_log => 1 ), "new");
40 dpavlin 18
41     cmp_ok($db->{'path'}, 'eq', $path, "path");
42    
43 dpavlin 19 ok(! $db->path(''), "path - disable caching");
44 dpavlin 18
45 dpavlin 70 ok(! defined($db->{'path'}), "no path");
46 dpavlin 18
47     ok($db->path( $path ), "path($path)");
48    
49 dpavlin 19 cmp_ok($db->{'path'}, 'eq', $path, "path");
50    
51 dpavlin 22 ok(! $db->load_ds(), 'load_ds');
52     ok(! $db->load_ds({ '000' => '000' }), 'load_ds');
53 dpavlin 18
54 dpavlin 22 ok(! $db->save_ds(), "save_ds");
55 dpavlin 18
56 dpavlin 70 my $ds = {
57     'Source' => {
58     'name' => 'Izvor: ',
59     'tag' => 'Source',
60     'display' => [ 'foo' ]
61     },
62     'ID' => {
63     'name' => 'ID',
64     'tag' => 'IDths',
65     'swish' => [ 'bar' ],
66     'lookup_key' => [ 'bar' ]
67     },
68 dpavlin 18 'filename' => [ 'out/thes/001.html' ],
69     'name' => 'filename',
70     'tag' => 'filename'
71 dpavlin 70 };
72 dpavlin 18
73 dpavlin 22 ok(! $db->save_ds(), "empty save_ds");
74     throws_ok { $db->save_ds( foo => 1 ) } qr/ds/, "save_ds - ds";
75 dpavlin 70 throws_ok { $db->save_ds( ds => $ds ) } qr/current_filename/, "save_ds - current_filename";
76     throws_ok { $db->save_ds( ds => $ds, 'current_filename' => 'foo' ) } qr/headline/, "save_ds - headline";
77 dpavlin 18
78 dpavlin 70 ok($db->save_ds( ds => $ds, 'current_filename' => 'foo', 'headline' => 'bar' ), "save_ds");
79 dpavlin 18
80 dpavlin 70 ok(my $ds2 = $db->load_ds({ '000' => '000' }), "load_ds");
81 dpavlin 20
82 dpavlin 70 is_deeply($ds, $ds2, "loaded data");
83 dpavlin 20
84 dpavlin 50 ok(! $db->load_ds({ '000' => 42 }), "load_ds non-existing");
85    
86 dpavlin 18 undef $db;
87    

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26