|
Lines 28-124
use C4::Members::AttributeTypes;
Link Here
|
| 28 |
use Koha::Library; |
28 |
use Koha::Library; |
| 29 |
|
29 |
|
| 30 |
use t::lib::Mocks; |
30 |
use t::lib::Mocks; |
|
|
31 |
use t::lib::TestBuilder; |
| 32 |
|
| 33 |
use Koha::Database; |
| 31 |
|
34 |
|
| 32 |
use_ok( "C4::Utils::DataTables::Members" ); |
35 |
use_ok( "C4::Utils::DataTables::Members" ); |
| 33 |
|
36 |
|
| 34 |
my $dbh = C4::Context->dbh; |
37 |
my $schema = Koha::Database->new->schema; |
| 35 |
|
38 |
$schema->storage->txn_begin; |
| 36 |
# Start transaction |
|
|
| 37 |
$dbh->{AutoCommit} = 0; |
| 38 |
$dbh->{RaiseError} = 1; |
| 39 |
|
| 40 |
# Pick a categorycode from the DB |
| 41 |
my @categories = C4::Category->all; |
| 42 |
my $categorycode = $categories[0]->categorycode; |
| 43 |
# Add a new branch so we control what borrowers it has |
| 44 |
my $branchcode = "UNC"; |
| 45 |
my $branch_data = { |
| 46 |
branchcode => $branchcode, |
| 47 |
branchname => 'Universidad Nacional de Cordoba', |
| 48 |
branchaddress1 => 'Haya de la Torre', |
| 49 |
branchaddress2 => 'S/N', |
| 50 |
branchzip => '5000', |
| 51 |
branchcity => 'Cordoba', |
| 52 |
branchstate => 'Cordoba', |
| 53 |
branchcountry => 'Argentina' |
| 54 |
}; |
| 55 |
Koha::Library->new( $branch_data )->store; |
| 56 |
|
| 57 |
my %john_doe = ( |
| 58 |
cardnumber => '123456', |
| 59 |
firstname => 'John', |
| 60 |
surname => 'Doe', |
| 61 |
categorycode => $categorycode, |
| 62 |
branchcode => $branchcode, |
| 63 |
dateofbirth => '1983-03-01', |
| 64 |
dateexpiry => '9999-12-31', |
| 65 |
userid => 'john.doe' |
| 66 |
); |
| 67 |
|
39 |
|
| 68 |
my %john_smith = ( |
40 |
my $builder = t::lib::TestBuilder->new; |
| 69 |
cardnumber => '234567', |
|
|
| 70 |
firstname => 'John', |
| 71 |
surname => 'Smith', |
| 72 |
categorycode => $categorycode, |
| 73 |
branchcode => $branchcode, |
| 74 |
dateofbirth => '1982-02-01', |
| 75 |
dateexpiry => '9999-12-31', |
| 76 |
userid => 'john.smith' |
| 77 |
); |
| 78 |
|
41 |
|
| 79 |
my %jane_doe = ( |
42 |
my $library = $builder->build({ |
| 80 |
cardnumber => '345678', |
43 |
source => "Branch", |
| 81 |
firstname => 'Jane', |
44 |
}); |
| 82 |
surname => 'Doe', |
|
|
| 83 |
categorycode => $categorycode, |
| 84 |
branchcode => $branchcode, |
| 85 |
dateofbirth => '1983-03-01', |
| 86 |
dateexpiry => '9999-12-31', |
| 87 |
userid => 'jane.doe' |
| 88 |
); |
| 89 |
|
45 |
|
| 90 |
my %jeanpaul_dupont = ( |
46 |
my $branchcode=$library->{branchcode}; |
| 91 |
cardnumber => '456789', |
47 |
|
| 92 |
firstname => 'Jean Paul', |
48 |
my $john_doe = $builder->build({ |
| 93 |
surname => 'Dupont', |
49 |
source => "Borrower", |
| 94 |
categorycode => $categorycode, |
50 |
value => { |
| 95 |
branchcode => $branchcode, |
51 |
cardnumber => '123456', |
| 96 |
dateofbirth => '1982-02-01', |
52 |
firstname => 'John', |
| 97 |
dateexpiry => '9999-12-31', |
53 |
surname => 'Doe', |
| 98 |
userid => 'jeanpaul.dupont' |
54 |
branchcode => $branchcode, |
| 99 |
); |
55 |
dateofbirth => '1983-03-01', |
|
|
56 |
userid => 'john.doe' |
| 57 |
}, |
| 58 |
}); |
| 100 |
|
59 |
|
| 101 |
my %dupont_brown = ( |
60 |
my $john_smith = $builder->build({ |
| 102 |
cardnumber => '567890', |
61 |
source => "Borrower", |
| 103 |
firstname => 'Dupont', |
62 |
value => { |
| 104 |
surname => 'Brown', |
63 |
cardnumber => '234567', |
| 105 |
categorycode => $categorycode, |
64 |
firstname => 'John', |
| 106 |
branchcode => $branchcode, |
65 |
surname => 'Smith', |
| 107 |
dateofbirth => '1979-01-01', |
66 |
branchcode => $branchcode, |
| 108 |
dateexpiry => '9999-12-31', |
67 |
dateofbirth => '1982-02-01', |
| 109 |
userid => 'dupont.brown' |
68 |
userid => 'john.smith' |
| 110 |
); |
69 |
}, |
|
|
70 |
}); |
| 111 |
|
71 |
|
| 112 |
$john_doe{borrowernumber} = AddMember( %john_doe ); |
72 |
my $jane_doe = $builder->build({ |
| 113 |
warn "Error adding John Doe, check your tests" unless $john_doe{borrowernumber}; |
73 |
source => "Borrower", |
| 114 |
$john_smith{borrowernumber} = AddMember( %john_smith ); |
74 |
value => { |
| 115 |
warn "Error adding John Smith, check your tests" unless $john_smith{borrowernumber}; |
75 |
cardnumber => '345678', |
| 116 |
$jane_doe{borrowernumber} = AddMember( %jane_doe ); |
76 |
firstname => 'Jane', |
| 117 |
warn "Error adding Jane Doe, check your tests" unless $jane_doe{borrowernumber}; |
77 |
surname => 'Doe', |
| 118 |
$jeanpaul_dupont{borrowernumber} = AddMember( %jeanpaul_dupont ); |
78 |
branchcode => $branchcode, |
| 119 |
warn "Error adding Jean Paul Dupont, check your tests" unless $jeanpaul_dupont{borrowernumber}; |
79 |
dateofbirth => '1983-03-01', |
| 120 |
$dupont_brown{borrowernumber} = AddMember( %dupont_brown ); |
80 |
userid => 'jane.doe' |
| 121 |
warn "Error adding Dupont Brown, check your tests" unless $dupont_brown{borrowernumber}; |
81 |
}, |
|
|
82 |
}); |
| 83 |
my $jeanpaul_dupont = $builder->build({ |
| 84 |
source => "Borrower", |
| 85 |
value => { |
| 86 |
cardnumber => '456789', |
| 87 |
firstname => 'Jean Paul', |
| 88 |
surname => 'Dupont', |
| 89 |
branchcode => $branchcode, |
| 90 |
dateofbirth => '1982-02-01', |
| 91 |
userid => 'jeanpaul.dupont' |
| 92 |
}, |
| 93 |
}); |
| 94 |
my $dupont_brown = $builder->build({ |
| 95 |
source => "Borrower", |
| 96 |
value => { |
| 97 |
cardnumber => '567890', |
| 98 |
firstname => 'Dupont', |
| 99 |
surname => 'Brown', |
| 100 |
branchcode => $branchcode, |
| 101 |
dateofbirth => '1979-01-01', |
| 102 |
userid => 'dupont.brown' |
| 103 |
}, |
| 104 |
}); |
| 122 |
|
105 |
|
| 123 |
# Set common datatables params |
106 |
# Set common datatables params |
| 124 |
my %dt_params = ( |
107 |
my %dt_params = ( |
|
Lines 138-144
my $search_results = C4::Utils::DataTables::Members::search({
Link Here
|
| 138 |
is( $search_results->{ iTotalDisplayRecords }, 1, |
121 |
is( $search_results->{ iTotalDisplayRecords }, 1, |
| 139 |
"John Doe has only one match on $branchcode (Bug 12595)"); |
122 |
"John Doe has only one match on $branchcode (Bug 12595)"); |
| 140 |
|
123 |
|
| 141 |
ok( $search_results->{ patrons }[0]->{ cardnumber } eq $john_doe{ cardnumber } |
124 |
ok( $search_results->{ patrons }[0]->{ cardnumber } eq $john_doe->{ cardnumber } |
| 142 |
&& ! $search_results->{ patrons }[1], |
125 |
&& ! $search_results->{ patrons }[1], |
| 143 |
"John Doe is the only match (Bug 12595)"); |
126 |
"John Doe is the only match (Bug 12595)"); |
| 144 |
|
127 |
|
|
Lines 155-161
is( $search_results->{ iTotalDisplayRecords }, 1,
Link Here
|
| 155 |
"Jane Doe has only one match on $branchcode (Bug 12595)"); |
138 |
"Jane Doe has only one match on $branchcode (Bug 12595)"); |
| 156 |
|
139 |
|
| 157 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
140 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
| 158 |
$jane_doe{ cardnumber }, |
141 |
$jane_doe->{ cardnumber }, |
| 159 |
"Jane Doe is the only match (Bug 12595)"); |
142 |
"Jane Doe is the only match (Bug 12595)"); |
| 160 |
|
143 |
|
| 161 |
# Search "John" |
144 |
# Search "John" |
|
Lines 171-181
is( $search_results->{ iTotalDisplayRecords }, 2,
Link Here
|
| 171 |
"There are two John at $branchcode"); |
154 |
"There are two John at $branchcode"); |
| 172 |
|
155 |
|
| 173 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
156 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
| 174 |
$john_doe{ cardnumber }, |
157 |
$john_doe->{ cardnumber }, |
| 175 |
"John Doe is the first result"); |
158 |
"John Doe is the first result"); |
| 176 |
|
159 |
|
| 177 |
is( $search_results->{ patrons }[1]->{ cardnumber }, |
160 |
is( $search_results->{ patrons }[1]->{ cardnumber }, |
| 178 |
$john_smith{ cardnumber }, |
161 |
$john_smith->{ cardnumber }, |
| 179 |
"John Smith is the second result"); |
162 |
"John Smith is the second result"); |
| 180 |
|
163 |
|
| 181 |
# Search "Doe" |
164 |
# Search "Doe" |
|
Lines 191-201
is( $search_results->{ iTotalDisplayRecords }, 2,
Link Here
|
| 191 |
"There are two Doe at $branchcode"); |
174 |
"There are two Doe at $branchcode"); |
| 192 |
|
175 |
|
| 193 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
176 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
| 194 |
$john_doe{ cardnumber }, |
177 |
$john_doe->{ cardnumber }, |
| 195 |
"John Doe is the first result"); |
178 |
"John Doe is the first result"); |
| 196 |
|
179 |
|
| 197 |
is( $search_results->{ patrons }[1]->{ cardnumber }, |
180 |
is( $search_results->{ patrons }[1]->{ cardnumber }, |
| 198 |
$jane_doe{ cardnumber }, |
181 |
$jane_doe->{ cardnumber }, |
| 199 |
"Jane Doe is the second result"); |
182 |
"Jane Doe is the second result"); |
| 200 |
|
183 |
|
| 201 |
# Search "Smith" as surname - there is only one occurrence of Smith |
184 |
# Search "Smith" as surname - there is only one occurrence of Smith |
|
Lines 211-217
is( $search_results->{ iTotalDisplayRecords }, 1,
Link Here
|
| 211 |
"There is one Smith at $branchcode when searching for surname"); |
194 |
"There is one Smith at $branchcode when searching for surname"); |
| 212 |
|
195 |
|
| 213 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
196 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
| 214 |
$john_smith{ cardnumber }, |
197 |
$john_smith->{ cardnumber }, |
| 215 |
"John Smith is the first result"); |
198 |
"John Smith is the first result"); |
| 216 |
|
199 |
|
| 217 |
# Search "Dupont" as surname - Dupont is used both as firstname and surname, we |
200 |
# Search "Dupont" as surname - Dupont is used both as firstname and surname, we |
|
Lines 228-234
is( $search_results->{ iTotalDisplayRecords }, 1,
Link Here
|
| 228 |
"There is one Dupont at $branchcode when searching for surname"); |
211 |
"There is one Dupont at $branchcode when searching for surname"); |
| 229 |
|
212 |
|
| 230 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
213 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
| 231 |
$jeanpaul_dupont{ cardnumber }, |
214 |
$jeanpaul_dupont->{ cardnumber }, |
| 232 |
"Jean Paul Dupont is the first result"); |
215 |
"Jean Paul Dupont is the first result"); |
| 233 |
|
216 |
|
| 234 |
# Search "Doe" as surname - Doe is used twice as surname |
217 |
# Search "Doe" as surname - Doe is used twice as surname |
|
Lines 244-254
is( $search_results->{ iTotalDisplayRecords }, 2,
Link Here
|
| 244 |
"There are two Doe at $branchcode when searching for surname"); |
227 |
"There are two Doe at $branchcode when searching for surname"); |
| 245 |
|
228 |
|
| 246 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
229 |
is( $search_results->{ patrons }[0]->{ cardnumber }, |
| 247 |
$john_doe{ cardnumber }, |
230 |
$john_doe->{ cardnumber }, |
| 248 |
"John Doe is the first result"); |
231 |
"John Doe is the first result"); |
| 249 |
|
232 |
|
| 250 |
is( $search_results->{ patrons }[1]->{ cardnumber }, |
233 |
is( $search_results->{ patrons }[1]->{ cardnumber }, |
| 251 |
$jane_doe{ cardnumber }, |
234 |
$jane_doe->{ cardnumber }, |
| 252 |
"Jane Doe is the second result"); |
235 |
"Jane Doe is the second result"); |
| 253 |
|
236 |
|
| 254 |
# Search by userid |
237 |
# Search by userid |
|
Lines 291-300
$attribute_type->store;
Link Here
|
| 291 |
|
274 |
|
| 292 |
|
275 |
|
| 293 |
C4::Members::Attributes::SetBorrowerAttributes( |
276 |
C4::Members::Attributes::SetBorrowerAttributes( |
| 294 |
$john_doe{borrowernumber}, [ { code => $attribute_type->{code}, value => 'the default value for a common user' } ] |
277 |
$john_doe->{borrowernumber}, [ { code => $attribute_type->{code}, value => 'the default value for a common user' } ] |
| 295 |
); |
278 |
); |
| 296 |
C4::Members::Attributes::SetBorrowerAttributes( |
279 |
C4::Members::Attributes::SetBorrowerAttributes( |
| 297 |
$jane_doe{borrowernumber}, [ { code => $attribute_type->{code}, value => 'the default value for another common user' } ] |
280 |
$jane_doe->{borrowernumber}, [ { code => $attribute_type->{code}, value => 'the default value for another common user' } ] |
| 298 |
); |
281 |
); |
| 299 |
|
282 |
|
| 300 |
t::lib::Mocks::mock_preference('ExtendedPatronAttributes', 1); |
283 |
t::lib::Mocks::mock_preference('ExtendedPatronAttributes', 1); |
|
Lines 428-433
foreach my $dateformloo (@datetimeprefs){
Link Here
|
| 428 |
} |
411 |
} |
| 429 |
|
412 |
|
| 430 |
# End |
413 |
# End |
| 431 |
$dbh->rollback; |
414 |
$schema->storage->txn_rollback; |
| 432 |
|
415 |
|
| 433 |
1; |
416 |
1; |
| 434 |
- |
|
|