Bugzilla – Attachment 189622 Details for
Bug 41249
ILL batches should be compatible with AutoILLBackendPriority
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 41249: Add cypress tests
Bug-41249-Add-cypress-tests.patch (text/plain), 37.17 KB, created by
Pedro Amorim
on 2025-11-14 16:33:08 UTC
(
hide
)
Description:
Bug 41249: Add cypress tests
Filename:
MIME Type:
Creator:
Pedro Amorim
Created:
2025-11-14 16:33:08 UTC
Size:
37.17 KB
patch
obsolete
>From 143498f422f700178da7ea3d806677b2444c980b Mon Sep 17 00:00:00 2001 >From: Pedro Amorim <pedro.amorim@openfifth.co.uk> >Date: Fri, 14 Nov 2025 15:23:03 -0100 >Subject: [PATCH] Bug 41249: Add cypress tests > >cypress run --spec t/cypress/integration/ILL/Batches_spec.ts > >Test plan: >1) Enable ILLModule >2) Install a backend compatible with ILL batches + AutoILLBackendPriority sys pref: >https://github.com/openfifth/koha-ill-backend-plugin/releases/tag/v2.0.8 >3) Install a metadata enrichment plugin (required for ILL batches): >https://github.com/openfifth/koha-plugin-api-pubmed/releases/tag/1.1.1 >4) Enable AutoILLBackendPriority sys pref by checking 'PluginBackend' >5) Visit the ILL module: ><staff_url>/cgi-bin/koha/ill/ill-requests.pl >6) Notice the 'New ILL requests batch' shows. Click that. >7) Enter any name, '42' for cardnumber and any library. Click 'Continue'. >8) On t'he textarea that shows enter the following pubmed IDs (separated by new line) > 123 > 321 > 456 >9) Notice that PluginBackend will sometimes be red, sometimes be yellow and sometimes be green. This is a test backend and that will happen randomly. Repeat step 8) for more test result samples. >10) Notice that, when green, PluginBackend will be pre-selected. When yellow, it'll allow you to select it but not pre-select it and when red doesnt allow it to be selected at all. >11) Play around with the selection of backends and click 'Add items to batch' and verify that each request was created in the respective selected backend. >--- > .../fixtures/koha-plugin-ill-backend.kpz | Bin 0 -> 21264 bytes > t/cypress/integration/ILL/Batches_spec.ts | 334 ++++++++++++++++-- > 2 files changed, 308 insertions(+), 26 deletions(-) > create mode 100644 t/cypress/fixtures/koha-plugin-ill-backend.kpz > >diff --git a/t/cypress/fixtures/koha-plugin-ill-backend.kpz b/t/cypress/fixtures/koha-plugin-ill-backend.kpz >new file mode 100644 >index 0000000000000000000000000000000000000000..622360659e03bce7c3835a39ae53f2fef1eab226 >GIT binary patch >literal 21264 >zcmb@tbChM@k}jIIZB^RNth8<0wry3q(zdNi+qN@z+O~Or=XAf@<J^9IyU#msj}dF{ >ze^x}Sh&^L{5#O8&(x6~4K!5uvy8O`k`;ULWfCJ$HN!wc(GN`IR1A#_>dYJ27qg%Rq >zzybk-oqz%X{r#fwU)~P)|J<%%<7#ec_a9p5fieH*T9Ez^EyDJ;|3giAuK)Nrxc@Jj >z6ja2NMO~fj9ZdgC={vZG`G4Ua+FwzD0$Q}T)85}7>X^m@0t)p90;2i9EB&`e7cw-q >zHnlUMcd-3?B$0SAE&nF}M<g$Kt)2JT6Sf~|kj&YWDi2m<%m|;>P)7<)y0~jsbJnCT >zZR;tKQ(A@N@%S!of4*I>Y<eWl4j7w0H@M1J(FVpqw9i?%aNsB)$MB1xPJd;{7Y+=# >zTe3(t3=I77fzYq<YsF(X)pK~<^9DN7^jSP-LpQIzPfG>*h)pf0#Sy*v{pizv2?(zo >z7`O&DdJhj6%1l+9+Fp^=B4&&_ziFQ|H&jiPWH$t$Tq8=3i*C|pI0C09J!q0}zdzmF >z@Kl~r%6d{o+3l<87bv1*DDtYh`te{AemT89!4n^@VTHqdYaU`pwY^ro2?iiYsU3ra >zv{whHKd<feR+^}YnfB9U(p?v{PqI*+9m<a7_+aVj<Ol;sY|c-wzOD#c7Nf9h3pp!( >zcsOql@F{{WJNxv5m_Gyo_le5#PEBCoMZd&iIYEP$c~S~^(&pz}@%uJA*Y(`nY(rSV >ze4w&`KKLB(7##0tL$gXZm@H5B<LaqFJ46KJTod43TwM=*!>rK0Z9rHzr0GYsR4kq~ >z8pT||)DD{}Ey6%)w`Gu{(}aV=@rhz{`#-{nB)8`4-OS8YNqEj?f|~y><%!H??qi3b >z%{g);i^{E!-hT4J{7_CLlAr#bNV!3UhVR`kxq7TH3%PN!F>|k)$%$SltAMzWRFR`@ >zh6jDtg|gjyukA7O-v>gpIL{JwoOFnOM3VO$(@a(-o?`7E92QVyC2)R8TMYT7aGkXQ >zSz*Qa%dD{qj}D~YK18{9L42W!U-%x>4R)%Z)c7&!50C^b>CgpE(b#2rg#@SqyC!%x >z<Stk{3SJ&%=v)q|F;;w9OsUTYa!F@Juqjz>CW;mDvV{(Z!mi}dg7uK}TLE{wv(xL> >z=FQ#>64w&NUbE>oG=c^0@tP~M;Cxlvrh08YTUrPQkBHs_C^4pzl#n9Zs#(uRf6%*U >zFPhz)c;J2+$BGaMH7nWm;}%AOR!>>o0nTs?8Koaf&Qfv>t|6~>0;`gEPTgrUClx{r >z1vIk+Gf_ZopUzX~m=an#AMj-snj-epn;`n81Cg_KbKcD&UOVJHfGG2ZOQqP?ZKg(W >zbIxTUd!zb1U@Bgjo%|N3)XZDQq{m_q&1{L`6M`@TgrX<Pa3^S!+LrXujvvmS)1M7) >zz!u)zRc>!Qv)$s%L2G8ddlOM{Yg<kAD7qBgeeIz`5#}y|Tor!tG2MXNZO5SZU{Gm$ >za5bvd7DKksikgjz(G3Ir<~k8c@VzQ%3^RE;jTbs!*?;>R(q)X=%o)?tFp0dQ#Z#7H >z0`C!Wl3%0fyaBuLKovy^xF76z&O-{F&k2q9rNyYHBNab~TPYY(!Y$W#h#yp#`bmW4 >zn4r=<-x3K1OZN6ngGneE@8|4&&g&w<Kt)(hq$ga}{gjDGiAizO(Q_^upk@%mAZ#(A >zI`2|&|Mxi`z;Yao(Z!4Kf_R5=?1`^mWE&M;-8=8iE$RUry7yKXuG&5%3GbW=ebpDV >zdszvCZU_}!QX{DDZhW4H5vi#Q21nPKsk76l^m;nI!niS}uTg0eD@Nyr3CG^dZANT` >zcvN-+F`ygH;fka*`0__-ESiiqgS8I6D(s;+U8JLzx+v>WCXv>UKPTi?cuuD78=)k5 >zvBU);ScSf1hbSKcpsYhh(R)i3I`>p!)q6OjzGGsw8^Nth`8H(aw%9A&6z(iok@yO? >z9kc=8Zlb3yYLCGK0#e^W2<Fn331X=0YICwlMRSyriElN=d}|ECT2BL{9n;>t4<HHO >zyY*O{({h<ykTy>Abuccnig(tHy8>}yRKH`;!-hx7((BA;{CmEuS#rLXeRL?APItLk >z^$yA)Vhw|WeJ(cfF8ZQFfUz!-LBa2J$AGV{$SiTFoAw_Dkkc{8zqk-|rg1MVyc~?$ >zjWM`w@Aj=j;Ty?QCfFRe2uMu7yrKcKXDy~DQr5+ag{<uh5b#7iJR$;mOBA$Ig{zD1 >z7Y4YG?ZSD>FN{+ZsCx7LL_2v3$#YT*bZ(_1z816spq1lVlq!z6p;#SlN)DBi0t&ut >z-zfBFk5Wc;RRYwW;b6y%*;2nOsMEE%T8D{x>%qW*sMEALrI2jupj+KoZ?QY*n`ai8 >zjVgvWfuu`}z(L7>ngrTHN4CI4pU^ui7{)JYV4Ln!)sW)|#hdAALhN%=?^mVAc&r6- >z)E>zpo|QOxwV5s`sH!1q+k0v@^IZGh-*N3);uXxT?4fi8+|`XsJ2djLiM#+?ji!n8 >z=%QDv7bAqIR4TfTHG=n1tJM&#HncM$>78=g&!>q}d6fRRxzSh(mk=j}3T?t%dd2$e >z|IjKZ^H2$*gN~h{I{{O)Oae8w^Q2<5zt#fbqqaA^W6yg$VTo)l;qQ!?4>3Z55!`m! >zzB=>C1JkW`G@7<PxOhps<aR5cB4Roi&8j9XWOohL7T>}FTD<wm!ZL$MeuRS>p6CV4 >zoPZO=#Rw#IP02aIVYwg{3lUdxu2g5Z9PkH33B-*K0XI!;jIH$`lJTa?8jIDb&zZTZ >zLU)0?S}rfS4N2X~k&0v47~)3gF<)yM39F&$#qixq43m?DBlUCpr{hF&@?{kmj7d#I >zN`Wteaavwjie7SjV{OsP=Uo(v$X5h7=aHbd#g?H7WGTEA2o?~dgPBo@I%ob3P4{mr >znD5>POX~Uz9bHWg#>l%=X@=*<Wh78@xTlny+xxAhpQAyhT*qZ(F5e>g%7!&cRURTX >z$z-B^)`F{Ll5twJ`~%=X!Nd^o8Umf25X#o>ZCKDxd@3ZEqwzR<h)Vn6hJy5%v)CV1 >z59@3{;015Im@}Bvsc9_6K=%F;RruOIpT?yO%|VcdqHLVZM50<WUcCeY8ri5DO89C5 >z1(H7@{W$qME6aQBQe7GCkkYs$F}48!qh^7{DjfXufe{Ax7p&|rRcioHTjJ0+10EtK >zLRa)RB=oO?2&Tv+;Z@AL`pt-r&!aGD#RqLd#w{GEQ!_S8+ZTGBT%-@ac@wn4qLh?B >za_fnGoVimeN(r|!k2(z;vi2x`9U+wkrq@AjK^t;uD2wB1rN5n`$si_}N)lZ0_iNX@ >z*Bj8nejV8>NN&qvd9M#9n~mcY+Pt*)xVpU^T^PMAEH}e-uKD#G92%c2P{IW^Sm?s2 >z;z>5e*p=a!aFaYlJ8r~RzD`Ewc)eMRDzl~bOJbudcO=5ByzSqhv?6SYXB@Q@xUu)K >zNjl-JLr|cAwMqQ+V-i+<Ei{#W^5s&5*r)?Z*{KmB(hXI^E91Q~De0?&ov{76x&~Oe >zo>bfY@q-DfE(O!DGO?^?V%&1Z1??n7ABh^<kkaS4XiTh?!J^W`dmmCTA8~sVc5zb| >zZ_^$amhh|tq!HN?UXx_eT$|Seasfx-k(N-yCj~;|=2Xl+s5kUP%%L6Wl2bKLg#V;* >zIZ_Rpdpne*gj2z3R;TXQ$geCd8e@@3o7idYxsc-6NVPJvFs=rR$Sx4e>p?4tIPrM( >zdGj<%m*hzU{BZ$!8wQ}%j8^o6@T=J{y4N%cjxt@6xsi4ZZAcaj(DOdbp<*D~%>>y( >z+~jDYy693x_TBm?HS^g_W?<fkdEVZtXh4cS_n6_%1ZBF6H7uf)`w~hsPo8`@*m_l7 >zD$j!LSa14H(mCQVo{b+6lOb0HYGm7TP9l@|(kbK<{qAPW8sv<ikJ_}bkJ^mrUm_0N >zbd{AvSIfk3tLbdFcW-*XQ2rYCGxB$#B%LN;bJI5!6aLUP%R8wHoNE`G0r@H-1jd-L >zA+gbkLMaRO#}0dWDPu%XYdU(X!-Pw=P!k5aX!<|`@(#NNiZeIqkb#nkst6SX=x`x* >z;44H8`6%xcRa#DKCI#F!FzS7-?~l;cIm%lLDV~yxo<BU5eQBFN1C=-)^Ks-~;aCn_ >zh7Cg`rSc?R=q%v8tSeEeSAUlCn;T|zlv7yjxKKc*F&c#t(@<^(CPkaEB8x;PZd@7& >zDCHejFE8GoV%pzM>{jkB#eF*5KC#`?9bMS_6X?NJs~e&a_MGIsnGz{q=*UtBt3Me- >z-oafS8=R$@^wc{lr|?t~ig3loMf13H%F25;GYJ{w!TY;2sATe&im;K8*PCiaywSmz >z5!CNA33SE1_}s%wd$I>=&einGIY{?u&uy!&ZC;B(PnH{Nxn?V3yWIUG`vH+K2+V#$ >z0h4=JP?7^qQkrwmkvb4X^WyxtOyea@^Nb&XNBP^FXhlg9j6CK*)2n5QFRR;&zf&jn >zZYUuA`}1OWWR&aHop=M}%N5+<DihhhS3q*Gsy8N)DV$cAABl3{BM}$|^MqSDX={$$ >zZ<4-%Bw|Qvrw{kI6Qu@)`B<(j!~Yu25HaJ2Qvt5Q3t0b6@x7I1Q>~0PZ03+nYRvSc >zDEy~c>5-V(L5~a9TTh#|f;maB&`|l8aHqT>Q}q+CsmyHX0B4@GDUq;f4>reAr1_8n >zjeLXNH6B`Z?|22(A!Ptzc&)$+%nx={Vr<~xVHmHtQI?xw5~WRELFUfL#0rT*?z=T+ >z*099&Sf4R9-#~^YfpeWNw}K}lSP4OiVM1;yz1Scz$}=EAPZi|u#vhU(IFAi633+8I >ztZR`}zUtD<lAuycJAww@Csu~}UfMR+dG%%W1OBQXX?d472ej1uVO$`q=UrjfjGW_` >zzo}_>R#X4LW(Bp>Zrfh3gC6W@CT&XcszE2CouLQvpdL37u{J-gk!@@`P`mtjE6Q;| >z4^cv>{#nZ^RH{)1OzTz-i<eXc+L@>?`*9WRPBLiXATbR%;$h}*#meda_*wUp?jmss >z*?_D$YQF$Sgsp6YliO-*6V!E?DRHr)E-fG3S6$QZ?eVTIF=lu$)9(?PyoS%u;8xM9 >zv%2Rv+f#fb`(yvh?4>1-rDuI4`>Pg#$L*_y=_0cFdpusAoUAyz8-tM6Hq*p)+9?}b >zOlWuPDH)5M21c4g91Msd4YoHb26kcPA}H7th#ZWJf6FN?J;4A*zmGaks6UM_{s?uv >zcs6@BuhGE3y~!Zv0a<%)HhpzrkkdhreCIJL7#_`lMoNa|Ps)8tbY^vhnp9y3%#@lH >zvGT%u8X$rW0@SVc7oMo7Z%&KNDb1PYr1XupAW8$?=oC3)-0To5wsB5(sikJ2{PK6R >zEtm_%+4((T2db)@E+F(w=W@UFe&u3D5u<b?s{`*ioy$XNAAWL}h+m7Opr7VvFG-;o >z96ivA=U04SALo_I>!WH|nr~10aGi=6$9~ZYt{Hlc8fi17UB6A+u1&&<ORPL8&Y@DT >zAf=ZFz4&3io1B0f?kyEoZSp2>Rl)py^+lwf{971u_$}5^#%D!#ko}Uk1iPQ0ct;aN >z0!3HTm8B)We8O3?dM@3%;-91F;L=*JdB3@A0`lC+ZT>`s>r5@_6o8`2@6tRi+1`O* >zy)10x0Ouzow$c2S#J5MxGn9<cO4Tu=<Ub<E9&a>mcd?pC$*#<Do_R|PWNJmwg|<u_ >zt@|YiuSNo9)mSd;&1yfRjn&$l+_0QMZQ%!Z)koeFdzV=+AHl}Fv<fo`>Lr~(^;*}} >zPNwCqQ^L)2GPcSgAUtH+4la3;2|elLnN2)X^4#(YyA8n7bK)1e!qn~aqZ_#YSRP!u >zcq5t;S>vMqXdg5Dte)T=1U^&AL5{@L3QjhdwPasYDpMA26sbu@+S};`Z9fxW>ULok >z70Cz(<ly?dAsZI4;|mX|O-s-iiclElt{6?A2wzwc(SE)6@0|5E06B99lP94@2Vv9{ >z+q!3_di)H8!j7@k#0$@aeK1_GJNdF+U;VwlFcNsWz~lp_fkJBT^4_bi#G3tfi4;qL >zVlO)15tnVyF1RhL7!p{t2;A_eoP`17`BkBt>#kr97oj^&&7HB1sXfprOcR}JAxOxV >zoe_cTangHm!%|~X8oTZM9mLgc<~YZWtjXWp>~*Wun{$gF6|M9Wz}^UMxBWTqhxa_x >zym#3a>-cp=o<ejLZPL*wzh)EwJ<06Zno1tRgMk+z4Jw9bp2HdQej)FFV?TfLCm=2H >z#KznXz7sv9m&q`My8A`YHAE{g5~~<f&DJt*cQf$D#>cg5cwj)en2xG2Pu_TM_=~ka >z=iPFvN%Yan4c%9SrIGSgHh}~EK~Z28JC6BUi0i0ZRH5sk${QnNS%^X%@kTq5sg37s >z$P#bDMbqV~SB1y_6zkgRy5XF})7ds#Mw=r_8vNL=p}$6rVz&6{)rjk`$!ai$)1@cu >zyli%C%W3&My8(dGsq&yY(b*?$p_8L1MqTj<p_@eDvB4opYq6Rj(VVnWd^~zmBQ657 >zQk{rTbIv=cAII9H+;7U@+g3q`2wZ6$voe;bTVL2T&+?e<eTim0<8rI1=Or0?nzF*Q >zR6e0M^038~2@Bgv<W;k&BF&B$wmO{`8HV-zxH|?YslmQu-y&nTpdcrYX1%RqUXr2P >zMEMiLve6+)j!kVIQTv<NG~EP02yF?Qq0*oiM5X4;9*bg$Gp09@3Vg<gVNjF(TnSOf >zSJ?I|%tJd)wdkt4HG8jG&^J+&);WY`u_*WaicO>y=7h)S!|b6_L!N>xb>;9z9>uR_ >z%#NWT9ObavbuaLv$M_dSqjZQY47mnN7!@4LZ>jZTMjPocdIQGKWRy~YB@}~+lD2{g >zn5xFKUrv&<$XY4NohUyro8y`NF9Rei8@!!=8UA`;7Ivk>6AO|PP4A?hhJm8m;VM@~ >zS61p(F&j`*<s0TSjb;xISu(8)Sgp(9K9vK+{4P}lPU%@#U{PGYEC+LAlrq4DNn)lY >zUrVExM-FUa(G`0JXwEw3tp1RjW!TQqMoM#DFEN%d#X!=MmE7c1U&_v8#%;h!r@2Nu >zIDEFpiyH@ZS_7%)xB`btSz~0&g~re*YFot2tFFYzaMw8MC)F&XQf6$J1g5QuR|yEU >zCj~D{;KXgDb1WMbqQ6RGi8GygT2)9|@13Gdb`%R<PHG~)<)a?U!!Xg7f@=*2it@&~ >zMU`1LvV@g#a)H$_`{l%BP39i@rj(?q5T*)oRxw0vs|sLr4~2Ic_!GP8)60xYE}yAM >zGjRZ#tSR8m(@+uu^oBhS(j)=+HE`f35|qladrn~%6%-4IB15+!hHa34!;mE`CoHbF >zwDUtL|HhzpybaWt-OlPJKyWa&*5|xe-26jiX+6+h{ClM1YK~<Aar=#4DDraR^+Iao >zN-+}AV;Z*lT{B6MU25c)%CEi~a+XOcHSo{t{>vZigsZCu^f{W+heug8mGtK*hkR%W >zr7g;G02k&fQeJQxEK5~Mx7Qk|G-ygL%Y6BtC#YCr@Zy@Q%zdtq16R@)rj>~<3q=nt >zp9GcQGTk&dj%Qkmo%+;*sl2IM=Y$A;_T>1*h@s5jqir*%hFwW^B8NRVQX+}0LS2^i >zP~Z?vrqW9lR!RN#F*sYG#pfs-qZYIz(NA;qC9S{CH`}mD1hrL2@z<DY!N&9e01QuC >z;-ABEsli=aztK*Y%ndoKwvso*Nfc3d3ChrFwXYJT0hD(V8Od;@h^ubTu~p6->&Gyo >z{`t;N482P{g8&J*pI5|^QM-5WGCsb?QrQd}GA(no4Le~BGquyTVYOqpPBuz##3AvW >z3-M^z+m_r%gmyBdj(2#Wb0m(<iQt>uVacAs;wd*frQHh4)k~!LH-$om1`}G+=T-iB >zke{I#@!uMYe#|MDNc!U3;nPB<ZSez9Q7xF(j?VC6BsEJqNq$8R?dlEo{^+$&>J8!G >zwek#KI0dY52cAoTycY%<I@#Txub(q7ibYa=kQ?#8`2E2>5mu$>uf5x(N0;|%j&e?A >zIusE{OwCsgJ-D03XKn-T@)psa*mjXM2+tUj)wBpc_F#e=$hi+KCKNldzFe3-0&@Ml >z_<i`n{B7W`lr~j6yF%DZqdC^bAFY~1Ca9yRJ<<TOE*iahbH_{bkvbTuFE49wlYlt6 >zJVTA40S<#*Nl)#muA$!Zk|=NN=lvUa2&1KFj)KC+K`$G+`4X6Qp6v5?(FizmN9#*C >zPB##}@Pn#T4Fk2?Ysyt6P3zV!LMR4J{h(DrVpERt;3p_Z2;$En6KecDrvmor$lscH >z-PPtDwNVD0?tN!3TLD*=^mrUbw{t#<r5!_STq(a5nIo3aEfeVrA!U@d)*65kYrP#s >z_DUe;Qv~&b@=rCgO?rb8pSw{tHwUD>p84=DfIo7iX1Q-K9P;SSb^(;XuXhm5!Wx4s >z*MYU;BZ4VYinhz1tD{g=m13xxuM<9XKv_KSng^P<0vBaHDyB5e8M;9Ke9^%<r;;Z7 >z6m&yk1;H@Bl4BjdjsQ(=xaq;T;n|yAFe+0jcgC%@8>6-yq1nBMiIG|zgW1zB19-ob >zC);IdfX8vplgs6Ew7=92c&RKsL>dyMSd_{{0wI5ovz-x8X{6aT;w&cGka5qC)!n5K >zYT>W6sWjVR8;?@J4yCx|GD9zkj4TN)!K57PXUtQ^4s<5<&>BU!Zd06BE`)2GpTwh5 >z%pXS%axV&NHx{=oc_*%X#NFxKF28@Q_b$vt40?31n|j#vz0+-w(|TxHOUw}m^ci$@ >zz;JGAdab?SjES_K7|J~{ozv*K*k6p4q&X8Y_p8K^)KW5XnSY0}EOg?x*&j=@SV;60 >zU#<Ok-t+T-4?Xkpf3em>mt`XZfq*)+Ap2SL9b@0rlm}@O$W7ayi!UAHPf#jrlUv2@ >zAe*WtfyO~Flw?IlUNi?~;kxscuwUI$ZqW`No4V0F`__Ada;y39GpU>l=;`6r8B-)C >ztj`1mla`z9jf1gw4OD9i$Q;)aHJbB=xqq$d4e>}kB`V~=3z_Vkxhns1ioTLy0J=Uq >z_|-8SNA~mamG~)0jrrj9i`pr-9q6vAXu%}7c_by5?&WM{7sl|3@lZP4=jgn1BY(~0 >zcnAU!wRz#J4~=&f$ankg1T`}=lT@C{InYy=8rlm~gzp)-{HdfTT1?*FQQ8hP`*T3b >zEXO#!#lkkl%RGHmZ|gu{{)ly}_)(szpmI&fcNIwg>*PlrwMo$8Fw{q&3UxksqB8Xq >zB(jX}TNBg~F2#%LgM`;>*vV(2d&<$6Sh?@(lMkEd?1_}u*TZ}AQNT(<h$r`cy#&$L >zMwN|NE!C%a%qb;6Uvj6<3Zx4H@o>c^fm3E$)4UqX6c?#KxD*y+P<Fwk4MTQG%;FA* >z$!A{#ex)$dK9aWfQpgZO2PxC5GrFA(N;s}1Ty7QSx^`MCZy0de4ms?vam1BJa(l*$ >z{JxHdpGq?HqAwpVBks)uUdq=q6rOs+!9&zTVw)85NS4&L`Ggfa!FAbicx-nlu0%E; >zL@0}{_F_~~)1FKyn4F2a@ETaC$6&?x=bRjufsd%#zyDZIbbfnmo3eiIhJ>?c;s#4O >ztY;{wWkwzJ-kJQ)J&QC;#3g^;@agbV*Tx%Y8{y$M%VDd3d_-+B9E!35%UEQI-Em(8 >zequ$3Yuv3iyeQ;B6=4AL5<gq#UrqKj1Ss3^(G`TK>669eQAlro|NLD`9vG+IEvUXM >z%xA02$(cUTi%Uo8&yW>}g<DL<;c_63uBQ#wX9`$9)5rv1@O6mV;Ifi2S6i*W=$eKJ >zkNWbK(D%Z|bn}~4Oh)8gzHufj8#de4BNhEg<a#Pfb__OG$gAn3Rg45z$6uOimmk!L >z;2xx;ml@NClLC~9B!^Ob)hTS^>+`!CLp?9Ya7==XbwokawXFNMYm$0fP4s)uU(xx` >zrCrr_&30EsdIWfnUzq<jFHH4MP^SMu^<tv_C&Kh^CjO0;{Tp-LMr0mW4F&|Xg9rq~ >z_Rp9wwzo60G<S6}rFU`p-%NK{_kUu#tJQ7o0qjU$Ir@&usb&Lam6pl|&L+UxdsRaX >z>;hUB!irdpF7@FOMN&#~F{a<X;`0e)Yjzv-Uk2JdTh1fLdLC~MP_^4xy50P_y^7R{ >zf?>4yqbNghQ3p^6`~)IlnRxsBro&<m$?DGZJCBECAJYliXs1xqMXkH{QcMHI;X*y1 >zMDu2r{(*e*Ql;$oI17VRGJh~{exm~9`_L}2`tHpSkCj{AuKVmZr3|Gx4%;W!oWTC* >zkhhc~8Y8s4IS(+&YuAxUE7Kq85ys-i@v-t~*J_WpB_tmnLX$L;DixPOL>70>7ZT`9 >zH(_)3ixCy|GB7D5JA?H3w(b{H$;jiw4&Rq2HWIgDZQL%J{P1|KLQKqtV<Ts8SI#6T >z^Lz3;wNi6n$yObfsNbFG9d!buz}>j#@sGQu=jJ`rb2G8+XON@!YkP5Jks7I{WV3^^ >zRXLPvI(?IwkB@97EW!w_O!}&;HcQa4(!rFqz$}L`W7c(J;|ZObZl*L$0v}aLVA~6( >zJcQjj<xHbel2K8ebU_k_V-DrmCz3hxVcaL_EPjKdYA!HwE&@Z`Q*Y>{G-2XV&G4-_ >zpt_j7gDyDV78Hv_=u_{w3VIn*eXLFO)(z;4)t*L`We8eTCRE%7G~vq<ul6jNF!=aK >z*cDN`87cjN$`eSGTxS$V9h7bTp$}=MxyL!`kx>98P#2VwkY$PA8+3@ytC%!R@88i~ >z5(l=c_qJt#yHh*Xp>99(4z&i&sl1=3ZOry=3vx0@LAR8#q31taRs|~<17K)fe#MuW >zHcJClY=s?jk0SEx@gfjJ<0>YIqcCm}r^#Ap2+gIgVXRIq|3#5DmW9BNK;EAh^r*=* >z1i_z~vD0KDThD(~htbDtQZh<+$g4i_q8kR!g9Xj<EP<9v7v_t@FW@0r+E$41_zhhf >zZ`EI`Hlr`?fp|;<rJrk>c++GPe53V%v^&+!3%#w2$Bs#S+7$d5Ij|Y<TN%H4!sQSJ >z;R0n=v_#?DzC4NjNL{4H+C#msYP!40D9a`{;dCtsxO1X4jJu#AmYNYB?u1X8S*(&5 >zJhHnV>=ndvo#`Wtf<7oi?O0|F83=C8X@&1&$3LsE!T~pMZmN()FU74gR6^mK^P*^e >z{J5uDnRcb&Qd9XEO|8x_^DFSEn(aOkf~h=ZTHplkmz(pd#mA!NQ<5fHDQ{PUqoaQ= >zVh>Y2g;8HJ8aT`!b+LV~@2#Jk-AxxNWWfxe?~R!yt!2*T#;(b-ayBFBQCyW;9R@rl >zhR~Se4*rPSw(*31GR&kCRKzk{tJY52LK{~WKC!Tqrl%1PqF7Ul`;3az-c8pf{S!T- >zp_@(*Wu<On`!sJ)#+S>=D~W4r5bdbZW>JraUU<Dn8^+~lonVW$BMj{0D<O-v%kWxg >z>uc5NaH<;Ln{z#%6Y}066MDnf>a`;4jLLJZQqnOSkb!6Yi{s_ll>pLOh-&ULI5$Gp >z_p${nz}kZnF73sSeAoP|U2pE19G2i_&<vZ5F)2%|5r>Ut<9%;W-Zew69}7Wus*0&X >zbDWG9WgQQk7LfIySG}Q%GI^R^9g7S|-@yNM`Q`j)YNMr{i<2RprJb>jtBI-ee_M_J >zV;>Q-cdsYTUpr?0Cc^)M#lIJ4CtLczT=>7$W*%ZXIwB=g7gr}cA{ToiOB)+EOH+3u >zIy%0848;FmZvDG~f6cA`cz0QwE2Ggt0RdJ06)vHFC0b6VhAyW6oma(JmiB<r#}5A? >z8V*fK?WpKKC%?E70(G^caLxz&xGWXH!k9?JkE(u&n};bal74sDBP0lCq#Te3?ET#G >zMda@a`ON|Q(j@`i*~$B6($XU#ncRYDQt0mG{pSS;5z4ovM5uw}SDPTh_h~Z%?G~xW >zA4ym_;V!q4)SfmLY7ycGssMjlbj9S5S3EK7#Dv3VcN#HI5^)R+1GStf3%92nWfH1R >z8Z_Q)Q4b&vQ8D5lo<b_b%?5J;P&|!E{hBH{ntoB0nYy&8K?jcQxren72v`lL&Ra9l >zht~a?PA#;vXt>l*f8OJi%JPZxBN^!pwN(V1MZsmG8)7e5UI@#ocJ0uYdG;H7y;VL9 >z!ir4Z+se?`0^tP{j|_rM5({!*_DCiwvW7(RqYMUADgp&(;pzpI>dlyVH%7k8%T}*a >zkGIRL`cXz<O{b!3Qj(w=gYs{{2BM`TuPlG_fIQa1ry|6NBAy!O7+E;F)G~<^?rw%o >zD7SE(6{9){Hi6pmmVm$qx_pZglUYY<*%DzSQ5MC@p<Bo<N>NuX%^A~hS<%*7lG(t6 >zFdPH#s_Ym}MkLum9(|vNh2zN*07)MO?lT^W-YO&mOEfL5LMM_@0F=?FN(0rdc#3a> >z-Pn{_K^ulGD5Qte*ZVV&UxHJD4yF3RlM$i#jMsQ2kY_-XGA!k*C1iGKim3M~twKhy >z7}EViDC220bCj8qv3Geo%`1V5)$WM`PA)7k^8L(zSyEMUinX{k(ZWVIla<P!dX~E` >zJPuThP*p_^!_MsTSs25u`-0>hM#C|UxrQ@XPGym=mt{1Sj7Ft7zy*PMj*2(ZQc=|W >zG6h*4db2BfL$t~j6jRkAdV4?5L_CSnFw|$VV{6(ytX7>LzRVtm(qY!==I(j(s1H!2 >z9kQy3gv|Iw`&&0<#zwk#_~_zSs0xls=l(;^(b!sl5hsj5U0R~%K`b5I#DtWf9P?uT >zK@j>NT|JDNhhZc!3`W3uN~^qP!YofXgoOq#UA)(2nZ_YPUOg$3)oC~@u6S`dhZ!M8 >zdutfN=&EC!Pv51Gb|`i`S?!gk-!Y@Dc(<~QBhF$TP8uy$tt~*9$z4q%Se-EMc|&qm >zO<bD)hv^G-qey0w=<gHI-<1Wq=uf<RE^~n1wc&Z&^n$Qp45rjD57{avfx$JwVWRI^ >zwozl}xYA3<JKZOu9Klh!sJH={pw=GU@A{X+4??$-KCp`@9S#=I4}lg=wDnhs+E4Ba >zX8(GQ2j|JkkmeR{y6aIRR{rf5c)O7=0#O~U^rwu?qXXm2mce#B_v4c&97-!q4O~q} >zrE%T~kZ4@N&8b0g=fu9eZ!Y)EPuhlL1B|86`-@)cw;akq`M`q3WbLO4i_%V>Lzc}D >ztk}kBGA3k6JyU7wpg+z!!JBx(q0YJNtOhGd$(lI?dw5FaAmRlH%Aw{%R;uq4`z9UH >zEzeM_jknwM;>{<z?oTiifo664?mDCz_zo9+f@v18pynPw{(6N;k6TvRI9tS@Z|%n4 >zqun*EPrautyNMPPy1L55{%V&I)<%qWJ0_HC4>4m`<I(05n}cY4Q`mIf94EDeTpbLa >zR+Rozn!#_#ANB0~`VztB!yZ+I@;i91ckxf5Vz$qrLcGmUzb~kX(4BX-o?ME7eg=4) >z>O5SuD*+iXZJHaOj*h<7==0JY9Um<{1B5_!hN*cGcAUPN^u1kQx#I7U2<iT})z=F; >zPYZ|@vsmJ$3{JpsdwXe6&5<D5_Mg*)!}zaAWTxpy`?EMx4JTbA)_z(NU&0-n5!q+v >zhUu*IdNt5xgZ!Fs17;??Gv1q_(H6r9Df!)l>z5$kV2bUV=YhKCBH^*{UchOCLdB@u >zu4>G(dE(ytNC79DoH~pq@sBdas%vf+RmGhCbM?bxv8?G;|0?;9ct4=`LG_Ygcyz)5 >zfAp_QOE{Z%zOb+_?0oAkCf};lIqV)i-P~`4rZ4|J*q(G^GiHn`R%kTQ7aLY|bp2ad >znf>#2dKY#=rcxwMsy*rf3V(?NlltKy^Z|8bKJ<~osPmR%@NTr5Dk5lEv5~q8r(n(; >zA4lv5Bc8L41+hyDl;Nx)#C;4%t0J5^?+v2XAzb+_mpqm615#R1#aMAyuRKyImBzr2 >zu*yQg1_Pz5L`jOxdAoQ-IegXEBn=yI<DN_SxQ~2WcL{iBRLK*2`X4WEO~1JOqIC*V >zSPdl+A4doYgUP|q1!WE9cW+Du7E3$p0U_L!tq+R`$xb|4EIwA53}_MqSDg5+P`;q! >zWS@MeYG9H+EgnyED~UBRIG?4lStk@8(se~Uh*I3^ulI@NXPn`!zgb8zLX&p*5T#$J >z&fs3ZTJ{-#_#5S>P3=BfUmjoKPdwshWi|3TyZ62d#rUF56reEihU#7ZP7g1v{>&&n >z|Em8Lv{7r}S4;CS^VL?3RBGD|y3_=$O&UD*qo*dqfuZmxNXVOX3I_^8n}a(SwpJoR >zMjniI1ALUBeY<E`k7YD*+3F&PDp2B$oI$UGAs_e@?;*9HO;3-jt23=W5fg7$MjzRU >z$qs5~Nrr~P!o#klW&u<Nk)V=48&ZBIn?n@m)M+Gi`I$2o$MIHO3?^!p-y=s?3J!)- >zVD^MTlLVI;H^sMUar$e!foL*~AyNG`R=XD;R9MoBg2jNKcF1-k_AEZXE&HY`NK1YT >z3*LI#!zVNKU3ttb6}wUmY~M+phA$IBjuFP{DlU}4iE6%Y{Avw(x8zy*OXkm*0)RHJ >z<&tej=nLUL;-`P#8UFXLe+AarTADlk50J_~cKD40Z#|SCKtLrBKtLk@0!lJ9v2?L? >zG5v2rWwDC1{el2e_pv%H4M|_V-j0p9kS(>BrDC9RXjOzeN^OImL9Has?S8uNYCV9p >z=+MB@jbMAy=ZC+$bIK*D^eTNVtJreRch=P2$AS@6vLXD}SshzF(Fm=cx@;c|t0x)i >z*W(eueVT}+f*RG2!~7?^#8MVjB#CM%doF`n^pJI^R<nghNxm)WmP*I6C}oLbaPh+@ >z6doy7xaiFrn(A`4AsJelL$PZbwQ9nj?L2Om&rg^ueATd$2=a0})_VnIr<$U{1Qti2 >zZniqX9$`jd$d*a89fhva5zq%Wfx0Zp;L^M*BEb9`ftd$bmUb1cYQ_@?;F3in`6;Ye >z{bw9GT5&>!lKbzZlDW}$nM_!k#eo=dbozs1N7Jrg3uuCFtk|7h*s?;z_>qqRCuNIv >zVBKXdF<JO6TnnUr@~1IScmntBq$h3<3rv?C-qpJ9*)ufion)O}W#%1EcD^r6T*d;> >z*gN1-WTB>1j+Tj;WBs(ucwJq7g0=C!xXvNS1Q^VyD&AOK-3AW6py%`}(yPJ|55%$u >z`|h;2e3$+&s5lw^Iey9Ko-O6!XM=^<5z}MaT+$~x9$~*MyvK0$;Vt;!u+ewNwYxVX >zk;4bC#MK9U*jnKFlcwi9B=657ROp6EH?}dx65AH)q*Kun|IkDK)+|BiyphSg$qU{) >zh!tqeHL>h!6{==cgdoy2KXbuUK-sd7;}wh%@NY=+OcnRrzmK~91Ir`Y&<^PTwLt9t >zl79)y8`>G0+WdD|9=%@>re6RKeAZX~b~7_a0IUx+923jNDmXoYv<KF{mT&8nDCpfR >zbQ@VjcsrYX=t;%p5Ce8uV&fs3T|>Qkg=hD=K?(IzFv>CHu_lVG!ar`D7ZQuny=4zB >z{{8{{zh3<u|I7lkcQ7>mpLdb}5li+bVQX%1AfSi8W_p7E-whi7&)OpO^S{mazH@r^ >z$XOjgSeKvJl0mB?qQGSn4J?`9L=9)>$&7^KsU_Fg+P|*3`Ano6?$^6lNq;}TZ3dUl >zyx*Lf!Cb438GKJ{Z5{iLrh>~DXi^6nx5SPdU+-aCRX1{jpAg_q*ccly2PzK5?B3bA >zO(>$7p<RKPJW7TwjWr3FA<-uf?b8;6wko0v4Vm;+&C@{H^s?eZNbb{C%LjFz4ow+T >zA7_kp`e+?$`y+CeV_W%YVW+~9doX3v1Q|uVS-KKRhdi;PSzu#As8s+bVX$Frtx-OK >zzvZ4*tq|b3aosB+XY2Ua_eauFl&vmMf0OfqGYC+_mXur9gGj3#ga995XbCz<mmfeu >zfM=s3q5lxzL^V)n<Fm!Cd|eoh0|{~;qg+K1dZU+)3?TEasEFq=Pf37G*+|*Ki9vTv >zRP^e*|5a5si{<tU^wPyr;z{hmL<UkO*F^Fs<*2XyX58-G<mPr22*r(2f<+Zu>hdHE >z>+>J7g#<jwFiwxa5ynFVXwD8U$e^9}bbq3lV{-*Iu%Qjn(h6`Tw4f1h%|6V$v2@9P >zFsn=f`ZOj-$gk(JCG4r!<-B@vv?nb^(P?mUgNyM9%GPplZG2@p37IVWV+@+nbQeix >z_cCuY+VBHa?g*hn8KgY$Q%3EEpfcKG0EPFhz5Q%5B}5Wc1S}f`CKSKWCqqaAU7U@k >zP)&T>V&VF1H8OJG<zUo&tBt85ggSk$wCJ*){-zI{1Xw<cxU3Q041+uaU$(4a60Wbe >z$rA54Q>y3WHf<wsBi-mCZL~RAMlW{~cxck$NkUpjGchMRn=4)Z3F&%v@vYU)euEvY >zgc`Eh){B9Tj*=pW$W4>%FnRY8x#U<Bh-t!A9P$U8(7J093Z7qB^v{X0drFh82&Lu2 >z{b%Dt6gNBuWI4oebrM=UB_DBJ4-4}Y?LbNIg-uguH0xGxyc{%{2b)XaA(kA{OeMrU >z8nxg4_>k$}0+uwp*4u<GNm?Iv<$ymY5dd=JbRze{qz^#EFAA^S>bj=)@|~H$pigny >zRd%ckLsq|ceTzB-ybDF1)q5b~Eq8T)Ie-4oA3P5#al(m!t22h}{YZ#>M$}f<R57~U >zRDr(hHVYU$CD8c0M&VmoTXRT2otxIjK5;aJlB|vBTz%D8mw{_qvoUg{3pWyON%z4> >z)RU?=)n?g=U~mB_M=vn4chUg8HergN0-+E$4`hcZPxs9HtYSl>?Ks8E<?N&tncz|i >zjU~ip>q-ehO_x1<X*{DC?WAoRHKp`)S)cP*mPPo~w+DB$VG_)y>%a#4c5EwK6w4Iu >z21Fxfqu%ZyQvx+b)vSy0YS_MkI;y_48=}RkD<a~15Clg2hAl>_?&XfeZ!MiywZ)DL >zo###BQM}gW>=C`9_hPU1*XDOx>0ngA=6O2ym{Td|X;(V{evs9fA0|}E-hB>$c;Uwz >zSxu<1Or2**=e}9A=)o;H{}D?#)h2U&`X1kD_KJ*2!kp<ymyoDD6IX0w!CP&~4#Tnx >zh^kz8M#_C%Q-4d)eqNkB$XM9|2p!6b63Q5>p)G*Z(R0d1p*;4TT$~M*7o>+zqtVo1 >zb%g=MyciJ>{5=Tg(Y8VnrL~#Q`CB(O#>h4-mlluMCZVgQSR++!)pMNt8audLAs>i* >z!WitImcfv1TW<rEGx($pSkH8B2s%nlK>+fkuTq}P+b|b!5o48v54WEzK{z*zmRJqL >z`Z2k@yoiC0yIcW3Iemm7`A<{lDTA6N>!<JZ{}HFn=y$?u00RMG{B=f9;9suVR?h#o >z!C$tLt@HpR($|*0V_kg_CBR)ASrA<C1~OW4{>W;-ft~d9DDKOh;Zn<084YoL{>Zb9 >z&s}+%yiIhMiO#A6Ts3{T_M^{W?{=wHlV^J;pQ+QLVxzKskEv5sAUQS7p1|%J-Rjh% >zGg_;Cnh&8-*`qceW`~j2($FZwCQ3>2ZVOsAOcErz&&CZQxrs{<KUo;OQPf!VP?vhn >zR!Mw(9CcuI-GMwAHC=3sz7GIVzL{I@ZAhcai@K8hm_t}km*)oceNPMK_-&y@9Z_hx >zC>902ApzYjf<#WKEm|Icfo+v%10<^VwD6G@7<b16w81%;UALoPe5EKf?}}u`Z?gW* >zYsvry<-Oy9eAI$Yo|8C+?-?BhoCS1SN*Uy~Ee|5tNN-?J3)P-Oh&ZruHXYRWIEwHH >z@5AQO5mvcfr=Mu*0PG^>p5iw0kZ3sM`OGXLJyWLJ4f>B6MU|(HlKCs6_kU&dpW@d3 >zI#_9E=wL~2<!o>Fztd>>{-3zDWMx@-5GJIqdzuWdPyx8ouKc;d;9(KF;W$Hg9hhRe >zPezn}e|If|DZhZ#iDs7Tu5{1D%||SJJ~XB2qqtfHbe0zoVnh0(8$fz|KH6E@9yWkX >zh$Q*MIuPxHpz2Wxv9koNXXTvMJDabY7pxL~p0|7xf3d;FXmF}+yi*^Oyc?XM(JRvS >zCS(4VrA^>jforeJxnktK^Ut1muyJoc4)6M4)#2V+6G=pII4U<OIoeMCoMb2}bpboD >z?VmLmrM!u1M#r=8Z2GutmGl)_PLtgA2A{xJsj>v!o7(xtR_J~s);U0cxq_edJkqo_ >z$`RdcH-;s)xht~MMRQCrlhT1@>OgVf9KDsMix^Gn;Ck#mV6KcMK0)@|LQl-kH^^m` >zNf`jk_x0=Jj|08k?tw#7rL}ZSE&XEwuPxs!;p>Q*pZ+gEcgw$x{{Ia^{S-IR9x0K0 >zjQy)=s)qyuV)$nkqu^g@`}YH@1k=!#X8-xn?vN@#4j_Q!JEI=GDAi0B1R~<eNTwvH >zB2@`QUHyh-dlA9n^2hoq0ZQ<ztD}2JO)CUO^_f`ndU86;*=%@P^Dfa8O8+2X=oY>O >zJA$)2j^_F1a^bRAm3d^{;VMh9$nk@zbU|;%3d|Ob?5J_oJ`IJGSvQ?;TTfrG>xzT8 >zC~XwY++7PMe4J)s?14FUCVhCW?vjN;p1Ss0pTg0n95tozHyE*oC<{#;Ph>@ivM0ra >z0n!U^X-LshPAsF8Q!KSZ&H8j8r~6MBc9v$d!L=;TbV!d2&&Enfk6hN&9k_=Cj1qn~ >zEvOV_|4y^4dF+S{oH!UXoXU`>ONO3c!e}_WU^g9+iav?i#)d3xup=LAcm8LLrdx6d >zGfC>pW0|&(wghV_Mf7-9@yUVxGMEd+>e;#^>?6je132%dY5Y&O5x*ujSilE0*JK>p >zXZ=8*nxO&(42g$V5K%xGwA$5r860*jf)Z#gzaQ;%a}0SRc#>Wb{wO%K45Go9$XTpQ >zEHoV@Fg=S@By3|qol|AMcnv!|nEjDtHr6$<hrsk9d3XiPa%GiFYPFN9_!4?)9Dvc7 >zt#=J87BV=P*IU)s-hYGTO%*=C9g03J;HS{E<{sswZmx~af*`qWTXN$XikghZ3XHW% >zj(5IaU9Jn@XSpZ?ZGg@-Y(Aqe4SJY=F$ndcSidzRS#=jdH(+cxXzcP8JxN*lVHtOJ >z3a#L!$8?2VQsF%4PMXpc9<Yf;#erZK`JwN@iltJM<81m4L_zV3V%F?ksbr?!hUKCm >z@N)W3(86MVA1e-i>=#|h3gU8Z_|CZjBIJO%!8Q4AiBI(kYM!73=+du|9#n9b?z)~( >zfOEE!%Ny)JRxHLO5h#<t=%_e4AfTWB%-`PF-t{le%hTBYFTU%)Yrc{*Hk}rvP)4pj >zVbE0<cU2A@^nl75Otsx?e)cEeqeMp4^Q;Dw#b8U0IW|8z<(i&vT;tvt0UG+n-M^SS >zbbtc&XQI8{oXz+;Z<Mq#lUdpywmb-PJRi;pxAX|RIPANQyXNj;ujNde?EF6(H_Q8z >zlBsjNzdPe@ydnHQ)k`8{IH)rDr3PnScGfb6)qwCeU>qv(!MvFuo%fVfJ?h8l4j{7_ >z*q47o=|MYKvy94;s%OF_UV~{;rK&Y*4MHTa0kk}0+}_8l&*9Ou9Ee+%NYw>c(JX3i >z#U5(FHEM~Q4>WYu<V-yV52zvq4M7pttCL^h;Ol3m@@n0v)ki_zjiI?rcfvt|F#s~Q >zE^Wd#`gM)7F`*0F4oc?ZOGtQ94%TOQfh{Pkh&Ya^K{Pk!zd)RSvN!W>4}aAR6Bo>U >zmf5p7n=gi9nl}9aR7KON91SH`G@A4018+qD!<c4u-xw*YY{gam8ZMhiv>t@PG4G)e >zqa0h72Qj`Rcv#*tq&U@wZL8>1Pt$>J=w4Vd#uMRmU+h*!BnRCPIhjr$PvW*$vVjY2 >ztyEdKj&OUJS;n8^aVFNsT=xhbK9EYLvXJAsc{sPJtn+>n4|4HVD&$Zq7JU$zXY&OI >zD%}wDO|HF!pzlQ_E6;8kh4{=Nf(5r-*N48!>q>URJ&<3(?IUnrkGWbrc6NP5%b*hS >z>XNtZ);baHnwEhfMJ0&%$QEKhoB=asZnW{IXR?_6@(%n-4NO_!257u?hR$4{_x`zr >z_B-<O`WVfb42&hSb~j9ZC=9T{g=P9F5RlY~%<d7X>#-!~4Vn#DR5Xz6v4;aMJ?fcd >zRA!3a%zfVo&7%tNgw+9m*|7Ym{mv(9d$n~krvd@-qaAij;R8mPTxj~8*zQk9S=#-j >zEhr0P&Pm{)cJJA6N9fYdZT<#YvmQwAboc~yux5L+R%NT3|H8Z@##+}#Rrds`9>;TD >zDSQP!&{!hWOB|PZ;^57r0u<#bf}>QTvZgzd20W8Az|d4MXh1m*)<nhnHcZ@-MqG^Y >zOHl7O+{E}^kmKlikYN+c6VMp)_D1~p6MqZh)<hg%a=-E`H%d23|MVG)9>?Aj6LW67 >zZ8UihHCNDPc%|)uN<7IgII*AwaBQBxV*i6AT%4U7qdkO6CQn4Bxo6=@+)<#KKnq_! >zDo|_S0y_lc9BKxbBVIteWoRlJ48K@Tr3b7N1IkUq7I?e4w~FeIl5?m+w`1S}j{U|3 >z^ol8LpFjcrk|>g6oKWzzjc>p`16fpL6H&ZMu`_t)3=tA#x_Ej1{Bh6)6n-Du&esVp >zHJx?HHq=Krhx25QWfdIUzOh}BarH*asAI*&fXgf^#xcSVwT+LF12es<re~)mQoqRi >z?($e$^B|I05Bk9<crpprIS=ZwYL4P<r15889ZVI!Lfwp;F!zKrg!`-;(;P3z5O`9v >z4x{Oi_t}u3?IFpjpA4ySC)`wT;EKY6u70>2AX>r;!d}ESA`~pZ+{K0qL+}nt<#4vW >zWV!E3hcKzgsqsLF4xXtWg$zvtSDs_2+r_T9oLfn$TFQ@kPaUzwom9Er6;VH`dOWkT >zam<%typEIn?-!L69dDgg@h!baAM6hqE==16_CJKeMv5(c<%z)@c}V1b+j;w(D9lFx >zicD|d?*@8+u?R`V%5M*zX4@B+Wa&}^pB(?A5l~$1R>q#|h(A5qzEA1u_CwGD{7*!0 >zSy-)$q8bhX<rGSwdPn>Itov~AcGZ`(^1VJc8l~_RM81@vF^U{n35V?Ndb8(`bEnJB >zOfPFHpUuzyx_*J^CPi)4lDcWATJX$r?*q!+Db%a*Lc7+4gW-+72Kp>Xl<6#qilBv9 >z@T2kU@dg%4HXjNy>a)!5#j;6g%%JLWoy)pd2WSmYz$EUgt+=+TgP-3d@>!2e<fO%5 >zu&;&EO34VUeGx}Sr@sBVRQ^RBevY1SrtQThgRtfaY`IY1VW{(%Eghc^;;#hKl_hOR >z@tE8?vPV=H@P#@G4RhtrMQva{)=QCJu29v=LutbHnfGhQDiJ#vrrk&emkQNf$EVgc >zh%l-!_vyVEC6yC&N8JI}y!xiLtU@oBs2^&Tv0N6@!gpCP$feC}c<z+5)nPdBIYu7Y >z(!l-MS@-O&cAFHLmmP?x0}^+({J8AqbD><QzDMdxcY68EXOVzqRfK!L!3FW6CtZ&G >zxh5i(RdCVzK^Mv0`nKtlZr}(np|U(9RL8&_gr+;3iPMYS0$gH8X56CMaDZ%4{=Nv0 >zwg`7(`amGLxHkH28G1Uk>agIUlX#TPuQic~9UWEs{BtoLB#}h~_2!>pqD<%bE8pCq >zGZ+{;qEWT}E1`i+fFRt{{v-UK_I+K}im9f~_xEYeToA`8t*sQgeebw6iyCatmcHZ5 >z9ku@ET;gI#zXL}#%-i!+mT8nLKrCfTzqlPK<Zs!>@6U}O0TDm3Y^^FPx+XKvxq~Oo >zjzH@*v-f;BKpeCaJQxV&ClDTfSltvNjf#aS<=Oql%4kgP<JHJ#tC11JsgP@seO${y >zbLAXyr4{R)!8U3eW*5U4joufjTb8!j@{<-}E)Nt}bd(QY!rgz&>c?is$Xr*!oCU?) >z18q9TQYcd*T*#hgE^E|CbNQn_o@rUJgoOXU#<A<hs^(U4?T^)+W??R6i%<5jm6jgs >zN}A{NsOQx_+kcl%3U7KG=yqoIksUjYHb2*sf2^%Iq1@)&4$;|nWmN3%1uin)D{-O! >z`M&#S_xugtbmr_{MccWNDpI=ZK7KqFaDe?!SF+lc_dVvpN9DApPJa<Ae4M+{biG7T >zhRL6Eip%z|n;m@0&2YN9yKR;Qv;N;lzn_&d_*HxiSTIH60qYKqJKvX8Wq600Xy|i2 >zN)9fbYxD1ouBpFur_uMbI}?C|2BI%t#;kk2$#SR2qWQk*bEn?n+Ex*;ysj>C#xme; >z;sDhc{*!*CnPv|csu=Dptv|CO!r6N62aib+6?f<Oux`D+!^3ACi$^18qRqVEW4dSD >zwtky>W9y;r2OljL3N3w{mZ|8lz5V$_&mS$>_a>F*&i~(%w|Vb+pU(*ktgTeE6>t8L >zE%4qaemd9v=jJC9^LFOnYg~BtZJ~Vimd%r`d5SM@`S&4jZU2&GQ<BZZVxQ_HAKC8C >z#lgS3P|Jtw^`6zcPW74Gmz=A&bGd%(-N3*4JFn}?U)y!rIebrA?8-%9qPJFxhQI0Z >zYGv12abmiE{}I2n_w@f%9$j0RTJrSl!_b>r0xC~eyqBDumNP$0@!-kGgHKog5Y@V0 >zakp~qrZZdG>{hLoayzKl?|a>MP2pMRYjd0UL-Ke0$}8b>{;#`z%I$TxZ%51R&-dLI >z_WJiR#d)<~;%aKXy(#r<t&6Hm`~0l(cf*evx1ME&O#b)7ey?rs--oT{yP|li|NZ!Q >z@Z-hVXX>k}eVVKK_jAnc*;B@}>9KkKKF>W_)4mJe_*0e3@B8|)-nX-#`Sn@;{Q2#W >zU;k_Wx645D|E6pI`}X`~`{s%t_5Ppt_uI+WNdGzRzy5zt_|I?q1H2iT<d_i)tB_~l >zSQ#XsTmgo^jvyxVxF%M}aZP9k4B<112gN9Rm{E}Pi-7CCNH<Xc#l%)L6CuYq5jGX` >z5GQ0WpT}Y<%8^b$3qVIYVGRgK9~tvNCx`{W(GG?!jVeG29H!8K0681U0*EN`@lHSs >zu^jD$FXS~*!YN#icnb+c3t}1tb!jxR|8|jL9qK}9!f}Uwo|pxSPp>JH;8Tosh{V~B >zy4(-h;~pyH+m5m(ky3};r@$d7s}S)y1d$X_R~jORNSP`HA%Zl)hR+??i!o<-x&UQ4 >zc|G#ofwHUspF<D<g1V>xIY8!6;1JX$2E@4pb>bM=B~FIq2T3y0G%`MSV2>Jec+`Mu >z7+E6{+<`vli_daIbfC`oA_qbr`IaNk{}Sg6)F}*PXSi699R^TmfF?AEa|P<KJF+Xp >ztVnVN@*q56t1*X-k*&UHO@h_1L1dt%ph09j^)RTiKpnJ0w)BJ@36^3G;o<T#D{v(d >Q1A_<<MsqSS%=ZNG02RFkLI3~& > >literal 0 >HcmV?d00001 > >diff --git a/t/cypress/integration/ILL/Batches_spec.ts b/t/cypress/integration/ILL/Batches_spec.ts >index fd4cb167106..51e42b6e7f5 100644 >--- a/t/cypress/integration/ILL/Batches_spec.ts >+++ b/t/cypress/integration/ILL/Batches_spec.ts >@@ -125,30 +125,30 @@ const parse_to_ill_response = { > }; > > const batchstatuses = [ >- { >- "code": "NEW", >- "id": 1, >- "is_system": true, >- "name": "New" >- }, >- { >- "code": "IN_PROGRESS", >- "id": 2, >- "is_system": true, >- "name": "In progress" >- }, >- { >- "code": "COMPLETED", >- "id": 3, >- "is_system": true, >- "name": "Completed" >- }, >- { >- "code": "UNKNOWN", >- "id": 4, >- "is_system": true, >- "name": "Unknown" >- } >+ { >+ code: "NEW", >+ id: 1, >+ is_system: true, >+ name: "New", >+ }, >+ { >+ code: "IN_PROGRESS", >+ id: 2, >+ is_system: true, >+ name: "In progress", >+ }, >+ { >+ code: "COMPLETED", >+ id: 3, >+ is_system: true, >+ name: "Completed", >+ }, >+ { >+ code: "UNKNOWN", >+ id: 4, >+ is_system: true, >+ name: "Unknown", >+ }, > ]; > > describe("ILL Batches", () => { >@@ -188,9 +188,8 @@ describe("ILL Batches", () => { > > cy.intercept("GET", "/api/v1/ill/batchstatuses", { > statusCode: 200, >- body: batchstatuses >+ body: batchstatuses, > }).as("get-batchstatuses"); >- > }); > afterEach(function () { > //Restore ILLModule sys pref original value >@@ -296,3 +295,286 @@ describe("ILL Batches", () => { > cy.get("#identifier-table_wrapper").should("not.be.visible"); > }); > }); >+ >+describe("AutoILLBackendPriority syspref", () => { >+ let original_plugin_restricted; >+ let kohaconf = "/etc/koha/sites/kohadev/koha-conf.xml"; >+ beforeEach(() => { >+ cy.login(); >+ cy.task("query", { >+ sql: "SELECT value FROM systempreferences WHERE variable='ILLModule'", >+ }).then(rows => { >+ cy.wrap(rows[0].value).as("syspref_ILLModule"); >+ }); >+ cy.set_syspref("ILLModule", 1); >+ cy.task("query", { >+ sql: "SELECT value FROM systempreferences WHERE variable='AutoILLBackendPriority'", >+ }).then(rows => { >+ cy.wrap(rows[0].value).as("syspref_AutoILLBackendPriority"); >+ }); >+ cy.set_syspref("AutoILLBackendPriority", "PluginBackend"); >+ cy.task("readXmlElementValue", { >+ filePath: kohaconf, >+ element: "plugins_restricted", >+ }).then(value => { >+ original_plugin_restricted = value; >+ if (value == "1") { >+ cy.task("modifyXmlElement", { >+ filePath: kohaconf, >+ element: "plugins_restricted", >+ value: "0", >+ }); >+ } >+ }); >+ cy.title().should("eq", "Koha staff interface"); >+ cy.get("a.icon_administration").contains("Koha administration").click(); >+ cy.get("a").contains("Manage plugins").click(); >+ cy.get("a#upload_plugin").contains("Upload plugin").click(); >+ >+ cy.get("#uploadfile").click(); >+ cy.get("#uploadfile").selectFile( >+ "t/cypress/fixtures/koha-plugin-ill-metadata-enrichment.kpz" >+ ); >+ cy.get("input").contains("Upload").click(); >+ >+ // Install dummy backend plugin compatibly with AutoILLBackendPriority and ILL batches >+ cy.visit("/cgi-bin/koha/plugins/plugins-home.pl"); >+ cy.get("a#upload_plugin").contains("Upload plugin").click(); >+ cy.get("#uploadfile").click(); >+ cy.get("#uploadfile").selectFile( >+ "t/cypress/fixtures/koha-plugin-ill-backend.kpz" >+ ); >+ cy.get("input").contains("Upload").click(); >+ >+ cy.intercept("GET", "/api/v1/ill/batchstatuses", { >+ statusCode: 200, >+ body: batchstatuses, >+ }).as("get-batchstatuses"); >+ }); >+ afterEach(function () { >+ //Restore ILLModule sys pref original value >+ cy.set_syspref("ILLModule", this.syspref_ILLModule); >+ // Restore AutoILLBackendPriority original value >+ cy.set_syspref( >+ "AutoILLBackendPriority", >+ this.syspref_AutoILLBackendPriority >+ ); >+ //Restore plugins_restricted original value >+ cy.task("modifyXmlElement", { >+ filePath: kohaconf, >+ element: "plugins_restricted", >+ value: original_plugin_restricted, >+ }); >+ //Clean-up created test batches >+ cy.task("query", { >+ sql: "DELETE from illbatches", >+ }); >+ //Clean-up installed plugin(s) >+ cy.task("query", { >+ sql: "DELETE from plugin_data", >+ }); >+ cy.task("query", { >+ sql: "DELETE from plugin_methods", >+ }); >+ }); >+ >+ it("AutoILLBackendPriority: Backend error", function () { >+ // ILL toolbar >+ cy.visit("/cgi-bin/koha/ill/ill-requests.pl"); >+ cy.get("#ill-batch-backend-dropdown").should("not.exist"); >+ cy.get(".ill-toolbar a.btn-default") >+ .contains("New ILL requests batch") >+ .click(); >+ cy.wait("@get-batchstatuses"); >+ >+ // Modal >+ cy.get("#ill-batch-modal").should("be.visible"); >+ cy.get("#ill-batch-modal #button_create_batch") >+ .should("exist") >+ .and("be.disabled"); >+ >+ // Create a batch >+ cy.get("#ill-batch-modal #name").type("second test batch"); >+ cy.get("#ill-batch-modal #batchcardnumber").type("42"); >+ cy.get("#ill-batch-modal #branchcode").select("Centerville"); >+ cy.get("#ill-batch-modal #button_create_batch") >+ .should("exist") >+ .and("not.be.disabled"); >+ cy.get("#ill-batch-modal #button_create_batch").click(); >+ cy.get("#ill-batch-modal #add_batch_items").should("be.visible"); >+ >+ // Add identifiers + Mock plugin (pubmedid) API responses >+ let pubmedid = "123"; >+ cy.intercept( >+ "GET", >+ "/api/v1/contrib/pubmed/esummary?pmid=" + pubmedid, >+ { >+ statusCode: 200, >+ body: pubmedid_metadata_response, >+ } >+ ).as("get-pubmedid-metadata"); >+ cy.intercept("POST", "/api/v1/contrib/pubmed/parse_to_ill", { >+ statusCode: 200, >+ body: parse_to_ill_response, >+ }).as("get-parse_to_ill"); >+ cy.intercept( >+ "GET", >+ "/api/v1/contrib/pluginbackend/ill_backend_availability_pluginbackend*", >+ { >+ statusCode: 404, >+ body: { >+ error: "Provided ISBN is not available in PluginBackend", >+ }, >+ } >+ ).as("get-backend_availability_response"); >+ >+ cy.get("#ill-batch-modal #identifiers_input").type(pubmedid); >+ cy.get("#ill-batch-modal #process-button") >+ .contains("Process identifiers") >+ .click(); >+ cy.wait("@get-pubmedid-metadata"); >+ cy.wait("@get-parse_to_ill"); >+ cy.wait("@get-backend_availability_response"); >+ cy.get("#identifier-table .dt-column-title") >+ .contains("Auto backend") >+ .should("exist"); >+ cy.get("#ill-batch-modal #create-requests-button").should("exist"); >+ >+ //Plugin backend came back with error, Standard should be checked >+ cy.get("input[name='auto_backend_0']").first().should("not.be.checked"); >+ cy.get("input[name='auto_backend_0']").eq(1).should("be.checked"); >+ }); >+ >+ it("AutoILLBackendPriority: Backend warning", function () { >+ // ILL toolbar >+ cy.visit("/cgi-bin/koha/ill/ill-requests.pl"); >+ cy.get("#ill-batch-backend-dropdown").should("not.exist"); >+ cy.get(".ill-toolbar a.btn-default") >+ .contains("New ILL requests batch") >+ .click(); >+ cy.wait("@get-batchstatuses"); >+ >+ // Modal >+ cy.get("#ill-batch-modal").should("be.visible"); >+ cy.get("#ill-batch-modal #button_create_batch") >+ .should("exist") >+ .and("be.disabled"); >+ >+ // Create a batch >+ cy.get("#ill-batch-modal #name").type("second test batch"); >+ cy.get("#ill-batch-modal #batchcardnumber").type("42"); >+ cy.get("#ill-batch-modal #branchcode").select("Centerville"); >+ cy.get("#ill-batch-modal #button_create_batch") >+ .should("exist") >+ .and("not.be.disabled"); >+ cy.get("#ill-batch-modal #button_create_batch").click(); >+ cy.get("#ill-batch-modal #add_batch_items").should("be.visible"); >+ >+ // Add identifiers + Mock plugin (pubmedid) API responses >+ let pubmedid = "123"; >+ cy.intercept( >+ "GET", >+ "/api/v1/contrib/pubmed/esummary?pmid=" + pubmedid, >+ { >+ statusCode: 200, >+ body: pubmedid_metadata_response, >+ } >+ ).as("get-pubmedid-metadata"); >+ cy.intercept("POST", "/api/v1/contrib/pubmed/parse_to_ill", { >+ statusCode: 200, >+ body: parse_to_ill_response, >+ }).as("get-parse_to_ill"); >+ cy.intercept( >+ "GET", >+ "/api/v1/contrib/pluginbackend/ill_backend_availability_pluginbackend*", >+ { >+ statusCode: 200, >+ body: { >+ warning: >+ "May be placed but will have to go through human verification", >+ }, >+ } >+ ).as("get-backend_availability_response"); >+ >+ cy.get("#ill-batch-modal #identifiers_input").type(pubmedid); >+ cy.get("#ill-batch-modal #process-button") >+ .contains("Process identifiers") >+ .click(); >+ cy.wait("@get-pubmedid-metadata"); >+ cy.wait("@get-parse_to_ill"); >+ cy.wait("@get-backend_availability_response"); >+ cy.get("#identifier-table .dt-column-title") >+ .contains("Auto backend") >+ .should("exist"); >+ cy.get("#ill-batch-modal #create-requests-button").should("exist"); >+ >+ //Plugin backend came back with warning, Standard should be checked >+ cy.get("input[name='auto_backend_0']").first().should("not.be.checked"); >+ cy.get("input[name='auto_backend_0']").eq(1).should("be.checked"); >+ }); >+ >+ it("AutoILLBackendPriority: Backend success", function () { >+ // ILL toolbar >+ cy.visit("/cgi-bin/koha/ill/ill-requests.pl"); >+ cy.get("#ill-batch-backend-dropdown").should("not.exist"); >+ cy.get(".ill-toolbar a.btn-default") >+ .contains("New ILL requests batch") >+ .click(); >+ cy.wait("@get-batchstatuses"); >+ >+ // Modal >+ cy.get("#ill-batch-modal").should("be.visible"); >+ cy.get("#ill-batch-modal #button_create_batch") >+ .should("exist") >+ .and("be.disabled"); >+ >+ // Create a batch >+ cy.get("#ill-batch-modal #name").type("second test batch"); >+ cy.get("#ill-batch-modal #batchcardnumber").type("42"); >+ cy.get("#ill-batch-modal #branchcode").select("Centerville"); >+ cy.get("#ill-batch-modal #button_create_batch") >+ .should("exist") >+ .and("not.be.disabled"); >+ cy.get("#ill-batch-modal #button_create_batch").click(); >+ cy.get("#ill-batch-modal #add_batch_items").should("be.visible"); >+ >+ // Add identifiers + Mock plugin (pubmedid) API responses >+ let pubmedid = "123"; >+ cy.intercept( >+ "GET", >+ "/api/v1/contrib/pubmed/esummary?pmid=" + pubmedid, >+ { >+ statusCode: 200, >+ body: pubmedid_metadata_response, >+ } >+ ).as("get-pubmedid-metadata"); >+ cy.intercept("POST", "/api/v1/contrib/pubmed/parse_to_ill", { >+ statusCode: 200, >+ body: parse_to_ill_response, >+ }).as("get-parse_to_ill"); >+ cy.intercept( >+ "GET", >+ "/api/v1/contrib/pluginbackend/ill_backend_availability_pluginbackend*", >+ { >+ statusCode: 200, >+ body: { success: "" }, >+ } >+ ).as("get-backend_availability_response"); >+ >+ cy.get("#ill-batch-modal #identifiers_input").type(pubmedid); >+ cy.get("#ill-batch-modal #process-button") >+ .contains("Process identifiers") >+ .click(); >+ cy.wait("@get-pubmedid-metadata"); >+ cy.wait("@get-parse_to_ill"); >+ cy.wait("@get-backend_availability_response"); >+ cy.get("#identifier-table .dt-column-title") >+ .contains("Auto backend") >+ .should("exist"); >+ cy.get("#ill-batch-modal #create-requests-button").should("exist"); >+ >+ //Plugin backend came back with success, PluginBackend should be checked >+ cy.get("input[name='auto_backend_0']").first().should("be.checked"); >+ cy.get("input[name='auto_backend_0']").eq(1).should("not.be.checked"); >+ }); >+}); >-- >2.39.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 41249
:
189619
|
189620
|
189621
| 189622