package Ġorg . learning . by . example . pet store . reactor . dto validator Ċ Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġreactor . test . Step Verifier Ċ import Ġjavax . validation . Validation Ċ import Ġjavax . validation . Validator Ċ import Ġjavax . validation . Validator Factory Ċ import Ġjavax . validation . constraints . Min Ċ import Ġjavax . validation . constraints . NotNull Ċ Ċ internal Ġclass ĠD TO Validator Test Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfactory : ĠValidator Factory Ġ= ĠValidation . build Default Validator Factory () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalidator : ĠValidator Ġ= Ġfactory . validator ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠONE _ ERROR Ġ= Ġ" Invalid Ġ. *, Ġ.* \\ ." ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTWO _ ERRORS Ġ= Ġ"$ ONE _ ERROR Ġ$ ONE _ ERROR " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠObject To Validate ( ĊĠĠĠĠĠĠĠ Ġ@ field : Min ( 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġfield : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ field : NotNull ĊĠĠĠĠĠĠĠ Ġval Ġother Field : ĠString ? ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` validate Ġan Ġobject Ġshould Ġreturn Ġa Ġmono Ġerror Ġwith Ġtwo Ġmessages `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdto Validator Ġ= ĠD TO Validator ( validator ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidate Ġ= Ġdto Validator . validate ( Object To Validate ( 4 , Ġnull )) ĊĊĠĠĠĠĠĠĠ ĠStep Verifier . create ( validate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Error Matches Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġis ĠInvalid Dto Exception ) Ġ&& Ġ( it . message !!. matches ( Regex (( TWO _ ERRORS )))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` validate Ġan Ġobject Ġshould Ġreturn Ġa Ġmono Ġerror Ġwith Ġone Ġmessage `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdto Validator Ġ= ĠD TO Validator ( validator ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidate Ġ= Ġdto Validator . validate ( Object To Validate ( 4 , Ġ" hello ")) ĊĊĠĠĠĠĠĠĠ ĠStep Verifier . create ( validate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Error Matches Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġis ĠInvalid Dto Exception ) Ġ&& Ġ( it . message !!. matches ( Regex (( ONE _ ERROR )))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` validate Ġan Ġobject Ġshould Ġreturn Ġthe Ġinput Ġobject `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdto Validator Ġ= ĠD TO Validator ( validator ) ĊĠĠĠĠĠĠĠ Ġval Ġobject To Validate Ġ= ĠObject To Validate ( 4 5 , Ġ" other Ġvalue Ġ") ĊĠĠĠĠĠĠĠ Ġval Ġvalidate Ġ= Ġdto Validator . validate ( object To Validate ) ĊĊĠĠĠĠĠĠĠ ĠStep Verifier . create ( validate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Next Matches ( object To Validate :: equals ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. expect Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. verify () ĊĠĠĠ Ġ} Ċ } Ċ