From 23f2539218285308ba77d3d8fe8ca174863e4b1c Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 1 Feb 2021 15:27:53 +0100 Subject: [PATCH] Bug 27569: Add tests for ODS export Looks ok so far Signed-off-by: Ron Houk Signed-off-by: Katrin Fischer --- t/db_dependent/ImportExportFramework.t | 38 ++++++++++++++++++++- .../data/frameworks/biblio_framework_new.ods | Bin 0 -> 14996 bytes 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 t/db_dependent/data/frameworks/biblio_framework_new.ods diff --git a/t/db_dependent/ImportExportFramework.t b/t/db_dependent/ImportExportFramework.t index 772fb23886..bd3a6d1580 100755 --- a/t/db_dependent/ImportExportFramework.t +++ b/t/db_dependent/ImportExportFramework.t @@ -44,9 +44,11 @@ subtest 'ImportFramework() tests' => sub { }; subtest 'ODS tests' => sub { - plan tests => 9; + plan tests => 15; run_tests('ods'); + + run_ods_new(); }; subtest 'XML tests' => sub { @@ -131,3 +133,37 @@ sub run_csv_no_quoted { $schema->storage->txn_rollback; }; + +sub run_ods_new { + + my ($format) = @_; + + $schema->storage->txn_begin; + + my $data_filepath = dirname(__FILE__) . "/data/frameworks/biblio_framework_new.ods"; + my $fw_1 = $builder->build_object({ class => 'Koha::BiblioFrameworks' }); + + my $result = C4::ImportExportFramework::ImportFramework( $data_filepath, $fw_1->id ); + is( $result, 0, 'Import successful, no tags removed' ); + + my $nb_tags = $schema->resultset('MarcTagStructure')->search({ frameworkcode => $fw_1->id })->count; + is( $nb_tags, 5, "5 tags should have been imported" ); + + my $nb_subfields = Koha::MarcSubfieldStructures->search({ frameworkcode => $fw_1->id })->count; + is( $nb_subfields, 16, "16 subfields should have been imported" ); + + # bad file tests + my $fw_2 = $builder->build_object({ class => 'Koha::BiblioFrameworks' }); + $result = C4::ImportExportFramework::ImportFramework( '', $fw_2->id ); + + is( $result, -1, 'Bad file makes it return -1' ); + + $nb_tags = $schema->resultset('MarcTagStructure')->search({ frameworkcode => $fw_2->id })->count; + is( $nb_tags, 0, "0 tags should have been imported" ); + + $nb_subfields = Koha::MarcSubfieldStructures->search({ frameworkcode => $fw_2->id })->count; + is( $nb_subfields, 0, "0 subfields should have been imported" ); + + + $schema->storage->txn_rollback; +}; diff --git a/t/db_dependent/data/frameworks/biblio_framework_new.ods b/t/db_dependent/data/frameworks/biblio_framework_new.ods new file mode 100644 index 0000000000000000000000000000000000000000..11282676b2fa7e1234eb4d98507ed49369056afa GIT binary patch literal 14996 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 literal 0 HcmV?d00001 -- 2.11.0