Zebra perl API following changes in zebraapi.c/.h (all functions returning
[idzebra-moved-to-github.git] / perl / t / 03_record_update.t
1 #!perl
2 # =============================================================================
3 # $Id: 03_record_update.t,v 1.6 2003-07-07 10:59:33 pop 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     IDZebra::logFile("test.log");
24     use_ok('IDZebra::Session'); 
25     use_ok('pod');
26 }
27
28
29 # ----------------------------------------------------------------------------
30 # Session opening and closing
31 my $sess = IDZebra::Session->open(configFile => 'demo/zebra.cfg',
32                                   groupName => 'demo2',
33                                   shadow    => 1);
34 isa_ok($sess,"IDZebra::Session");
35
36 # ----------------------------------------------------------------------------
37 # per record update
38 my $rec1=`cat lib/IDZebra/Data1.pm`;
39 my $rec2=`cat lib/IDZebra/Filter.pm`;
40 my $rec3=`cat lib/IDZebra/Session.pm`;
41
42 my ($sysno, $stat);
43
44 $sess->begin_trans;
45 $sysno = $sess->update_record(data       => $rec1,
46                               recordType => 'grs.perl.pod',
47                               groupName  => "demo1",
48                               );
49 $stat = $sess->end_trans;
50 ok(($stat->{updated} == 1), "Updated 1 records");
51
52 $sess->begin_trans;
53 $sysno = $sess->delete_record(data       => $rec2,
54                               recordType => 'grs.perl.pod',
55                               groupName  => "demo1",
56                               );
57 $stat = $sess->end_trans;
58 ok(($stat->{deleted} == 1), "Deleted 1 records");
59
60 $sess->begin_trans;
61 $sysno = $sess->insert_record(data       => $rec2,
62                               recordType => 'grs.perl.pod',
63                               groupName  => "demo1",
64                               );
65 $stat = $sess->end_trans;
66 ok(($stat->{inserted} == 1), "Inserted 1 records");
67 ok(($sysno > 0),"Inserted record got valid sysno");
68
69 $sess->begin_trans;
70 $sysno = $sess->insert_record(data       => $rec2,
71                               recordType => 'grs.perl.pod',
72                               groupName  => "demo1",
73                               );
74 $stat = $sess->end_trans;
75 ok(($stat->{inserted} == 0), "Inserted 0 records");
76 ok(($stat->{updated} == 0), "Updated 0 records");
77 ok(($sysno < 0),"Inserted record got invalid sysno");
78
79
80 $sess->begin_trans;
81 my $sysno1 = $sess->update_record(data       => $rec2,
82                                   recordType => 'grs.perl.pod',
83                                   groupName  => "demo1",
84                                   );
85
86 my $sysno2 = $sess->update_record(data       => $rec2,
87                                   recordType => 'grs.perl.pod',
88                                   groupName  => "demo1",
89                                   );
90
91 $stat = $sess->end_trans;
92 ok(($stat->{inserted} == 0), "Inserted 0 records");
93 ok(($stat->{updated} == 1), "Updated $stat->{updated} records");
94 ok(($sysno1 > 0),"Updated record got valid sysno");
95 ok(($sysno2 < 0),"Unupdated record got invalid sysno");
96
97 $sess->begin_trans;
98 $sysno = $sess->delete_record(data       => $rec3,
99                               recordType => 'grs.perl.pod',
100                               groupName  => "demo1",
101                               );
102 $stat = $sess->end_trans;
103
104
105 $sess->begin_trans;
106 $sysno = $sess->update_record(data       => $rec2,
107                               recordType => 'grs.perl.pod',
108                               groupName  => "demo1",
109                               );
110
111 foreach my $i (1..100) {
112     $sysno = $sess->update_record(data       => $rec2,
113                                   recordType => 'grs.perl.pod',
114                                   groupName  => "demo1",
115                                   force      => 1,
116                                   );
117 }
118 foreach my $i (1..10) {
119     $sysno = $sess->update_record(data       => $rec3,
120                                   recordType => 'grs.perl.pod',
121                                   groupName  => "demo1",
122                                   force      => 1,
123                                   );
124 }
125 foreach my $i (1..10) {
126     $sysno = $sess->update_record(data       => $rec2,
127                                   recordType => 'grs.perl.pod',
128                                   groupName  => "demo1",
129                                   force      => 1,
130                                   );
131 }
132
133
134 $stat = $sess->end_trans;
135 ok(($stat->{inserted} == 1), "Inserted $stat->{inserted} records");
136 ok(($stat->{updated} == 120), "Updated $stat->{updated} records");
137 ok(($sysno > 0),"Inserted got valid sysno");
138
139 # ----------------------------------------------------------------------------
140 # Close session
141
142 $sess->commit;
143 $sess->close;