mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-11 14:20:05 +00:00
95 lines
2.8 KiB
TypeScript
95 lines
2.8 KiB
TypeScript
import SASjs from "@sasjs/adapter";
|
|
import { TestSuite } from "@sasjs/test-framework";
|
|
|
|
export const computeTests = (adapter: SASjs): TestSuite => ({
|
|
name: "Compute",
|
|
tests: [
|
|
{
|
|
title: "Start Compute Job - not waiting for result",
|
|
description: "Should start a compute job and return the session",
|
|
test: () => {
|
|
const data: any = { table1: [{ col1: "first col value" }] };
|
|
return adapter.startComputeJob("/Public/app/common/sendArr", data);
|
|
},
|
|
assertion: (res: any) => {
|
|
const expectedProperties = ["id", "applicationName", "attributes"]
|
|
return validate(expectedProperties, res);
|
|
}
|
|
},
|
|
{
|
|
title: "Start Compute Job - waiting for result",
|
|
description: "Should start a compute job and return the job",
|
|
test: () => {
|
|
const data: any = { table1: [{ col1: "first col value" }] };
|
|
return adapter.startComputeJob("/Public/app/common/sendArr", data, {}, "", true);
|
|
},
|
|
assertion: (res: any) => {
|
|
const expectedProperties = ["id", "state", "creationTimeStamp", "jobConditionCode"]
|
|
return validate(expectedProperties, res.result);
|
|
}
|
|
},
|
|
{
|
|
title: "Execute Script Viya - complete job",
|
|
description: "Should execute sas file and return log",
|
|
test: () => {
|
|
const fileLines = [
|
|
`data;`,
|
|
`do x=1 to 100;`,
|
|
`output;`,
|
|
`end;`,
|
|
`run;`
|
|
]
|
|
|
|
return adapter.executeScriptSASViya(
|
|
'sasCode.sas',
|
|
fileLines,
|
|
'SAS Studio compute context',
|
|
undefined,
|
|
true
|
|
)
|
|
},
|
|
assertion: (res: any) => {
|
|
const expectedLogContent = `1 data;\\n2 do x=1 to 100;\\n3 output;\\n4 end;\\n5 run;\\n\\n`
|
|
|
|
return validateLog(expectedLogContent, res.log);
|
|
}
|
|
},
|
|
{
|
|
title: "Execute Script Viya - failed job",
|
|
description: "Should execute sas file and return log",
|
|
test: () => {
|
|
const fileLines = [
|
|
`%abort;`
|
|
]
|
|
|
|
return adapter.executeScriptSASViya(
|
|
'sasCode.sas',
|
|
fileLines,
|
|
'SAS Studio compute context',
|
|
undefined,
|
|
true
|
|
).catch((err: any) => err )
|
|
},
|
|
assertion: (res: any) => {
|
|
const expectedLogContent = `1 %abort;\\nERROR: The %ABORT statement is not valid in open code.\\n`
|
|
|
|
return validateLog(expectedLogContent, res.log);
|
|
}
|
|
}
|
|
]
|
|
});
|
|
|
|
const validateLog = (text: string, log: string): boolean => {
|
|
const isValid = JSON.stringify(log).includes(text)
|
|
|
|
return isValid
|
|
}
|
|
|
|
const validate = (expectedProperties: string[], data: any): boolean => {
|
|
const actualProperties = Object.keys(data);
|
|
|
|
const isValid = expectedProperties.every(
|
|
(property) => actualProperties.includes(property)
|
|
);
|
|
return isValid
|
|
} |