From 6d10c22513b374c414d4dad99c602e8a95ffb5c2 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 --- 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 { @@ -129,5 +131,39 @@ sub run_csv_no_quoted { $nb_subfields = Koha::MarcSubfieldStructures->search({ frameworkcode => $fw_2->id })->count; is( $nb_subfields, 0, "0 subfields should have been imported" ); + $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 zcmV;FI%~yHO9KQH000O808Vp3QiW_eiY@>E04@Lk00;m80Bvb)WpsIPWnpk|Y-wX* zbZKvHFLrKZE^lFTX>%@baAj^}Z)0_BWo~pXb8vEHVPtb?Wo2|wO9KQH000O808Vp3 zQhRZx$fz3t0H_-P02lxO090soZDMX=X>4;ZbZB*LVs2q+Y%XwaXNgcwM-2)Z3IG5A z4M|8uQUCw|y#N3J{|EyB005JjCuINt0A^53R7C&)01XWd6%`d385trXA}uW~Gcz+f zIyyr`LrY6bR8&-3TU%peV{2<`b8~ZhdwYX}gNuuclarI1o13GfqpPc{v$M0iySu}~ z!^_Ld)6>)2+uP&g}0RR90;Hz{7000{ONklSsdp~3B1@-O>;b$35PDTmODufJ*U_+L@*i~QpJuHN@>z^zip&%Iyua;1$8 zZ^tWmKHiN!a3Mj3l*8lK? zN$1{8x{c1DBe1BiiO>3b^sHt;ZxOv0DdpdzZ}8?35asTK_k*x@M^94f1U}B~z3t)L za7Q0#;geL@bm$cN$WPEaI|&($)7}WY6QD1@LobaH8lFG(e2B)C%qmeuf7S1|OcZle zZH5b1i6%kiKjRdEOMynvJWXoprd_@<{{JM8!#e=sChOse<4Dfd#6# z6+-;qHpe!Z4-6O6X#e{fLpBar%xdD1duNmX&ZaybwfFzpY_<3^j`W!^$IGiZemLRf z)!W(cr;m5^k&6!7(84U?(ZR?aa*>tzZNVtw-0oT&!<)x&eo$)dbPQ zq2`<#Nx5(d#A&4EMfjgAWjfB-Pn@o{GiAh^DWFUG1e8IKqVDih2 zcVjx3O_@^^xfKRB+rX!Q3!sIraJ`nPv8_5s29V*rH4P7oHJ9m>_qMNs&T=zTFJNkh zĨ*U!4D`7O??ly*sVZ!%O$@D~Df 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 z2nYa9b3sx700000000000000L0000@MN~m8Nlr#DZDDR{W@U49E_iKht&>4+!yphv z_c?{dwlcI?RVYptk$Qsk0MrZ)5*`o?QF8lYD^6Thkzy%3V21zSe8gsV?p<|)n5@T! zeeicy0k&RS>>Boc_^LnIZoAs_3ax=ea#~d79;Vy2VL77oD%m7a^^hdB(g#58+uQ?^ z{M#=_r`v7@ux3|j=ixl*#!gN`#%I)uO83A6h^1*s=AM0tb@9= z$IBhSWasLj=-4pvkn0`-Xsc?v1ZbEF!P#~M5+~Gr%z)2F=P5)`IvoLsi6tn9WA1-Y zS(gM&OCGR$fMR>qff(wGT=pJ~?Q$GvNNe%rpeZ9SIrD6JJ6Bj{Uar!RQBiu}OXU&8 zP+p|l1F4sbCb~FCuV=lU@u)|E{`9l(8}aYQZ+`($O9u!QIRULR0RR9j z1ONa~O928D02BZK2mk<1b3sytY&nW90000k00008000000000000000000000Bvb) zWpsIPWl&220u%rg000O808Vp3QhRZx$fz3t0H_-P02lxO00000000000000~0000~ zXmxF3ZeeL`b1!sgb!}p9VQFkGaBgQ%O928D02BZK2mk<1b3sx700000000000000Q z00000000000000005Ti^07GwXW@%@2a$$67Z*FrkFLQKZbaiuLVRA1}O928D02BZK z2mk<1b3sx700000000000000R0000000000000000BRfn07GwXW@%@2a$$67Z*Frk zFJWV2Wo%_(bZ>GmP)h*<6aW+e00;m8PIEz00000000000000008UO$Q0000000000 z005&L002X8Zf0p`b#h^JX>V?GGB0p%aCLBPWo~sZP)h*<6aW+e00;m8PIEz000000 z00000000008~^|S0000000000007$@002X8Zf0p`b#h^JX>V?GGB06cV`Xe*a$$6D zaxYLz0Rj{N6aWAS002&NK~ew!0000000000000~S0000000000000006&(NoLvLFa%FRKVqtPGP)h*<6aW+e00;m8PIEz0000000000000000 z7ytkO0000000000002)N002X8Zf0p`b#h^JX>V?GGB0#*Z){>=axYLz0Rj{N6aWAS z002&NK~ew!0000000000000;O000000000000000g&hC@LvLOV0000000000006rk z002X8Zf0p`b#h^JX>V?GGB0UuVP|D?FG6W_ZDDY8FHlPX0u%rg000O808Vp3QUCw| z000000000002lxO00000000000002^9RL7BZ*FF3XLWL6bZKvHb22Y&Wo~t1VRA1} zO928D02BZK2mk<1b3sx700000000000000Q00000000000000004^Q?07GwXW@%@2 za$$67Z*FrkFLZBjY;a+2Wo$1{O928D02BZS2nYa9b3szj;u`MD2LJ#ykpKV-00000 z00000000000A?Nl0Ap`%bY*UIE_iKhP)h*<6aW+e2nYxOPIEz0bXI0047kbaZKMXLBxiZER3W0Rj{N6aWYa z2mnrVK~fbt0j)Cu001lm000#L000000000000000S~LIvO+{2eElEyBFKuCNX=Y_} ebS`*pY*0%D1^@s601^Na0Imc80MIo600010_vbAD literal 0 KcmV+b0RR6000031 -- 2.20.1