-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathperf_check_pseudo.pl
94 lines (68 loc) · 3.83 KB
/
perf_check_pseudo.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/env perl
use strict;
use warnings;
use Benchmark qw/cmpthese timethese/;
use C4::Circulation qw( AddIssue AddReturn );
use t::lib::TestBuilder;
use t::lib::Mocks;
my $builder = t::lib::TestBuilder->new;
my $schema = Koha::Database->new->schema;
my $patron =$builder->build_object( { class => 'Koha::Patrons' } )->store();
my $item =$builder->build_sample_item();
$schema->storage->txn_begin;
t::lib::Mocks::mock_userenv({ branchcode => $item->homebranch });
t::lib::Mocks::mock_preference('Pseudonymization', '0');
t::lib::Mocks::mock_preference('PseudonymizationPatronFields', '');
t::lib::Mocks::mock_preference('PseudonymizationTransactionFields', '');
warn "Pseudonymization Disabled";
issue_return();
$schema->storage->txn_rollback;
$schema->storage->txn_begin;
t::lib::Mocks::mock_preference('Pseudonymization', '1');
warn "Pseudonymization Enabled, no fields";
issue_return();
$schema->storage->txn_rollback;
$schema->storage->txn_begin;
t::lib::Mocks::mock_preference('PseudonymizationPatronFields', 'city,country,dateenrolled,categorycode,sex,branchcode,title,sort1,sort2,state,zipcode');
warn "Pseudonymization enabled with all patron fields";
issue_return();
$schema->storage->txn_rollback;
$schema->storage->txn_begin;
t::lib::Mocks::mock_preference('PseudonymizationTransactionFields', 'ccode,datetime,holdingbranch,homebranch,itemtype,itemcallnumber,itemnumber,transaction_branchcode,location,transaction_type');
warn "Pseudonymization enabled with all patron and transaction fields";
issue_return();
$schema->storage->txn_rollback;
my $attr_type = $builder->build_object({ class => 'Koha::Patron::Attribute::Types', value => { keep_for_pseudonymization => 1 } })->store();
my $attribute = $builder->build_object({ class => 'Koha::Patron::Attributes', value => { code => $attr_type->code, borrowernumber => $patron->id }} )->store();
$schema->storage->txn_begin;
t::lib::Mocks::mock_preference('PseudonymizationTransactionFields', 'ccode,datetime,holdingbranch,homebranch,itemtype,itemcallnumber,itemnumber,transaction_branchcode,location,transaction_type');
warn "Pseudonymization enabled with all patron and transaction fields and an attribute";
issue_return();
$schema->storage->txn_rollback;
$builder->build_object({ class => 'Koha::Patron::Attribute::Types', value => { keep_for_pseudonymization => 1 } })->store();
$builder->build_object({ class => 'Koha::Patron::Attribute::Types', value => { keep_for_pseudonymization => 1 } })->store();
$builder->build_object({ class => 'Koha::Patron::Attribute::Types', value => { keep_for_pseudonymization => 1 } })->store();
$builder->build_object({ class => 'Koha::Patron::Attribute::Types', value => { keep_for_pseudonymization => 1 } })->store();
$builder->build_object({ class => 'Koha::Patron::Attribute::Types', value => { keep_for_pseudonymization => 1 } })->store();
$schema->storage->txn_begin;
t::lib::Mocks::mock_preference('PseudonymizationTransactionFields', 'ccode,datetime,holdingbranch,homebranch,itemtype,itemcallnumber,itemnumber,transaction_branchcode,location,transaction_type');
warn "Pseudonymization enabled with all patron and transaction fields and an attribute with more types existing";
issue_return();
$schema->storage->txn_rollback;
sub issue_return {
cmpthese(
-10,
{
issue => sub {
$builder->build_object( { class => 'Koha::Statistics', value => { type => 'issue', borrowernumber=> $patron->id, itemnumber => $item->id } } )->store();
},
return => sub {
$builder->build_object( { class => 'Koha::Statistics', value => { type => 'return', borrowernumber => $patron->id, itemnumber => $item->id } } )->store();
},
checkout_in => sub {
AddIssue( $patron, $item->barcode );
AddReturn( $item->barcode, $item->homebranch );
},
}
);
}