08e448ee4b
To test: 1) Go to Tools -> Staged MARC Management and clean a file. If you have no files to clean, go to 'Stage MARC for import' and upload one to clean following the necessary steps. 2) Confirm that once the file has been cleaned, the Action column now shows a Delete button. Confirm this button only shows for cleaned files. 3) Click the Delete button. 4) Confirm that clicking Cancel exits the pop-up message and does not delete the file. 5) Confirm that clicking OK refreshes the list of staged records and the one you just deleted is no longer on it (has been deleted). You can confirm this by checking for the file in mysql (SELECT * FROM import_batches WHERE import_batch_id = X;) 6) Run prove -v t/db_dependent/ImportBatch.t (have written unit tests for CleanBatch and DeleteBatch) Sponsored-by: Catalyst IT Signed-off-by: Liz Rea <liz@catalyst.net.nz> Catalyst sign off, so needs another one but YAY this is great. Signed-off-by: Nick Clemens <nick@bywatersolutions.com> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
148 lines
4.9 KiB
Perl
148 lines
4.9 KiB
Perl
#!/usr/bin/perl
|
|
|
|
use Modern::Perl;
|
|
|
|
use C4::Context;
|
|
|
|
use Test::More tests => 9;
|
|
|
|
BEGIN {
|
|
use_ok('C4::ImportBatch');
|
|
}
|
|
|
|
# Start transaction
|
|
my $dbh = C4::Context->dbh;
|
|
$dbh->{AutoCommit} = 0;
|
|
$dbh->{RaiseError} = 1;
|
|
|
|
# clear
|
|
$dbh->do('DELETE FROM import_batches');
|
|
|
|
my $sample_import_batch1 = {
|
|
matcher_id => 1,
|
|
template_id => 1,
|
|
branchcode => 'QRT',
|
|
overlay_action => 'create_new',
|
|
nomatch_action => 'create_new',
|
|
item_action => 'always_add',
|
|
import_status => 'staged',
|
|
batch_type => 'z3950',
|
|
file_name => 'test.mrc',
|
|
comments => 'test',
|
|
record_type => 'auth',
|
|
};
|
|
|
|
my $sample_import_batch2 = {
|
|
matcher_id => 2,
|
|
template_id => 2,
|
|
branchcode => 'QRZ',
|
|
overlay_action => 'create_new',
|
|
nomatch_action => 'create_new',
|
|
item_action => 'always_add',
|
|
import_status => 'staged',
|
|
batch_type => 'z3950',
|
|
file_name => 'test.mrc',
|
|
comments => 'test',
|
|
record_type => 'auth',
|
|
};
|
|
|
|
my $id_import_batch1 = C4::ImportBatch::AddImportBatch($sample_import_batch1);
|
|
my $id_import_batch2 = C4::ImportBatch::AddImportBatch($sample_import_batch2);
|
|
|
|
like( $id_import_batch1, '/^\d+$/', "AddImportBatch for sample_import_batch1 return an id" );
|
|
like( $id_import_batch2, '/^\d+$/', "AddImportBatch for sample_import_batch2 return an id" );
|
|
|
|
#Test GetImportBatch
|
|
my $importbatch2 = C4::ImportBatch::GetImportBatch( $id_import_batch2 );
|
|
delete $importbatch2->{upload_timestamp};
|
|
delete $importbatch2->{import_batch_id};
|
|
delete $importbatch2->{num_records};
|
|
delete $importbatch2->{num_items};
|
|
|
|
is_deeply( $importbatch2, $sample_import_batch2,
|
|
"GetImportBatch returns the right informations about $sample_import_batch2" );
|
|
|
|
my $importbatch1 = C4::ImportBatch::GetImportBatch( $id_import_batch1 );
|
|
delete $importbatch1->{upload_timestamp};
|
|
delete $importbatch1->{import_batch_id};
|
|
delete $importbatch1->{num_records};
|
|
delete $importbatch1->{num_items};
|
|
|
|
is_deeply( $importbatch1, $sample_import_batch1,
|
|
"GetImportBatch returns the right informations about $sample_import_batch1" );
|
|
|
|
my $record = MARC::Record->new;
|
|
# FIXME Create another MARC::Record which won't be modified
|
|
# AddItemsToImportBiblio will remove the items field from the record passed in parameter.
|
|
my $original_record = MARC::Record->new;
|
|
$record->leader('03174nam a2200445 a 4500');
|
|
$original_record->leader('03174nam a2200445 a 4500');
|
|
my ($item_tag, $item_subfield) = C4::Biblio::GetMarcFromKohaField('items.itemnumber','');
|
|
my @fields = (
|
|
MARC::Field->new(
|
|
100, '1', ' ',
|
|
a => 'Knuth, Donald Ervin',
|
|
d => '1938',
|
|
),
|
|
MARC::Field->new(
|
|
245, '1', '4',
|
|
a => 'The art of computer programming',
|
|
c => 'Donald E. Knuth.',
|
|
),
|
|
MARC::Field->new(
|
|
650, ' ', '0',
|
|
a => 'Computer programming.',
|
|
9 => '462',
|
|
),
|
|
MARC::Field->new(
|
|
$item_tag, ' ', ' ',
|
|
e => 'my edition',
|
|
i => 'my item part',
|
|
),
|
|
MARC::Field->new(
|
|
$item_tag, ' ', ' ',
|
|
e => 'my edition 2',
|
|
i => 'my item part 2',
|
|
),
|
|
);
|
|
$record->append_fields(@fields);
|
|
$original_record->append_fields(@fields);
|
|
my $import_record_id = AddBiblioToBatch( $id_import_batch1, 0, $record, 'utf8', int(rand(99999)), 0 );
|
|
AddItemsToImportBiblio( $id_import_batch1, $import_record_id, $record, 0 );
|
|
|
|
my $record_from_import_biblio_with_items = C4::ImportBatch::GetRecordFromImportBiblio( $import_record_id, 'embed_items' );
|
|
$original_record->leader($record_from_import_biblio_with_items->leader());
|
|
is_deeply( $record_from_import_biblio_with_items, $original_record, 'GetRecordFromImportBiblio should return the record with items if specified' );
|
|
$original_record->delete_fields($original_record->field($item_tag)); #Remove items fields
|
|
my $record_from_import_biblio_without_items = C4::ImportBatch::GetRecordFromImportBiblio( $import_record_id );
|
|
$original_record->leader($record_from_import_biblio_without_items->leader());
|
|
is_deeply( $record_from_import_biblio_without_items, $original_record, 'GetRecordFromImportBiblio should return the record without items by default' );
|
|
|
|
# fresh data
|
|
my $sample_import_batch3 = {
|
|
matcher_id => 3,
|
|
template_id => 3,
|
|
branchcode => 'QRT',
|
|
overlay_action => 'create_new',
|
|
nomatch_action => 'create_new',
|
|
item_action => 'always_add',
|
|
import_status => 'staged',
|
|
batch_type => 'z3950',
|
|
file_name => 'test.mrc',
|
|
comments => 'test',
|
|
record_type => 'auth',
|
|
};
|
|
|
|
my $id_import_batch3 = C4::ImportBatch::AddImportBatch($sample_import_batch3);
|
|
|
|
# Test CleanBatch
|
|
C4::ImportBatch::CleanBatch( $id_import_batch3 );
|
|
my $batch3_clean = $dbh->do('SELECT * FROM import_records WHERE import_batch_id = "$id_import_batch3"');
|
|
is_deeply( $batch3_clean, "0E0",
|
|
"Batch 3 has been cleaned" );
|
|
|
|
# Test DeleteBatch
|
|
C4::ImportBatch::DeleteBatch( $id_import_batch3 );
|
|
my $batch3_results = $dbh->do('SELECT * FROM import_batches WHERE import_batch_id = "$id_import_batch3"');
|
|
is_deeply( $batch3_results, "0E0", # 0E0 == 0
|
|
"Batch 3 has been deleted");
|