diff --git a/tests/x-platform/mx_createjob.test.sas b/tests/x-platform/mx_createjob.test.sas
index 187a329..cb427ba 100644
--- a/tests/x-platform/mx_createjob.test.sas
+++ b/tests/x-platform/mx_createjob.test.sas
@@ -8,9 +8,13 @@
SAS Macros
@li mx_createjob.sas
@li mp_assert.sas
+ @li mf_getuniquefileref.sas
**/
+/**
+ * Test 1 - Basic job creation with default parameters
+ */
filename ft15f001 temp;
parmcards4;
data example1;
@@ -18,10 +22,279 @@ parmcards4;
run;
%put Job executed successfully;
;;;;
-%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob,replace=YES)
+%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob1,replace=YES)
%mp_assert(
iftrue=(&syscc=0),
- desc=No errors after job creation,
+ desc=Test 1: No errors after basic job creation,
+ outds=work.test_results
+)
+
+/**
+ * Test 2 - Job creation with custom description
+ */
+filename ft15f001 temp;
+parmcards4;
+ data example2;
+ set sashelp.cars;
+ run;
+;;;;
+%mx_createjob(
+ path=&mcTestAppLoc/jobs,
+ name=testjob2,
+ desc=Custom job description for testing,
+ replace=YES
+)
+
+%mp_assert(
+ iftrue=(&syscc=0),
+ desc=Test 2: Job created with custom description,
+ outds=work.test_results
+)
+
+/**
+ * Test 3 - Job creation with precode
+ */
+filename precode1 temp;
+data _null_;
+ file precode1;
+ put '%let testvar=PreCodeValue;';
+ put '%put &=testvar;';
+run;
+
+filename ft15f001 temp;
+parmcards4;
+ data example3;
+ set sashelp.class;
+ precode_var="&testvar";
+ run;
+;;;;
+%mx_createjob(
+ path=&mcTestAppLoc/jobs,
+ name=testjob3,
+ precode=precode1,
+ replace=YES
+)
+
+%mp_assert(
+ iftrue=(&syscc=0),
+ desc=Test 3: Job created with precode parameter,
+ outds=work.test_results
+)
+
+filename precode1 clear;
+
+/**
+ * Test 4 - Job creation with multiple code filerefs
+ */
+%let code1=%mf_getuniquefileref();
+%let code2=%mf_getuniquefileref();
+
+filename &code1 temp;
+data _null_;
+ file &code1;
+ put 'data work.part1;';
+ put ' set sashelp.class(obs=5);';
+ put 'run;';
+run;
+
+filename &code2 temp;
+data _null_;
+ file &code2;
+ put 'data work.part2;';
+ put ' set sashelp.class(firstobs=6);';
+ put 'run;';
+run;
+
+%mx_createjob(
+ path=&mcTestAppLoc/jobs,
+ name=testjob4,
+ code=&code1 &code2,
+ replace=YES
+)
+
+%mp_assert(
+ iftrue=(&syscc=0),
+ desc=Test 4: Job created with multiple code filerefs,
+ outds=work.test_results
+)
+
+filename &code1 clear;
+filename &code2 clear;
+
+/**
+ * Test 5 - Job creation with both precode and multiple code files
+ */
+%let pre1=%mf_getuniquefileref();
+%let pre2=%mf_getuniquefileref();
+%let main1=%mf_getuniquefileref();
+
+filename &pre1 temp;
+data _null_;
+ file &pre1;
+ put '%let globalvar1=Value1;';
+run;
+
+filename &pre2 temp;
+data _null_;
+ file &pre2;
+ put '%let globalvar2=Value2;';
+run;
+
+filename &main1 temp;
+data _null_;
+ file &main1;
+ put 'data work.combined;';
+ put ' var1="&globalvar1";';
+ put ' var2="&globalvar2";';
+ put ' output;';
+ put 'run;';
+run;
+
+%mx_createjob(
+ path=&mcTestAppLoc/jobs,
+ name=testjob5,
+ precode=&pre1 &pre2,
+ code=&main1,
+ desc=Job with multiple precode and code files,
+ replace=YES
+)
+
+%mp_assert(
+ iftrue=(&syscc=0),
+ desc=Test 5: Job created with multiple precode and code files,
+ outds=work.test_results
+)
+
+filename &pre1 clear;
+filename &pre2 clear;
+filename &main1 clear;
+
+/**
+ * Test 6 - Job creation with special characters in code
+ */
+filename ft15f001 temp;
+parmcards4;
+ data example6;
+ length text $200;
+ text='Special chars: & % $ # @ !';
+ output;
+ text="Quotes: 'single' and ""double""";
+ output;
+ run;
+ %put Test with special characters;
+;;;;
+%mx_createjob(
+ path=&mcTestAppLoc/jobs,
+ name=testjob6,
+ desc=Job with special characters in code,
+ replace=YES
+)
+
+%mp_assert(
+ iftrue=(&syscc=0),
+ desc=Test 6: Job created with special characters in code,
+ outds=work.test_results
+)
+
+/**
+ * Test 7 - Job creation with macro code
+ */
+filename ft15f001 temp;
+parmcards4;
+ %macro testmacro();
+ data example7;
+ set sashelp.class;
+ where age > 12;
+ run;
+ %mend testmacro;
+
+ %testmacro()
+;;;;
+%mx_createjob(
+ path=&mcTestAppLoc/jobs,
+ name=testjob7,
+ desc=Job containing macro definitions,
+ replace=YES
+)
+
+%mp_assert(
+ iftrue=(&syscc=0),
+ desc=Test 7: Job created with macro code,
+ outds=work.test_results
+)
+
+/**
+ * Test 8 - Job creation with empty code (edge case)
+ */
+filename ft15f001 temp;
+data _null_;
+ file ft15f001;
+ put '/* Empty job for testing */';
+run;
+
+%mx_createjob(
+ path=&mcTestAppLoc/jobs,
+ name=testjob8,
+ desc=Job with minimal code,
+ replace=YES
+)
+
+%mp_assert(
+ iftrue=(&syscc=0),
+ desc=Test 8: Job created with minimal code,
+ outds=work.test_results
+)
+
+/**
+ * Test 9 - Job creation with long code block
+ */
+filename ft15f001 temp;
+data _null_;
+ file ft15f001;
+ put 'data work.longtest;';
+ do i=1 to 50;
+ put ' var' i +(-1) '=' i ';';
+ end;
+ put ' output;';
+ put 'run;';
+run;
+
+%mx_createjob(
+ path=&mcTestAppLoc/jobs,
+ name=testjob9,
+ desc=Job with many variables,
+ replace=YES
+)
+
+%mp_assert(
+ iftrue=(&syscc=0),
+ desc=Test 9: Job created with long code block,
+ outds=work.test_results
+)
+
+/**
+ * Test 10 - Replace existing job (replace=YES)
+ */
+filename ft15f001 temp;
+parmcards4;
+ data example10_v1;
+ set sashelp.class;
+ run;
+;;;;
+%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob10,replace=YES)
+
+/* Now replace it */
+filename ft15f001 temp;
+parmcards4;
+ data example10_v2;
+ set sashelp.cars;
+ run;
+;;;;
+%mx_createjob(path=&mcTestAppLoc/jobs,name=testjob10,replace=YES)
+
+%mp_assert(
+ iftrue=(&syscc=0),
+ desc=Test 10: Job replaced successfully with replace=YES,
outds=work.test_results
)