CQL tests and error handling
[idzebra-moved-to-github.git] / perl / test.pl
1 #!/usr/bin/perl
2 # =============================================================================
3 # $Id: test.pl,v 1.7 2003-02-28 18:38:28 pop Exp $
4 #
5 # Perl API header
6 # =============================================================================
7 BEGIN {
8     use Test::More tests => 15;
9     push (@INC,'demo','blib/lib','blib/arch');
10     use_ok('IDZebra::Session'); 
11 }
12 use pod;
13
14
15 IDZebra::logFile("test.log");
16
17 #IDZebra::logLevel(15);
18
19 IDZebra::init();
20
21 # ----------------------------------------------------------------------------
22 # Session opening and closing
23 my $sess = IDZebra::Session->new(configFile => 'demo/zebra.cfg');
24 isa_ok($sess,"IDZebra::Session");
25
26 $sess->open();
27 ok(defined($sess->{zh}), "Zebra handle opened");
28 $sess->close();
29 ok(!defined($sess->{zh}), "Zebra handle closed");
30
31
32 my $sess = IDZebra::Session->open(configFile => 'demo/zebra.cfg',
33                                   groupName  => 'demo1');
34 isa_ok($sess,"IDZebra::Session");
35 ok(defined($sess->{zh}), "Zebra handle opened");
36 #use IDZebra::Repository;
37
38 # ----------------------------------------------------------------------------
39 # Record group tests
40
41 ok(($sess->group->{databaseName} eq "demo1"),"Record group is selected");
42
43 $sess->group(groupName => 'demo2');
44
45 ok(($sess->group->{databaseName} eq "demo2"),"Record group is selected");
46
47 # ----------------------------------------------------------------------------
48 # init repository
49 $sess->init();
50
51 # ----------------------------------------------------------------------------
52 # repository upadte
53
54 our $filecount = 5;
55
56 $sess->begin_trans;
57 $sess->update(path      =>  'lib');
58 my $stat = $sess->end_trans;
59
60 ok(($stat->{inserted} == $filecount), 
61    "Inserted $stat->{inserted}/$filecount records");
62
63 $sess->begin_trans;
64 $sess->update(groupName => 'demo1',
65               path      =>  'lib');
66
67 my $stat = $sess->end_trans;
68 ok(($stat->{inserted} == $filecount), 
69    "Inserted $stat->{inserted}/$filecount records");
70
71 $sess->begin_trans;
72 $sess->delete(groupName => 'demo1',
73               path      =>  'lib');
74 my $stat = $sess->end_trans;
75 ok(($stat->{deleted} == $filecount), 
76    "Deleted $stat->{deleted}/$filecount records");
77
78 $sess->begin_trans;
79 $sess->update(groupName => 'demo1',
80               path      =>  'lib');
81
82 my $stat = $sess->end_trans;
83 ok(($stat->{inserted} == $filecount), 
84    "Inserted $stat->{inserted}/$filecount records");
85
86 ok(($sess->group->{databaseName} eq "demo2"),"Original group is selected");
87
88 # ----------------------------------------------------------------------------
89 # per record update
90 my $rec1=`cat lib/IDZebra/Data1.pm`;
91 my $rec2=`cat lib/IDZebra/Filter.pm`;
92
93 $sess->begin_trans;
94 my $s1=$sess->update_record(data       => $rec2,
95                             recordType => 'grs.perl.pod',
96                             groupName  => "demo1",
97                             );
98 my $stat = $sess->end_trans;
99 ok(($stat->{updated} == 1), "Updated 1 records");
100
101 # ----------------------------------------------------------------------------
102 # search
103 $sess->databases('demo2');
104 #$sess->begin_read;
105 my $rs1 = $sess->search(cqlmap    => 'demo/cql.map',
106                         cql       => 'IDZebra',
107                         databases => [qw(demo1 demo2)]);
108
109 print STDERR "$rs1->{recordCount} hits.\n";
110
111 #my $s2=$sess->update_record(data       => $rec2);
112 #                                       recordType => "grs.perl.pod");
113
114
115 #my $s3=$sess->update_record(file       => "lib/IDZebra/Data1.pm");
116
117
118
119 #$sess->cqlmap("cql.map");
120 #print STDERR $sess->cql2pqf("job.id <= 5");
121 #print STDERR $sess->cql2pqf("job.id=5 and dc.title=computer");
122 #print STDERR "RES:$res\n";
123
124 $sess->close;
125 ok(!defined($sess->{zh}), "Zebra handle closed");
126