mirror of
https://github.com/sasjs/adapter.git
synced 2026-01-04 11:10: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\"`)
|
||||
})
|
||||
|
||||
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', () => {
|
||||
const colName = 'var1'
|
||||
const data = [{ [colName]: 'string' }, { [colName]: 232 }]
|
||||
|
||||
Reference in New Issue
Block a user