serverless/test/unit/lib/utils/deep-sort-object-by-key.test.js
2024-05-29 11:51:04 -04:00

84 lines
1.7 KiB
JavaScript

'use strict'
const expect = require('chai').expect
const deepSortObjectByKey = require('../../../../lib/utils/deep-sort-object-by-key')
describe('deepSortObjectByKey', () => {
it('handles plain object', () => {
const input = {
b: 'shouldBeLast',
a: 'shouldBeFirst',
}
const result = deepSortObjectByKey(input)
const expectedResult = JSON.stringify({
a: 'shouldBeFirst',
b: 'shouldBeLast',
})
expect(JSON.stringify(result)).to.equal(expectedResult)
})
it('handles non-object values', () => {
const input = 'shouldbereturnedasis'
const result = deepSortObjectByKey(input)
expect(result).to.equal(input)
})
it('handles array with objects', () => {
const input = [
{
b: 'shouldBeLast',
a: 'shouldBeFirst',
},
{
d: 'shouldBeLast',
c: 'shouldBeFirst',
},
]
const result = deepSortObjectByKey(input)
const expectedResult = JSON.stringify([
{
a: 'shouldBeFirst',
b: 'shouldBeLast',
},
{
c: 'shouldBeFirst',
d: 'shouldBeLast',
},
])
expect(JSON.stringify(result)).to.equal(expectedResult)
})
it('handles nested, complex objects', () => {
const input = {
b: 'shouldBeLast',
a: {
d: 'nestedPlainValue',
c: {
f: 'shouldBeLast',
e: 'shouldBeFirst',
},
},
}
const result = deepSortObjectByKey(input)
const expectedResult = JSON.stringify({
a: {
c: {
e: 'shouldBeFirst',
f: 'shouldBeLast',
},
d: 'nestedPlainValue',
},
b: 'shouldBeLast',
})
expect(JSON.stringify(result)).to.equal(expectedResult)
})
})