From 5104eb7b33c386b6df7508405917408855e1468c Mon Sep 17 00:00:00 2001
From: Christian Heller <c.heller@plomlompom.de>
Date: Sun, 5 May 2024 06:00:43 +0200
Subject: [PATCH] Improve Todo tests.

---
 tests/__pycache__/__init__.cpython-311.pyc    | Bin 159 -> 0 bytes
 tests/__pycache__/conditions.cpython-311.pyc  | Bin 7905 -> 0 bytes
 tests/__pycache__/days.cpython-311.pyc        | Bin 9381 -> 0 bytes
 tests/__pycache__/misc.cpython-311.pyc        | Bin 12040 -> 0 bytes
 tests/__pycache__/processes.cpython-311.pyc   | Bin 23173 -> 0 bytes
 tests/__pycache__/test_days.cpython-311.pyc   | Bin 10170 -> 0 bytes
 tests/__pycache__/todos.cpython-311.pyc       | Bin 31699 -> 0 bytes
 tests/__pycache__/utils.cpython-311.pyc       | Bin 20337 -> 0 bytes
 .../versioned_attributes.cpython-311.pyc      | Bin 10579 -> 0 bytes
 tests/todos.py                                |  72 +++++++++---------
 tests/utils.py                                |   2 +-
 11 files changed, 36 insertions(+), 38 deletions(-)
 delete mode 100644 tests/__pycache__/__init__.cpython-311.pyc
 delete mode 100644 tests/__pycache__/conditions.cpython-311.pyc
 delete mode 100644 tests/__pycache__/days.cpython-311.pyc
 delete mode 100644 tests/__pycache__/misc.cpython-311.pyc
 delete mode 100644 tests/__pycache__/processes.cpython-311.pyc
 delete mode 100644 tests/__pycache__/test_days.cpython-311.pyc
 delete mode 100644 tests/__pycache__/todos.cpython-311.pyc
 delete mode 100644 tests/__pycache__/utils.cpython-311.pyc
 delete mode 100644 tests/__pycache__/versioned_attributes.cpython-311.pyc

diff --git a/tests/__pycache__/__init__.cpython-311.pyc b/tests/__pycache__/__init__.cpython-311.pyc
deleted file mode 100644
index 61bbc59d28896b1aae02ae323b761c1ce9c15bbf..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 159
zcmZ3^%ge<81k55#X(0MBh=2h`DC095kTIPhg&~+hlhJP_LlF~@{~09t%Sb;XKQ~ps
zASXXpzo0ZJCo?&|D77HJ7%WnfSe&h2l3H9+tREkrnU`4-AFo$X`HRCQH$SB`C)KWq
a6=(#=l45=!@qw9<k?{iqj3{CTiU9!nRU_U2

diff --git a/tests/__pycache__/conditions.cpython-311.pyc b/tests/__pycache__/conditions.cpython-311.pyc
deleted file mode 100644
index d671a082995580256e7bbfbd44942bda600eaaad..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 7905
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

diff --git a/tests/__pycache__/days.cpython-311.pyc b/tests/__pycache__/days.cpython-311.pyc
deleted file mode 100644
index fcbd24a8309518e462ded2f8f38b8981e01aaaad..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 9381
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
YQ6;{E$9-uI&Hd0iq8{x+z_#pv04pE)&j0`b

diff --git a/tests/__pycache__/misc.cpython-311.pyc b/tests/__pycache__/misc.cpython-311.pyc
deleted file mode 100644
index edb0671070f8533567c22209a9bc8388e42685d0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12040
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

diff --git a/tests/__pycache__/processes.cpython-311.pyc b/tests/__pycache__/processes.cpython-311.pyc
deleted file mode 100644
index 4f4c7f10e1ab4079c040f28cc6c0a605611825e8..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 23173
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

diff --git a/tests/__pycache__/test_days.cpython-311.pyc b/tests/__pycache__/test_days.cpython-311.pyc
deleted file mode 100644
index 61f606c8ea11be55fda957102ade132d9fd3a76d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10170
zcmc&4ZA=`;b@y)XZVv9u*<kS5d>oErxWpVBU;{ST4iFp@gR7Xf3W|C<->&gF_d#}-
z#J--T{75AdMGciwg{rp1kH{r*TKQL-N>!DwO8L2KZDn+lrASq!`d6{+N|9AneQ)+|
z+1)!VAa+>x9<%e_%$u2=_c{AJzrTusE56%tVW5^_{(%pr%T+8q_yZI^Vt8hn;aT31
zV$+Uk2a9EA%9-Y-Ia=mYuC!~~Ma!;~JMEeFq{%d)&+e2rT{T^muAZ)@&z_Vo?Vt9u
zjDtDF@Z=qa_X>_1PKLP&KmD5CL2*@ps}?*qTn)wf0OuEo4Hw{doMXZ@xt&vjB!~F;
z6)BX?@^dL6au0hBvju{fk+>v4dB;mrQ$HHXW->xTPG&QR<>Rs-C(}aMQP@$U{Ap6Y
zI67R|Wqv*<h;IraP&r5AR|?f~7J0?6HS`jADW2g|0{`OWgfNReCyMi;|JdTgg9A|b
zh!L1+7FO56v(rxA@eVW1@lJp)o&)IST`(Vap&EHh=i(V@bofyiSeE7$k`WQgWaW@3
zyfK#)lbM;&=x|69<hj{MqQnbXdf<mE{NR5M<eO)f;Gz7I0b9CmK>M3UABP#1kxTmm
zNO;zYhqvp%zZ=lQO`{i<$y7hXL>Y;D%W>KHD)Sc0GOt2U?2{OQW7|jI-1ZT0+dcx<
z_a1>E`K6tQ|7Gvm6Yu6dyiF5W_9C&4;SyJBYu}B$10>3uYe0z#fh4s_peJM@bRjFI
z<8q|nypYXK-opXqs=B+ndpo+iJ9@fuwWV@bG}PU5w5tp5<i9|s?xB1<Dw0M!x}srM
z!55b#L6l#KCnZ4=QOSw~K%rW%fANjEcuGV``h+cTl90L}VJD$SJ)IY`X`ypAl}&ff
z&Ye#s6ERVk%}TUJj!Un1QgNpcl+6_>GJB=41M6Zi6RLis++LhnQCCE)I6rWaegUHS
zHuJ52=N*6ZZGZFMTRK&Lm*($UWms<m1$TWl3$Ay^-yfeJUv-u$Dds-XJTwT`n%GL;
zefOQMhCWtiT93GTWXipJ`u)@Mr;({%NioQ@9+{fzD8dGcOzl*anbu<CT4c(;JNEwA
z{1`ITD=7w<)*@3=9Yxqck*S@kGSg;k+>A_ps;^1&H7UL(<g3?HB=T)WzNR{guz@09
zJ5^=AZP>UC_$q;CRo_9)cTn*iM8-OTVv%thGB(vwgbfrK+o`@KzB^>kZL;V3o}~lJ
z>~d5Mc4)zl-%Ga!)y|U|-ltVEu90!2bW2mP9e*3>bN-1t=J_jo%=1NK;DvtY7yaA|
zgPt!=umHbo3Jec8zZ~F(hdf^~EW+l%$WiB4N4b&Xp08OJVM}22nDgsn+~^6<-yAGJ
zi`jDn6KeMU2!)Rr*)V722J9+p!P<<=Rfh#@Q~Xz*d1s!@J7%0$IWVmzF2J^UnH5&v
zrna$d-Z|qeQ&$|QD_1UnLXGMw5{sqeSS%v$f=*3pr`uHSnG8Fr!V&9$sNj~eqAc)X
zmspRF94L+`h20ePP$)^Lk3x8f4M-L+R0lQ(w<6bAQLz-U`=E{VGXQTh|E$@yFsRmq
zw3^U7cX!=~l|bDBzc{MYw9a!Y#_p+K;(pV3t#O%K=5LKEZ38Mfs*$5g>3#ql7|Z*`
zVbk~f6DT~!tudJxyW?`na8}Bl7v2f$&lMd?T>rNO;dNNSNXa_%bVU0K?sIb)sKj;0
zCD*mRr${R9hALgd+n2UTvCh&KvCm-hFaXfn#yZt5zNQAB)9~)T^^!`4G%}==ZgD?Q
zPli1O5{qTxX(1LXRK;StCk$m@EQS`Si1EZ?d^Qn_iF=@t*oxpFfKM3O3mviO!&(Gr
z%cOAtZySFrT#v%_ta3ir%j_y+f{kw1u~o(Z0f+1ODpL-0HrROre#TXjpv}9<y1y=>
zv9s(HG{JPI{1^IOf2Z)QY}zYpdn3<WGV1O7#4few9)K43t+~-loH0jJ!Q8u*{xOcS
zF&@xmHZJB7Y;6wf1qd5jADbStug`jYn@7#tG^`o7&WxNq_o>So652WQECy7$T0@_n
z*ZrpUaAcC|RB<o7l_`kg+zC;@c+O=O=^}N(!=H~OAaVrvEe?U;`VwAjP?T_eYp!`^
zMeOsyQu;RllY}qUU6-!?e7X12!Ot4imNBhmOeLo@a!Mhm?vm>HGb#ycBzT83-zLqA
z^0mB54r%0&LJqCzQbR}F4K`lew>0(fYha9nC$-?o`(XQrS+w@UAhQS!&9Ydx8S3km
zcznYt!3i}up#>+9(OJsqEM;VcRP-y$=wCpuKUHhZR<_X~hlVvMlS9WA+Bmn+hFLO6
z_L`C~`yXoo&iW%>&!+(C+hYGbXO*X?z`^y@Ik;^c(C;csT6~W+^4R)!&al=Rs?oRl
z28gw<r|<^6<s6>q`czr_pJA-ekYp;^e%ShawN(nQau%%5hILu6ejC=EcmI&m$nW55
zJ`Gsy5qkM~F7L{_XKXv&I&ZmpP3~_%@uu-;o0BK+`9bHj)B3jZp7Pzz?*bcJn>%jU
z*mx?{9zGNjq*)=6goi7kWCrq;GjWlZLULA5z=-k845VR_DOtcQrXJx?Yb;`L0l8L2
zJWLC^oz^SO1eDG~Q>4d#lrZejX)t&yIq;CP={1!Po61Lk9^C;`RUf(rUKnL6HWQzf
zU{o%e{1y9vZZhoF<F0OG7)3xMFel7e#B5fW&=^c?LR2$?763E=>!t88g-2*_5<09j
zA~S+ApAnQnkGVZGAhY`vfH?vUr9aa=&qjkW;`_k+o_FEEhlf<sqLCJbw16YA(Yj*j
zUwf@#sqW)OH5k!?k(Is8OWYE#1fNGIpaY$a4)irT3|HfNk$(BI8tm7C{TpwgbiS+x
z&uGCjTWzw~h=VfaJIV&7biSYlhqd4^uvn}|>Q<aWD^8*HvD6!!wVA;Zw~+yr<{aFI
z!)e0dG~sZXzTZo>zC2jkmFGJlIkYzlDWSbl;IcRRt^O{TM{gZaf_?X04)4H21^~o!
z-huzPnVogNe)(4uA5N%&{aRrEylaK{Kd5@IYN7YTL6w9w5>iOW<d^E(#8`mOfBg9=
zm7LMY8KrcWdxl1wkJ@nk=*=7@Y$nd%N<?Cc2W@^49EH$>o7}U84xAN*H))181cyU3
zlamoH%d|#UbyUefHUZMj(P9}=&)xl{au4K|C&Qd68u1!^7Q9AhWwA(up))c<a^~Xs
ztXNDGKT}bCSczUmO`^y9raixwd+5EDQpt!$Mieq)dcl<mfCg^*Y9Toxwn5)wI|58@
zh|eMDK`@BmBmxYK^!xzkq{NOAz*f>Z0Oe^2uM1-g6RdA_O+bwaj<HVHC{$I3IzMEU
zfS+-de3A#4CaHXEhnb>6jj^iw8DZ`)tq8?u;>ir;@UnAa2+tkihz^esJ1^3+LNU~i
z+X7A^;^*;j(t31<83XheAG`)7Yg7c@e`#c<$mN&JRW{F7_VV!<*J{J5KZ-ocF6aa0
zuI#dUB$wPJ0*Kkc>X;Az9y5wEnE@I6;YU&Cg*~xR*y0RW<@Mi)EoRuJH)4w|wrLc$
z_+y(!VT)3>X%y9E^7N!+q-=NcKG0wOTpOyZP$y)wsiEpj#8U#~wngyQrP*vo5<-bA
zFGz4udg{fg9EXJWz5)5q)nV}jo}~`;bai!swSqh6U#lHEdp5ZM$|~nII?e4iiYFvF
zF3Lj(f!R>5#a>N)Y>K0$T-Z*aAI~C7N(GOHizBGDli~p{m>*O%1=mGcp5+TWbY&ci
z^E^ybDtPc?3Rnl-eXpJo<kIZnG)0cfbKv;vrzu|SfTjW^%o~+XPpV~T4SDq#F48`m
zNzn6uI`TX;k{-gUz`04?{-x26$F&1PO5O2!?+V#@hXikv;Nr7O^(txCNV`JX4I{f4
zyc3Mv4o1{qmxg!WXSK#DfT^j{+NY9!jr1#|f3t0uT2vC%NK_%wO*h@Ak`9e@D5PVv
zO_kPul?-TPKp_L0Z#!J>j%;|PAg4N^kqL!NY@Y8CmGo((Pa%C9YO5dB6kQ=#MOWwy
z><qgDG>ml!Vz_PeGog|Tw8EWGxD%_~E<9!_2fAB>Z70J!sk2oebD5-!8&yQ-qEL-n
zIg&^vg^Wz4gMOj_A2$Jo6q%EgDM>_2FXER(1wVeJfZrrUK<p(w?8Ok*gh(f)g#Psd
zJwKw}8=ZmGt$RcU^`oid;w#Vrx--&lfDnVQ><ZJMFbykAlVZJBn1hP-u0(TGVJh4!
z%yUYmyS#qYy^n>}EC&ni_p$cj8fvhYMW3=VT!`GKn1^P3hTV;wmjk69dWY(V6>#)5
F{vWShvq}H}

diff --git a/tests/__pycache__/todos.cpython-311.pyc b/tests/__pycache__/todos.cpython-311.pyc
deleted file mode 100644
index 6aa08151a43688a894e37888188609077b68efdc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 31699
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

diff --git a/tests/__pycache__/utils.cpython-311.pyc b/tests/__pycache__/utils.cpython-311.pyc
deleted file mode 100644
index 5c85fd88cb170e68dd44f2a2701a756976989410..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 20337
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

diff --git a/tests/__pycache__/versioned_attributes.cpython-311.pyc b/tests/__pycache__/versioned_attributes.cpython-311.pyc
deleted file mode 100644
index 7a33722119492d1373fd69099c33e3a4370e313e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 10579
zcmdT~U2NOd6(%K0qHOu6wkt=m<uZwvSdJ~*Q5`3#m&|tDCXKCSiPJS&H$pb)pH4px
zNjJ6T41OpuweV1PNKv;)F{3Ct55)k#6!2po_pkw^K)?b40|T}KE6@iA&VZsX+c~5q
zk@|6+WgWIF>hSX3%X2T!J@>ok9P)QHHB|(p&%Zu9-O@}Df5nSja_(pLG|0S1a72XQ
zNX`}`<F<&6#JoLbk5ds!&r>l++!1l;c}L6{cST%!-Wj9g?ua{H6{*s%U9sx8C*pxT
z9jW2mky;z^0>M?iL2%W)hp+SHdM7@y6U3+RH&UctZ|8w_HN35;?kT;l7V7GFS5aMq
zURMuwPw@>!b&XuZO(M{kI(>YC7bWH;UJ&P!37%tyBuSW?T#$H?nM*LzEYCzIMM;QG
zNx?61JONUp@s^RO$V1*C#&~`n3%RJoOLK87tj#s}@tib!c{pIx8uA_F`D-;3SI0+h
zP7IA-XP+ORfZN=|z;isw@v+ozszz>%4o!?Q6GOveqs(i$;ju6-Nn|>z7-l{y@Ck{z
z8lD(^Ve|$Q{^0}@zBM-11ywi<QHsXrnTgStq1aUQS~Rx6mlj{Yadmv?#%<=>=xwIM
z;M`SU6Q~M2SM^<w37&V%GSowiX=-0Z^b@&%vDW~Z_XwVdkf69Wj*Qqj8%(y{n3wCi
z+$I+1`P9JWg?M~1Kf!Z}8RqUROe2V!iANWi1(7dkMt<VNU^qZ&G|MKUah_$hDwd5W
zxrG?!JuG`?AsXASaj`6yoMPGE6MHzeZ!Y%CCgXh1d@LF7nO~TU%}ucaKc5u!5-BSF
zyhoqjp2BoT^V%4kUlgi=iB4J|BYJ@>=YLshNX{L?Q@Mr~0okAw(_SZ#A_2KL>J3=W
zoQre7*#T!KoSmE<1V?MtsL<lgXhOU^obu}zOd=^U0)J;=PC&U`9%e*dT9^-NP65tB
zB0QCw59|^F1sC+*A1UlwGSwllaCYnRyhkpP>!voy!bs2(%0JE5k;D?Qo_nxdBmFG7
z3YSadtI)5J)*ZQ=`TPl7e3~z?_QBa_$WNe;PxJkdL`Cj7=*;uN%z@mg0`T3l{jWdw
zV@vyq<gsKcmU~6{IIMGafL_!UrshfYf^*CqeuRhD-2d1JX9&*uQHkzWl%eatFGCn1
z{r@;Zjs#$Irx?USCJ4~i5nv|y+30IvH$+8-e|?^xl6Wo{)(DLp5)e5wayVcYjzG>J
zxa>9Za)2r-6OKYffEEzHG&``?s-vRF3(_cVEgBV@6D7?x3p6P#YEFGe7d7hV{GzBi
z#iRh;!d^#-d~8~ya0AiYd4oVi5M~%gz&%oH!R>}EHBDIPG<C{^`N0Dk9tTe1R{+S%
z#6O%w{qgno4co?uQrD~2^`@yT?RlGii(YMfvu33xT?3cf^pOmG<in;l?m=w3tuNEo
zr?iFCwvgg`R`or*DQ@x#J*d)yGCc_Vp7yOZJ!swbb!L2>imyxcbtz5VYE$<{RBh@_
zyPt@C$zXaiZ9Pg`p9(|rol$*fHv3dx|K_4X52^H!Ob`8~(!+SysgFI|Oen*I6sBKg
z`W4?<)pvHQacgR;N})$odPJs29{cvXE%+()6_vgs(^qz#guAA^Fe~&gpBpm{g&tSw
zahV>kD6d0v048wg7KUYq$6Zz5;r|YqL+$WH`5hiGIls@sZV!3$z6;oey_6)5DuZ2l
zE5Y2{!k;=c|C0ShM*wH)ynz4-{w^YcVf%>8{v{vd<6xwBF-d{p`040EOk$D=hL6un
zi@~q}ZkGiMMgR+N)eEgaG^fEtKw~dp6L6ggCxD13p4<{{tF$tWn^T>KS;a=%=a4rK
zWSRJ)?pVn(Hr6ey#+LOdh3-`8PMPkkq)!JoO9K)dph40hZA8hW2?d?8+FIqcMWW#`
z_mfp`zyc%6TZo`}Wo;R-Q7jf|S)Dc6qPczvqEu%kG~D+S=&3uGU)Npr+*R&uebS;)
zI80Wh{jr~^$X0=o7O%r6l~M^u30K2@;+)o}0ekzqm}~0bK4Heo&s&L|Bo%~BJmI|2
z1y=VQk3DZiD8;#+c;1R|wNw)hmf?3YZ_dY-OOZa6%4Of4yJ(<!6wSFDmKz2ZKsp2t
z0OF-2b7z4U<{(ytW|bM+OCVjh`(_@_{x$vC*MGYxoC5X!@}H0bH3rV(rm5Kz$-5d2
zF{WwcCm=K#8-Oh;>EJK;v8W9Rg9Ke!;TVvBtFS9*)p;Y2jhZhewWkU-le~17=M(1o
zDRX^vTH*zEN<_T}GZB+vDju!0&qSrv$;0e1QE3Etil0?76nDIB_hauQ?kBdr-5GE9
zAL5F4Q1uR`tMgXcTGMZvKWJWWQGDI1uX{sO=#WZ>WI9x2SM7L@u08u;aJ!`|)6%81
z1l5+H;_XqrJ)5NJJ#$Egx!tZpmtW8|>6tfcS8CI>JFV>x#@-J<2yeHBGOeM{#+BA#
zwRKpgeLIClMf>EAw{>me!7JPTV8$O*{JpBbSMm0#-oDM_s<;0zLoAYteC&+k3#q=)
z=1qk@uhQpb`n;+8%40kPA7BNCzF+^|COi$Z7zV}jz*(q4Qi}v#R^fX{0!W@kQjbIr
zMWMGLH08)MkP#z5%+ae;GIeT~YIcOlU801ZaXP%agq75L9T#?q3dHCZdz^xQKIJx%
zy`MqRuS_wpTM*NZ*ufdKeMCkm-oZP0R|*zE0gQQ?vk$^uygO3Gxzofn2@x_+q?&Vc
zE{K$Q;7r50CQZCfMry%1tTMulq7ehWDGA>&5Zi??A%javEEhY=xrf-R4i=hc-)dw5
zghWI37ONXA5`3t=Z-Bf@TJ3JDeNf)owzk2jNx_mTZ#zK?1Ry<??9v#a+)o^7tz9Bm
z9Ic)tbA*F<HDAtw_4R7rHskCC@mu4Az$<SXaRdmP3V(^lzE)QVo$6B70T`yjAui1G
z0-Sj1*1YE8CfTWEBB4?I>->~P&n4z0R=g9_W2=CT=oK45a08~#18d#%-Z#TFH_J}N
zz$s^0!x&%IK~lH~?NUuT8s=vmV*|J5qfn#U)?Y6ZurA+pt+?K<d8_8lx|O<g9jw6>
zaEpBz+PBvJpj)9kRJuc^J9b(E8^@HEF14jAO{w&eou-rPl6q<&d+OX)yL#c;ABWTn
z;fHqe>FeYp0%@9Bai`%|YFndBbv^kT*m3XSEJJ~j%Ik$$4>-~^4<P2E=xc6K<rwPc
z8SEpkC*>__jQfI?!2N}nJ*D=FX{32QF?VI|$EtB8F+)Hk`QIAHW#Xr`7>!-Bai;j}
z44DGRyGO3nfdx|bxhu(S1|r%AJ{ziUNwRP=jidNEp<Vvo3SNpy3dMK-??|cA^Ul~T
zh*5+r#d75wfC$c1D=tKc%|T2KtT`~-?h11fpl=dhRs;p~b_E1<&1o$4FVU?IL)`5I
z)}YfZ=<6PRap4jW%`GJFvUg{BfrscCa5Zc&yKaMNRfy2+baElVX?AF6jkLAum{Km%
z27FSdiy-5m#<MUIaS60#na~45D{cgmRZjJu+5r2eQ=w0*^l6zsUD(+hvOYh?(0Vey
z9=UfY+k0;77{JES?*nQa{r*F{&3*9^0c2MvG(?$zY3*CJtJ3`?g>F~rcA0L^KHZ$I
z$~HFNAKY#XWEul<=W|;xe||@4ys9={-6cr(37w=zvL5eRXzk8}vuhoS=Xm<X^oxa&
zw5vx?Zw#qNgR-w@^JqTK2L{|hkMW(4W|LBThdw{1_Fk5KqdUH5)~giXY1MZcgyil9
zA-TKp*-WGqV9{VkK-kOt#{t%~w7(rBYzINLiBl!;%0qTBNJyrw9hPYxia7`_6ify)
zSXzO-2#8T$B?-0zNAZRLK-{dq7R#Fj=G%&cFC?*Y#0-Xy7eax)PQC*3ch7#00)RI?
zaiPy8%Ix4TnN1Y9(;TW?IaP^=C0t;FZqsPdvMx!VKuM*Slop=m(9vUaDuGicz^N;B
z*7#B)xc}mTofeXD7Jv@0bzVq<broBLFDAf!oCn8Q#23Pdg8M-GJd9jNTiqZNM&U9X
zs4a%tE7%I5)-bz<G4}!xt-iQZ-5b^%fah`1aF*>cKB2qE0fzy|)v;uh<2e@JfCw)l
zt9E4NFx+|cyiM+HM<vKD?l?7YNUSct@t4q{IHu$Fx5HgUL@xt{JKm0sCN*$ger_xq
z=vD(4w))fnpgP%n381U_Qo8yt2cUKkku8X*-MsDT$ap$78Wm5s>gksCBg?dZ>{gk+
zZDt_D3@FTbl{t@hTm~-<sp4r(UtL|udg`}5tr<`2+O73#YWu*JTWud!JR_=SMAnb|
z7Vu#sIKH=4e{kC$%J@TyzhCw5zb)DEwXXdHJmGDBe+J6@1FC;O@tsqB=MaZ4AP$4W
zXCa20*AJo%)Rpx}^&K3;C-5Q-UW7TOK`A7yj%A|>_<kWO!8bo(#A^*Ve>BEUz{fbO
z{=E%*bK-_D1b68cy>Jb4H;_rqzTH2?$6_oSAcYYq6%mzxV0Zun*c8btSn)0pF!&3<
zEY&Gfo!OK9>&f-x^4Mzos<?LRonNR8CuFK04u$H^)*V~EvP(G}*FnSw(%L2mY)Mwq
z<w2+TTZthz9Oo4L^C`C}?4ey$_(0?_ons2%!lBih*2(iIb>SQ^4cKS?{3lFbU7Gpe
zeM}E82|767Ooap02hXB#6IuxqNNxeqnu_M_`LQ1kO&Bv*6nwai_aON-{6!o}VOExj
z+`NR=<LmLFc?ro>NTEX6x)aM+@Mp*lS%m{ldfY>!7r=o;1QAez8l}haa3>Y?0H5wq
ziopeG4t#jrI5j_h0)!v@1PlIZ;Zq+2{cyk2s`CxGNdaA6;Uy#(Jkjicw#FwxdSpdc
zJ^eAQkNyokXndY@QHa8AsI1~R&|N!8l3AipCi=33U$!1u!Yf;ka&1n^gyqN**W_|X
zmN+I`k6p^;rDUREx88LG&P}^bBsq+jQkJgXUK8*C?4e!@Fi>biUm!u<OUY`-Lo9t%
ls7jGRY+6cIfiILkDpXC9cCvk!C?%`Ee2Arw%2eq}@h=j{PaXgO

diff --git a/tests/todos.py b/tests/todos.py
index 7fabfdb..7471565 100644
--- a/tests/todos.py
+++ b/tests/todos.py
@@ -9,6 +9,7 @@ from plomtask.exceptions import (NotFoundException, BadFormatException,
 
 class TestsWithDB(TestCaseWithDB):
     """Tests requiring DB, but not server setup."""
+    checked_class = Todo
 
     def setUp(self) -> None:
         super().setUp()
@@ -21,13 +22,40 @@ class TestsWithDB(TestCaseWithDB):
         self.cond2 = Condition(None)
         self.cond2.save(self.db_conn)
 
-    def test_Todo_by_id(self) -> None:
-        """Test creation and findability of Todos."""
-        process_unsaved = Process(None)
+    def test_Todo_init(self) -> None:
+        """Test creation of Todo and what they default to."""
+        process = Process(None)
         with self.assertRaises(NotFoundException):
-            todo = Todo(None, process_unsaved, False, self.date1)
-        process_unsaved.save(self.db_conn)
-        todo = Todo(None, process_unsaved, False, self.date1)
+            Todo(None, process, False, self.date1)
+        process.save(self.db_conn)
+        assert isinstance(self.cond1.id_, int)
+        assert isinstance(self.cond2.id_, int)
+        process.set_conditions(self.db_conn, [self.cond1.id_, self.cond2.id_])
+        process.set_enables(self.db_conn, [self.cond1.id_])
+        process.set_disables(self.db_conn, [self.cond2.id_])
+        todo_no_id = Todo(None, process, False, self.date1)
+        self.assertEqual(todo_no_id.conditions, [self.cond1, self.cond2])
+        self.assertEqual(todo_no_id.enables, [self.cond1])
+        self.assertEqual(todo_no_id.disables, [self.cond2])
+        todo_yes_id = Todo(5, process, False, self.date1)
+        self.assertEqual(todo_yes_id.conditions, [])
+        self.assertEqual(todo_yes_id.enables, [])
+        self.assertEqual(todo_yes_id.disables, [])
+
+    def test_Todo_saving_and_caching(self) -> None:
+        """Test .save."""
+        kwargs = {'id_': 1,
+                  'process': self.proc,
+                  'is_done': False,
+                  'date': self.date1}
+        self.check_saving_and_caching(**kwargs)
+        todo = Todo(None, self.proc, False, self.date1)
+        todo.save(self.db_conn)
+        self.assertEqual(todo.id_, 2)
+
+    def test_Todo_by_id(self) -> None:
+        """Test findability of Todos."""
+        todo = Todo(1, self.proc, False, self.date1)
         todo.save(self.db_conn)
         self.assertEqual(Todo.by_id(self.db_conn, 1), todo)
         with self.assertRaises(NotFoundException):
@@ -45,29 +73,6 @@ class TestsWithDB(TestCaseWithDB):
         self.assertEqual(Todo.by_date(self.db_conn, self.date2), [])
         self.assertEqual(Todo.by_date(self.db_conn, 'foo'), [])
 
-    def test_Todo_from_process(self) -> None:
-        """Test spawning of Todo attributes from Process."""
-        assert isinstance(self.cond1.id_, int)
-        assert isinstance(self.cond2.id_, int)
-        self.proc.set_conditions(self.db_conn, [self.cond1.id_])
-        todo = Todo(None, self.proc, False, self.date1)
-        self.assertEqual(todo.conditions, [self.cond1])
-        todo.set_conditions(self.db_conn, [self.cond2.id_])
-        self.assertEqual(todo.conditions, [self.cond2])
-        self.assertEqual(self.proc.conditions, [self.cond1])
-        self.proc.set_enables(self.db_conn, [self.cond1.id_])
-        todo = Todo(None, self.proc, False, self.date1)
-        self.assertEqual(todo.enables, [self.cond1])
-        todo.set_enables(self.db_conn, [self.cond2.id_])
-        self.assertEqual(todo.enables, [self.cond2])
-        self.assertEqual(self.proc.enables, [self.cond1])
-        self.proc.set_disables(self.db_conn, [self.cond1.id_])
-        todo = Todo(None, self.proc, False, self.date1)
-        self.assertEqual(todo.disables, [self.cond1])
-        todo.set_disables(self.db_conn, [self.cond2.id_])
-        self.assertEqual(todo.disables, [self.cond2])
-        self.assertEqual(self.proc.disables, [self.cond1])
-
     def test_Todo_on_conditions(self) -> None:
         """Test effect of Todos on Conditions."""
         assert isinstance(self.cond1.id_, int)
@@ -257,14 +262,7 @@ class TestsWithDB(TestCaseWithDB):
 
     def test_Todo_singularity(self) -> None:
         """Test pointers made for single object keep pointing to it."""
-        todo = Todo(None, self.proc, False, self.date1)
-        todo.save(self.db_conn)
-        retrieved_todo = Todo.by_id(self.db_conn, 1)
-        todo.is_done = True
-        self.assertEqual(retrieved_todo.is_done, True)
-        retrieved_todo = Todo.by_date(self.db_conn, self.date1)[0]
-        retrieved_todo.is_done = False
-        self.assertEqual(todo.is_done, False)
+        self.check_singularity('is_done', True, self.proc, False, self.date1)
 
     def test_Todo_remove(self) -> None:
         """Test removal."""
diff --git a/tests/utils.py b/tests/utils.py
index bb37270..fb7e227 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -68,7 +68,7 @@ class TestCaseWithDB(TestCase):
                                                                row)]
         self.assertEqual(sorted(content), sorted(db_found))
 
-    def check_saving_and_caching(self, **kwargs: Any) -> Any:
+    def check_saving_and_caching(self, **kwargs: Any) -> None:
         """Test instance.save in its core without relations."""
         obj = self.checked_class(**kwargs)  # pylint: disable=not-callable
         # check object init itself doesn't store anything yet
-- 
2.30.2