1
0
mirror of https://github.com/sasjs/adapter.git synced 2026-01-03 10:40:06 +00:00

fix(*): switch to file upload approach with large datasets and special characters

This commit is contained in:
Krishna Acondy
2020-07-11 11:27:45 +01:00
parent b614bafd03
commit 77d7e03de5
9 changed files with 216 additions and 193 deletions

View File

@@ -4,7 +4,7 @@ import TestSuiteCard from "./components/TestSuiteCard";
import { TestSuite, Test } from "./types";
import { basicTests } from "./testSuites/Basic";
import "./TestSuiteRunner.scss";
import SASjs from "sasjs";
import SASjs from "@sasjs/adapter";
import { AppContext } from "./context/AppContext";
import { sendArrTests, sendObjTests } from "./testSuites/RequestData";
import { specialCaseTests } from "./testSuites/SpecialCases";
@@ -38,11 +38,11 @@ const TestSuiteRunner = (
useEffect(() => {
if (adapter) {
setTestSuites([
// basicTests(adapter, config.userName, config.password),
// sendArrTests(adapter),
// sendObjTests(adapter),
basicTests(adapter, config.userName, config.password),
sendArrTests(adapter),
sendObjTests(adapter),
specialCaseTests(adapter),
// sasjsRequestTests(adapter),
sasjsRequestTests(adapter),
]);
setCompletedTestSuites([]);
}

View File

@@ -1,5 +1,5 @@
import React, { createContext, useState, useEffect, ReactNode } from "react";
import SASjs from "sasjs";
import SASjs from "@sasjs/adapter";
export const AppContext = createContext<{
config: any;

View File

@@ -1,4 +1,4 @@
import SASjs, { ServerType, SASjsConfig } from "sasjs";
import SASjs, { ServerType, SASjsConfig } from "@sasjs/adapter";
import { TestSuite } from "../types";
const defaultConfig: SASjsConfig = {

View File

@@ -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" }] };

View File

@@ -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;

View File

@@ -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
);
},
},
],
});