mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-16 00:20:06 +00:00
fix(*): switch to file upload approach with large datasets and special characters
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import SASjs, { ServerType, SASjsConfig } from "sasjs";
|
||||
import SASjs, { ServerType, SASjsConfig } from "@sasjs/adapter";
|
||||
import { TestSuite } from "../types";
|
||||
|
||||
const defaultConfig: SASjsConfig = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import SASjs from "sasjs";
|
||||
import SASjs from "@sasjs/adapter";
|
||||
import { TestSuite } from "../types";
|
||||
|
||||
const stringData: any = { table1: [{ col1: "first col value" }] };
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import SASjs from "sasjs";
|
||||
import SASjs from "@sasjs/adapter";
|
||||
import { TestSuite } from "../types";
|
||||
|
||||
const data: any = { table1: [{ col1: "first col value" }] };
|
||||
@@ -12,7 +12,7 @@ export const sasjsRequestTests = (adapter: SASjs): TestSuite => ({
|
||||
test: async () => {
|
||||
return adapter.request("common/sendArr", data);
|
||||
},
|
||||
assertion: (res: any) => {
|
||||
assertion: () => {
|
||||
const requests = adapter.getSasRequests();
|
||||
if (adapter.getSasjsConfig().debug) {
|
||||
return requests[0].SASWORK !== null;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import SASjs from "sasjs";
|
||||
import SASjs from "@sasjs/adapter";
|
||||
import { TestSuite } from "../types";
|
||||
|
||||
const specialCharData: any = {
|
||||
@@ -102,86 +102,86 @@ export const specialCaseTests = (adapter: SASjs): TestSuite => ({
|
||||
);
|
||||
},
|
||||
},
|
||||
// {
|
||||
// title: "Other special characters",
|
||||
// description: "Should handle other special characters",
|
||||
// test: () => {
|
||||
// return adapter.request("common/sendArr", moreSpecialCharData);
|
||||
// },
|
||||
// assertion: (res: any) => {
|
||||
// return (
|
||||
// res.table1[0][0] === moreSpecialCharData.table1[0].speech0 &&
|
||||
// res.table1[0][1] === moreSpecialCharData.table1[0].pct &&
|
||||
// res.table1[0][2] === moreSpecialCharData.table1[0].speech &&
|
||||
// res.table1[0][3] === moreSpecialCharData.table1[0].slash &&
|
||||
// res.table1[0][4] === moreSpecialCharData.table1[0].slashWithSpecial &&
|
||||
// res.table1[0][5] === moreSpecialCharData.table1[0].macvar &&
|
||||
// res.table1[0][6] === moreSpecialCharData.table1[0].chinese &&
|
||||
// res.table1[0][7] === moreSpecialCharData.table1[0].sigma &&
|
||||
// res.table1[0][8] === moreSpecialCharData.table1[0].at &&
|
||||
// res.table1[0][9] === moreSpecialCharData.table1[0].serbian &&
|
||||
// res.table1[0][10] === moreSpecialCharData.table1[0].dollar
|
||||
// );
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// title: "Wide table with sendArr",
|
||||
// description: "Should handle data with 10000 columns",
|
||||
// test: () => {
|
||||
// return adapter.request("common/sendArr", getWideData());
|
||||
// },
|
||||
// assertion: (res: any) => {
|
||||
// const data = getWideData();
|
||||
// let result = true;
|
||||
// for (let i = 0; i <= 10; i++) {
|
||||
// result =
|
||||
// result && res.table1[0][i] === data.table1[0]["col" + (i + 1)];
|
||||
// }
|
||||
// return result;
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// title: "Wide table with sendObj",
|
||||
// description: "Should handle data with 10000 columns",
|
||||
// test: () => {
|
||||
// return adapter.request("common/sendObj", getWideData());
|
||||
// },
|
||||
// assertion: (res: any) => {
|
||||
// const data = getWideData();
|
||||
// let result = true;
|
||||
// for (let i = 0; i <= 10; i++) {
|
||||
// result =
|
||||
// result &&
|
||||
// res.table1[0]["COL" + (i + 1)] === data.table1[0]["col" + (i + 1)];
|
||||
// }
|
||||
// return result;
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// title: "Multiple tables",
|
||||
// description: "Should handle data with 100 tables",
|
||||
// test: () => {
|
||||
// return adapter.request("common/sendArr", getTables());
|
||||
// },
|
||||
// assertion: (res: any) => {
|
||||
// const data = getTables();
|
||||
// return (
|
||||
// res.table1[0][0] === data.table1[0].col1 &&
|
||||
// res.table1[0][1] === data.table1[0].col2 &&
|
||||
// res.table1[0][2] === data.table1[0].col3 &&
|
||||
// res.table1[0][3] === data.table1[0].col4 &&
|
||||
// res.table50[0][0] === data.table50[0].col1 &&
|
||||
// res.table50[0][1] === data.table50[0].col2 &&
|
||||
// res.table50[0][2] === data.table50[0].col3 &&
|
||||
// res.table50[0][3] === data.table50[0].col4
|
||||
// );
|
||||
// },
|
||||
// },
|
||||
{
|
||||
title: "Large dataset",
|
||||
title: "Other special characters",
|
||||
description: "Should handle other special characters",
|
||||
test: () => {
|
||||
return adapter.request("common/sendArr", moreSpecialCharData);
|
||||
},
|
||||
assertion: (res: any) => {
|
||||
return (
|
||||
res.table1[0][0] === moreSpecialCharData.table1[0].speech0 &&
|
||||
res.table1[0][1] === moreSpecialCharData.table1[0].pct &&
|
||||
res.table1[0][2] === moreSpecialCharData.table1[0].speech &&
|
||||
res.table1[0][3] === moreSpecialCharData.table1[0].slash &&
|
||||
res.table1[0][4] === moreSpecialCharData.table1[0].slashWithSpecial &&
|
||||
res.table1[0][5] === moreSpecialCharData.table1[0].macvar &&
|
||||
res.table1[0][6] === moreSpecialCharData.table1[0].chinese &&
|
||||
res.table1[0][7] === moreSpecialCharData.table1[0].sigma &&
|
||||
res.table1[0][8] === moreSpecialCharData.table1[0].at &&
|
||||
res.table1[0][9] === moreSpecialCharData.table1[0].serbian &&
|
||||
res.table1[0][10] === moreSpecialCharData.table1[0].dollar
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "Wide table with sendArr",
|
||||
description: "Should handle data with 10000 columns",
|
||||
test: () => {
|
||||
return adapter.request("common/sendArr", getWideData());
|
||||
},
|
||||
assertion: (res: any) => {
|
||||
const data = getWideData();
|
||||
let result = true;
|
||||
for (let i = 0; i <= 10; i++) {
|
||||
result =
|
||||
result && res.table1[0][i] === data.table1[0]["col" + (i + 1)];
|
||||
}
|
||||
return result;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "Wide table with sendObj",
|
||||
description: "Should handle data with 10000 columns",
|
||||
test: () => {
|
||||
return adapter.request("common/sendObj", getWideData());
|
||||
},
|
||||
assertion: (res: any) => {
|
||||
const data = getWideData();
|
||||
let result = true;
|
||||
for (let i = 0; i <= 10; i++) {
|
||||
result =
|
||||
result &&
|
||||
res.table1[0]["COL" + (i + 1)] === data.table1[0]["col" + (i + 1)];
|
||||
}
|
||||
return result;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "Multiple tables",
|
||||
description: "Should handle data with 100 tables",
|
||||
test: () => {
|
||||
return adapter.request("common/sendArr", getTables());
|
||||
},
|
||||
assertion: (res: any) => {
|
||||
const data = getTables();
|
||||
return (
|
||||
res.table1[0][0] === data.table1[0].col1 &&
|
||||
res.table1[0][1] === data.table1[0].col2 &&
|
||||
res.table1[0][2] === data.table1[0].col3 &&
|
||||
res.table1[0][3] === data.table1[0].col4 &&
|
||||
res.table50[0][0] === data.table50[0].col1 &&
|
||||
res.table50[0][1] === data.table50[0].col2 &&
|
||||
res.table50[0][2] === data.table50[0].col3 &&
|
||||
res.table50[0][3] === data.table50[0].col4
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "Large dataset with sendObj",
|
||||
description: "Should handle 5mb of data",
|
||||
test: () => {
|
||||
return adapter.request("common/sendArr", getLargeDataset());
|
||||
return adapter.request("common/sendObj", getLargeDataset());
|
||||
},
|
||||
assertion: (res: any) => {
|
||||
const data = getLargeDataset();
|
||||
@@ -192,44 +192,59 @@ export const specialCaseTests = (adapter: SASjs): TestSuite => ({
|
||||
return result;
|
||||
},
|
||||
},
|
||||
|
||||
// {
|
||||
// title: "Error and _csrf tables with sendArr",
|
||||
// description: "Should handle error and _csrf tables",
|
||||
// test: () => {
|
||||
// return adapter.request("common/sendArr", errorAndCsrfData);
|
||||
// },
|
||||
// assertion: (res: any) => {
|
||||
// return (
|
||||
// res.error[0][0] === errorAndCsrfData.error[0].col1 &&
|
||||
// res.error[0][1] === errorAndCsrfData.error[0].col2 &&
|
||||
// res.error[0][2] === errorAndCsrfData.error[0].col3 &&
|
||||
// res.error[0][3] === errorAndCsrfData.error[0].col4 &&
|
||||
// res._csrf[0][0] === errorAndCsrfData._csrf[0].col1 &&
|
||||
// res._csrf[0][1] === errorAndCsrfData._csrf[0].col2 &&
|
||||
// res._csrf[0][2] === errorAndCsrfData._csrf[0].col3 &&
|
||||
// res._csrf[0][3] === errorAndCsrfData._csrf[0].col4
|
||||
// );
|
||||
// },
|
||||
// },
|
||||
// {
|
||||
// title: "Error and _csrf tables with sendObj",
|
||||
// description: "Should handle error and _csrf tables",
|
||||
// test: () => {
|
||||
// return adapter.request("common/sendObj", errorAndCsrfData);
|
||||
// },
|
||||
// assertion: (res: any) => {
|
||||
// return (
|
||||
// res.error[0].COL1 === errorAndCsrfData.error[0].col1 &&
|
||||
// res.error[0].COL2 === errorAndCsrfData.error[0].col2 &&
|
||||
// res.error[0].COL3 === errorAndCsrfData.error[0].col3 &&
|
||||
// res.error[0].COL4 === errorAndCsrfData.error[0].col4 &&
|
||||
// res._csrf[0].COL1 === errorAndCsrfData._csrf[0].col1 &&
|
||||
// res._csrf[0].COL2 === errorAndCsrfData._csrf[0].col2 &&
|
||||
// res._csrf[0].COL3 === errorAndCsrfData._csrf[0].col3 &&
|
||||
// res._csrf[0].COL4 === errorAndCsrfData._csrf[0].col4
|
||||
// );
|
||||
// },
|
||||
// },
|
||||
{
|
||||
title: "Large dataset with sendArr",
|
||||
description: "Should handle 5mb of data",
|
||||
test: () => {
|
||||
return adapter.request("common/sendArr", getLargeDataset());
|
||||
},
|
||||
assertion: (res: any) => {
|
||||
const data = getLargeDataset();
|
||||
let result = true;
|
||||
for (let i = 0; i <= 10; i++) {
|
||||
result =
|
||||
result && res.table1[i][0] === Object.values(data.table1[i])[0];
|
||||
}
|
||||
return result;
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "Error and _csrf tables with sendArr",
|
||||
description: "Should handle error and _csrf tables",
|
||||
test: () => {
|
||||
return adapter.request("common/sendArr", errorAndCsrfData);
|
||||
},
|
||||
assertion: (res: any) => {
|
||||
return (
|
||||
res.error[0][0] === errorAndCsrfData.error[0].col1 &&
|
||||
res.error[0][1] === errorAndCsrfData.error[0].col2 &&
|
||||
res.error[0][2] === errorAndCsrfData.error[0].col3 &&
|
||||
res.error[0][3] === errorAndCsrfData.error[0].col4 &&
|
||||
res._csrf[0][0] === errorAndCsrfData._csrf[0].col1 &&
|
||||
res._csrf[0][1] === errorAndCsrfData._csrf[0].col2 &&
|
||||
res._csrf[0][2] === errorAndCsrfData._csrf[0].col3 &&
|
||||
res._csrf[0][3] === errorAndCsrfData._csrf[0].col4
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "Error and _csrf tables with sendObj",
|
||||
description: "Should handle error and _csrf tables",
|
||||
test: () => {
|
||||
return adapter.request("common/sendObj", errorAndCsrfData);
|
||||
},
|
||||
assertion: (res: any) => {
|
||||
return (
|
||||
res.error[0].COL1 === errorAndCsrfData.error[0].col1 &&
|
||||
res.error[0].COL2 === errorAndCsrfData.error[0].col2 &&
|
||||
res.error[0].COL3 === errorAndCsrfData.error[0].col3 &&
|
||||
res.error[0].COL4 === errorAndCsrfData.error[0].col4 &&
|
||||
res._csrf[0].COL1 === errorAndCsrfData._csrf[0].col1 &&
|
||||
res._csrf[0].COL2 === errorAndCsrfData._csrf[0].col2 &&
|
||||
res._csrf[0].COL3 === errorAndCsrfData._csrf[0].col3 &&
|
||||
res._csrf[0].COL4 === errorAndCsrfData._csrf[0].col4
|
||||
);
|
||||
},
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user