mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-03 18:50:05 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8e116d81d7 | ||
|
|
fbca91144d | ||
|
|
9b239abda0 | ||
|
|
d3dff44918 |
@@ -80,7 +80,7 @@ const errorAndCsrfData: any = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const testTable = 'sometable'
|
const testTable = 'sometable'
|
||||||
const testTableWithNullVars: { [key: string]: any } = {
|
export const testTableWithNullVars: { [key: string]: any } = {
|
||||||
[testTable]: [
|
[testTable]: [
|
||||||
{ var1: 'string', var2: 232, nullvar: 'A' },
|
{ var1: 'string', var2: 232, nullvar: 'A' },
|
||||||
{ var1: 'string', var2: 232, nullvar: 'B' },
|
{ var1: 'string', var2: 232, nullvar: 'B' },
|
||||||
|
|||||||
@@ -5,8 +5,11 @@ export const generateFileUploadForm = (
|
|||||||
data: any
|
data: any
|
||||||
): FormData => {
|
): FormData => {
|
||||||
for (const tableName in data) {
|
for (const tableName in data) {
|
||||||
|
if (!Array.isArray(data[tableName])) continue
|
||||||
|
|
||||||
const name = tableName
|
const name = tableName
|
||||||
const csv = convertToCSV(data[tableName])
|
const csv = convertToCSV(data[tableName])
|
||||||
|
|
||||||
if (csv === 'ERROR: LARGE STRING LENGTH') {
|
if (csv === 'ERROR: LARGE STRING LENGTH') {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
'The max length of a string value in SASjs is 32765 characters.'
|
'The max length of a string value in SASjs is 32765 characters.'
|
||||||
|
|||||||
55
src/file/spec/generateFileUploadForm.spec.ts
Normal file
55
src/file/spec/generateFileUploadForm.spec.ts
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import { generateFileUploadForm } from '../generateFileUploadForm'
|
||||||
|
|
||||||
|
describe('generateFileUploadForm', () => {
|
||||||
|
beforeAll(() => {
|
||||||
|
function FormDataMock(this: any) {
|
||||||
|
this.append = () => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
const BlobMock = jest.fn()
|
||||||
|
|
||||||
|
;(global as any).FormData = FormDataMock
|
||||||
|
;(global as any).Blob = BlobMock
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should generate file upload form from data', () => {
|
||||||
|
const formData = new FormData()
|
||||||
|
const testTable = 'sometable'
|
||||||
|
const testTableWithNullVars: { [key: string]: any } = {
|
||||||
|
[testTable]: [
|
||||||
|
{ var1: 'string', var2: 232, nullvar: 'A' },
|
||||||
|
{ var1: 'string', var2: 232, nullvar: 'B' },
|
||||||
|
{ var1: 'string', var2: 232, nullvar: '_' },
|
||||||
|
{ var1: 'string', var2: 232, nullvar: 0 },
|
||||||
|
{ var1: 'string', var2: 232, nullvar: 'z' },
|
||||||
|
{ var1: 'string', var2: 232, nullvar: null }
|
||||||
|
],
|
||||||
|
[`$${testTable}`]: { formats: { var1: '$char12.', nullvar: 'best.' } }
|
||||||
|
}
|
||||||
|
const tableName = Object.keys(testTableWithNullVars).filter((key: string) =>
|
||||||
|
Array.isArray(testTableWithNullVars[key])
|
||||||
|
)[0]
|
||||||
|
|
||||||
|
jest.spyOn(formData, 'append').mockImplementation(() => {})
|
||||||
|
|
||||||
|
generateFileUploadForm(formData, testTableWithNullVars)
|
||||||
|
|
||||||
|
expect(formData.append).toHaveBeenCalledOnce()
|
||||||
|
expect(formData.append).toHaveBeenCalledWith(
|
||||||
|
tableName,
|
||||||
|
{},
|
||||||
|
`${tableName}.csv`
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should throw an error if too large string was provided', () => {
|
||||||
|
const formData = new FormData()
|
||||||
|
const data = { testTable: [{ var1: 'z'.repeat(32765 + 1) }] }
|
||||||
|
|
||||||
|
expect(() => generateFileUploadForm(formData, data)).toThrow(
|
||||||
|
new Error(
|
||||||
|
'The max length of a string value in SASjs is 32765 characters.'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
* @param data - the array of JSON objects to convert.
|
* @param data - the array of JSON objects to convert.
|
||||||
*/
|
*/
|
||||||
export const convertToCSV = (
|
export const convertToCSV = (
|
||||||
data: any,
|
data: any[],
|
||||||
sasFormats?: { formats: { [key: string]: string } }
|
sasFormats?: { formats: { [key: string]: string } }
|
||||||
) => {
|
) => {
|
||||||
let formats = sasFormats?.formats
|
let formats = sasFormats?.formats
|
||||||
@@ -76,7 +76,7 @@ export const convertToCSV = (
|
|||||||
return byteSize
|
return byteSize
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.sort((a: number, b: number) => b - a)[0]
|
.sort((a: any, b: any) => b - a)[0]
|
||||||
|
|
||||||
if (longestValueForField && longestValueForField > 32765) {
|
if (longestValueForField && longestValueForField > 32765) {
|
||||||
invalidString = true
|
invalidString = true
|
||||||
|
|||||||
Reference in New Issue
Block a user