mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-07 04:20:05 +00:00
test(formatDataForRequest): improved test coverage
This commit is contained in:
56
src/test/utils/formatDataForRequest.spec.ts
Normal file
56
src/test/utils/formatDataForRequest.spec.ts
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
import { formatDataForRequest } from '../../utils/formatDataForRequest'
|
||||||
|
|
||||||
|
describe('formatDataForRequest', () => {
|
||||||
|
const testTable = 'sometable'
|
||||||
|
|
||||||
|
it('should', () => {
|
||||||
|
const testTableWithNullVars = {
|
||||||
|
[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 expectedOutput = {
|
||||||
|
sasjs1data: `var1:$char12. var2:best. nullvar:best.\r\nstring,232,.a\r\nstring,232,.b\r\nstring,232,._\r\nstring,232,0\r\nstring,232,.z\r\nstring,232,.`,
|
||||||
|
sasjs_tables: testTable
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(formatDataForRequest(testTableWithNullVars)).toEqual(expectedOutput)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return error if string is more than 32765 characters', () => {
|
||||||
|
const data = { testTable: [{ var1: 'z'.repeat(32765 + 1) }] }
|
||||||
|
|
||||||
|
expect(() => formatDataForRequest(data)).toThrow(
|
||||||
|
new Error(
|
||||||
|
'The max length of a string value in SASjs is 32765 characters.'
|
||||||
|
)
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should return error if string is more than 32765 characters', () => {
|
||||||
|
const charsCount = 16 * 1000 + 1
|
||||||
|
const allChars = 'z'.repeat(charsCount)
|
||||||
|
const data = { [testTable]: [{ var1: allChars }] }
|
||||||
|
const firstChunk = `var1:$char${charsCount}.\r\n`
|
||||||
|
const firstChunkChars = 'z'.repeat(16000 - firstChunk.length)
|
||||||
|
const secondChunkChars = 'z'.repeat(
|
||||||
|
charsCount - (16000 - firstChunk.length)
|
||||||
|
)
|
||||||
|
|
||||||
|
const expectedOutput = {
|
||||||
|
sasjs1data0: 2,
|
||||||
|
sasjs1data1: `${firstChunk}${firstChunkChars}`,
|
||||||
|
sasjs1data2: secondChunkChars,
|
||||||
|
sasjs_tables: testTable
|
||||||
|
}
|
||||||
|
|
||||||
|
expect(formatDataForRequest(data)).toEqual(expectedOutput)
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -168,31 +168,6 @@ describe('convertToCsv', () => {
|
|||||||
).toEqual(`slashWithSpecialExtra:$char13.\r\n\"\\\ts\tl\ta\ts\t\th\t\"`)
|
).toEqual(`slashWithSpecialExtra:$char13.\r\n\"\\\ts\tl\ta\ts\t\th\t\"`)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should convert not null values', () => {
|
|
||||||
const data = [
|
|
||||||
{ var1: 'string', nullvar: 'A', var2: 232 },
|
|
||||||
{ var1: 'string', nullvar: 'B', var2: 232 },
|
|
||||||
{ var1: 'string', nullvar: '_', var2: 232 },
|
|
||||||
{ var1: 'string', nullvar: 0, var2: 232 },
|
|
||||||
{ var1: 'string', nullvar: 'z', var2: 232 },
|
|
||||||
{ var1: 'string', nullvar: null, var2: 232 }
|
|
||||||
]
|
|
||||||
|
|
||||||
const expectedOutput = `var1:$char6. nullvar:best. var2:best.\r\nstring,.a,232\r\nstring,.b,232\r\nstring,._,232\r\nstring,0,232\r\nstring,.z,232\r\nstring,.,232`
|
|
||||||
|
|
||||||
expect(
|
|
||||||
convertToCSV(data, {
|
|
||||||
formats: { var1: '$char6.', nullvar: 'best.' }
|
|
||||||
})
|
|
||||||
).toEqual(expectedOutput)
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should return error if string is more than maxFieldValue', () => {
|
|
||||||
const data = [{ var1: 'z'.repeat(32765 + 1) }]
|
|
||||||
|
|
||||||
expect(convertToCSV(data)).toEqual('ERROR: LARGE STRING LENGTH')
|
|
||||||
})
|
|
||||||
|
|
||||||
it('should console log error if data has mixed types', () => {
|
it('should console log error if data has mixed types', () => {
|
||||||
const colName = 'var1'
|
const colName = 'var1'
|
||||||
const data = [{ [colName]: 'string' }, { [colName]: 232 }]
|
const data = [{ [colName]: 'string' }, { [colName]: 232 }]
|
||||||
|
|||||||
Reference in New Issue
Block a user