Rovnaký výraz sa spustí nad každým prípadom. Testovacie údaje sú pevné, takže nemožno vynechať hranice ani chybové situácie.
Vysvetlené riešenie
Zobraziť celý výraz
has(order.shipping) && has(order.shipping.address) && has(order.shipping.address.country) && order.shipping.address.country in ['SK', 'CZ']
Prečo riešenie funguje
Kontroly prítomnosti sledujú štruktúru zvonka dovnútra.
Každé úspešné has() umožní bezpečne použiť cieľ ďalšej kontroly.
CEL prečíta hodnotu krajiny až po potvrdení všetkých troch úrovní.
in vykoná konečné rozhodnutie podľa povoleného zoznamu.
Čo dokazujú testovacie prípady
Povolená krajina: očakáva sa true (bool).
Nepovolená krajina: očakáva sa false (bool).
Chýbajúca adresa: očakáva sa false (bool).
Chýbajúce doručenie: očakáva sa false (bool).
Prípady sú zámerne rozdielne. Riešenie, ktoré prejde iba prvým prípadom, ešte nezapracovalo celé pravidlo.
Častá chyba
Výraz neprispôsobujte iba prvému úspešnému vstupu. Požiadavka je zapracovaná až vtedy, keď kladný, záporný aj hraničný prípad vytvoria určený výsledok.
Kontrolná otázka
Viete ukázať presnú časť riešenia, ktorá spôsobí zlyhanie každého nepravdivého testu? Ak dve rozdielne zlyhania závisia od rovnakej podmienky, vysvetlite prečo.
Hlavná myšlienka
Viete zoradiť kontroly has() od vonkajšej položky k vnútornej.
Zdroje
CEL-DEV — oficiálny prehľad CEL.
CEL-LANG — oficiálna definícia jazyka CEL pre operátory, typy, makrá, prítomnosť, reťazce a časové hodnoty použité v tejto úlohe.