From 1c852515f57d8bdb0f47cad909395ad8dd65844b Mon Sep 17 00:00:00 2001 From: Allan Bowe Date: Fri, 21 May 2021 16:27:10 +0300 Subject: [PATCH] fix: adding more tests to mp_filtervalidate --- base/mp_abort.sas | 2 +- base/mp_filtervalidate.sas | 5 ++-- tests/base/mp_filtervalidate.test.sas | 42 +++++++++++++++++++++++---- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/base/mp_abort.sas b/base/mp_abort.sas index 174c0e9..37bcb4d 100644 --- a/base/mp_abort.sas +++ b/base/mp_abort.sas @@ -99,7 +99,7 @@ /* send response in SASjs JSON format */ data _null_; - file _webout mod lrecl=32000; + file _webout mod lrecl=32000 encoding='utf-8'; length msg $32767 debug $8; sasdatetime=datetime(); msg=cats(symget('msg'),'\n\nLog Extract:\n',symget('logmsg')); diff --git a/base/mp_filtervalidate.sas b/base/mp_filtervalidate.sas index fcad16b..4d6b1e8 100644 --- a/base/mp_filtervalidate.sas +++ b/base/mp_filtervalidate.sas @@ -78,7 +78,8 @@ run; data &outds; if &sqlrc or &syscc or &syserr then do; - REASON_CD=coalescec(symget('SYSERRORTEXT'),symget('SYSWARNINGTEXT')); + REASON_CD='VALIDATION_ERROR: '!! + coalescec(symget('SYSERRORTEXT'),symget('SYSWARNINGTEXT')); output; end; else stop; @@ -102,4 +103,4 @@ filename &fref1 clear; %let syscc=1008; %end; -%mend; +%mend mp_filtervalidate; diff --git a/tests/base/mp_filtervalidate.test.sas b/tests/base/mp_filtervalidate.test.sas index f8837e4..64d367e 100644 --- a/tests/base/mp_filtervalidate.test.sas +++ b/tests/base/mp_filtervalidate.test.sas @@ -6,6 +6,7 @@ @li mp_filtergenerate.sas @li mp_filtervalidate.sas @li mp_assertdsobs.sas + @li mp_assert.sas **/ @@ -41,14 +42,14 @@ run; %mp_filtergenerate(work.inds,outref=myfilter) %mp_filtervalidate(myfilter,sashelp.class,outds=work.results,abort=NO) %mp_assertdsobs(work.results, - desc=Valid filter, + desc=Empty filter, test=EMPTY, outds=work.test_results ) -/* invalid filter*/ +/* invalid filter - char var, num val */ data work.inds; infile datalines4 dsd; input GROUP_LOGIC:$3. SUBGROUP_LOGIC:$3. SUBGROUP_ID:8. VARIABLE_NM:$32. @@ -60,9 +61,40 @@ run; %mp_filtergenerate(work.inds,outref=myfilter) %mp_filtervalidate(myfilter,sashelp.class,outds=work.results,abort=NO) %let syscc=0; -%mp_assertdsobs(work.results, - desc=Valid filter, - test=EQUALS 1, +%let test3=0; +data _null_; + set work.results; + if REASON_CD=:'VALIDATION_ERROR' then call symputx('test3',1); + putlog (_all_)(=); + stop; +run; +%mp_assert( + iftrue=(&test3=1), + desc=Checking char var could not receive num val, outds=work.test_results ) +/* invalid filter - num var, char val */ +data work.inds; + infile datalines4 dsd; + input GROUP_LOGIC:$3. SUBGROUP_LOGIC:$3. SUBGROUP_ID:8. VARIABLE_NM:$32. + OPERATOR_NM:$10. RAW_VALUE:$4000.; +datalines4; +AND,AND,1,age,NE,"'M'" +;;;; +run; +%mp_filtergenerate(work.inds,outref=myfilter) +%mp_filtervalidate(myfilter,sashelp.class,outds=work.results,abort=NO) +%let syscc=0; +%let test4=0; +data _null_; + set work.results; + if REASON_CD=:'VALIDATION_ERROR' then call symputx('test4',1); + putlog (_all_)(=); + stop; +run; +%mp_assert( + iftrue=(&test4=1), + desc=Checking num var could not receive char val, + outds=work.test_results +) \ No newline at end of file