Update Perl internals so that it matches the current Zebra API.
[idzebra-moved-to-github.git] / perl / t / 03_record_update.t
1 #!perl
2 # =============================================================================
3 # $Id: 03_record_update.t,v 1.7 2004-07-28 08:15:47 adam Exp $
4 #
5 # Perl API header
6 # =============================================================================
7 BEGIN {
8     if ($ENV{PERL_CORE}) {
9         chdir 't' if -d 't';
10     }
11     unshift (@INC,'demo','blib/lib','blib/arch');
12 }
13
14 use strict;
15 use warnings;
16
17 use Test::More tests => 18;
18
19 # ----------------------------------------------------------------------------
20 # Session opening and closing
21 BEGIN {
22     use_ok('IDZebra');
23     unlink("test03.log");
24     IDZebra::logFile("test03.log");
25     use_ok('IDZebra::Session'); 
26     use_ok('pod');
27 }
28
29
30 # ----------------------------------------------------------------------------
31 # Session opening and closing
32 my $sess = IDZebra::Session->open(configFile => 'demo/zebra.cfg',
33                                   groupName => 'demo2',
34                                   shadow    => 1);
35 isa_ok($sess,"IDZebra::Session");
36
37 # ----------------------------------------------------------------------------
38 # per record update
39 my $rec1=`cat lib/IDZebra/Data1.pm`;
40 my $rec2=`cat lib/IDZebra/Filter.pm`;
41 my $rec3=`cat lib/IDZebra/Session.pm`;
42
43 my ($sysno, $stat);
44
45 # ADAM: we must set database separately (can't be set from group)
46 $sess->databases('demo1');
47 $sess->begin_trans;
48 $sysno = $sess->update_record(data       => $rec1,
49                               recordType => 'grs.perl.pod',
50                               groupName  => "demo1",
51                               );
52 $stat = $sess->end_trans;
53 ok(($stat->{updated} == 1), "Updated 1 records");
54
55 $sess->begin_trans;
56 $sysno = $sess->delete_record(data       => $rec2,
57                               recordType => 'grs.perl.pod',
58                               groupName  => "demo1",
59                               );
60 $stat = $sess->end_trans;
61 ok(($stat->{deleted} == 1), "Deleted 1 records");
62
63 $sess->begin_trans;
64 $sysno = $sess->insert_record(data       => $rec2,
65                               recordType => 'grs.perl.pod',
66                               groupName  => "demo1",
67                               );
68 $stat = $sess->end_trans;
69 ok(($stat->{inserted} == 1), "Inserted 1 records");
70 ok(($sysno > 0),"Inserted record got valid sysno");
71
72 $sess->begin_trans;
73 $sysno = $sess->insert_record(data       => $rec2,
74                               recordType => 'grs.perl.pod',
75                               groupName  => "demo1",
76                               );
77 $stat = $sess->end_trans;
78 ok(($stat->{inserted} == 0), "Inserted 0 records");
79 ok(($stat->{updated} == 0), "Updated 0 records");
80 ok(($sysno < 0),"Inserted record got invalid sysno");
81
82
83 $sess->begin_trans;
84 my $sysno1 = $sess->update_record(data       => $rec2,
85                                   recordType => 'grs.perl.pod',
86                                   groupName  => "demo1",
87                                   );
88
89 my $sysno2 = $sess->update_record(data       => $rec2,
90                                   recordType => 'grs.perl.pod',
91                                   groupName  => "demo1",
92                                   );
93
94 $stat = $sess->end_trans;
95 ok(($stat->{inserted} == 0), "Inserted 0 records");
96 ok(($stat->{updated} == 1), "Updated $stat->{updated} records");
97 ok(($sysno1 > 0),"Updated record got valid sysno");
98 ok(($sysno2 < 0),"Unupdated record got invalid sysno");
99
100 $sess->begin_trans;
101 $sysno = $sess->delete_record(data       => $rec3,
102                               recordType => 'grs.perl.pod',
103                               groupName  => "demo1",
104                               );
105 $stat = $sess->end_trans;
106
107
108 $sess->begin_trans;
109 $sysno = $sess->update_record(data       => $rec2,
110                               recordType => 'grs.perl.pod',
111                               groupName  => "demo1",
112                               );
113
114 foreach my $i (1..100) {
115     $sysno = $sess->update_record(data       => $rec2,
116                                   recordType => 'grs.perl.pod',
117                                   groupName  => "demo1",
118                                   force      => 1,
119                                   );
120 }
121 foreach my $i (1..10) {
122     $sysno = $sess->update_record(data       => $rec3,
123                                   recordType => 'grs.perl.pod',
124                                   groupName  => "demo1",
125                                   force      => 1,
126                                   );
127 }
128 foreach my $i (1..10) {
129     $sysno = $sess->update_record(data       => $rec2,
130                                   recordType => 'grs.perl.pod',
131                                   groupName  => "demo1",
132                                   force      => 1,
133                                   );
134 }
135
136
137 $stat = $sess->end_trans;
138 ok(($stat->{inserted} == 1), "Inserted $stat->{inserted} records");
139 ok(($stat->{updated} == 120), "Updated $stat->{updated} records");
140 ok(($sysno > 0),"Inserted got valid sysno");
141
142 # ----------------------------------------------------------------------------
143 # Close session
144
145 $sess->commit;
146 $sess->close;