1
0
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:
Yury Shkoda
2022-01-05 18:35:02 +03:00
parent fbce35b272
commit 1a5c84cd0f
2 changed files with 56 additions and 25 deletions

View 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)
})
})

View File

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