import { flattenTree } from '../utils/flattenTree' import { describe, expect, test } from '@jest/globals' const nestedTree = { border: { default: { value: '1px solid #000000' }, width: { value: '2px', default: { value: '2px' }, medium: { value: '2px', isDeprecated: true }, thick: { value: '3px', isDeprecated: true }, thin: { value: '0.5px', isDeprecated: true }, small: { value: '1px' }, }, radius: { value: 'space.$s100', isReference: true, large: { value: 'space.$s200', isReference: true }, xlarge: { value: 'space.$s300', isReference: true }, xxlarge: { value: 'space.$s500', isReference: true }, max: { value: 'space.$s2000', isDeprecated: true }, }, }, } const targetArray = [ { name: 'border-default', value: '1px solid #000000' }, { name: 'border-width', value: '2px' }, { name: 'border-width-default', value: '2px' }, { name: 'border-width-medium', value: '2px', isDeprecated: true }, { name: 'border-width-thick', value: '3px', isDeprecated: true }, { name: 'border-width-thin', value: '0.5px', isDeprecated: true }, { name: 'border-width-small', value: '1px' }, { name: 'border-radius', value: 'space.$s100', isReference: true }, { name: 'border-radius-large', value: 'space.$s200', isReference: true }, { name: 'border-radius-xlarge', value: 'space.$s300', isReference: true }, { name: 'border-radius-xxlarge', value: 'space.$s500', isReference: true }, { name: 'border-radius-max', value: 'space.$s2000', isDeprecated: true }, ] describe('flattenTree', () => { test('1: complex tree', () => { const result = flattenTree(nestedTree) expect(result).toEqual(targetArray) }) }) const nestTree2 = { radius: { value: 'space.$s100', isReference: true, large: { value: 'space.$s200', isReference: true }, }, } const targetArray2 = [ { name: 'radius', value: 'space.$s100', isReference: true }, { name: 'radius-large', value: 'space.$s200', isReference: true }, ] describe('flattenTree', () => { test('2: value with other keys', () => { const result = flattenTree(nestTree2) expect(result).toEqual(targetArray2) }) }) const nestTree24 = { value: '10px', large: { value: '20px', comment: 'this is a comment' }, } const targetArray24 = [ { name: '', value: '10px' }, { name: 'large', value: '20px', comment: 'this is a comment' }, ] describe('flattenTree with comment', () => { test('2.4: base with other keys', () => { const result = flattenTree(nestTree24) expect(result).toEqual(targetArray24) }) }) const nestTree25 = { value: 'space.$s100', isReference: true, large: { value: 'space.$s200', isReference: true }, } const targetArray25 = [ { name: '', value: 'space.$s100', isReference: true }, { name: 'large', value: 'space.$s200', isReference: true }, ] describe('flattenTree', () => { test('2.5: base with other keys', () => { const result = flattenTree(nestTree25) expect(result).toEqual(targetArray25) }) }) const nestTree26 = { small: { value: 'space.$s100', isReference: true }, large: { value: 'space.$s200', isReference: true }, } const targetArray26 = [ { name: 'small', value: 'space.$s100', isReference: true }, { name: 'large', value: 'space.$s200', isReference: true }, ] describe('flattenTree', () => { test('2.6: other keys', () => { const result = flattenTree(nestTree26) expect(result).toEqual(targetArray26) }) }) const nestTree3 = { radius: { value: 'space.$s100', isReference: true, }, } const targetArray3 = [{ name: 'radius', value: 'space.$s100', isReference: true }] describe('flattenTree', () => { test('3: value with isReference', () => { const result = flattenTree(nestTree3) expect(result).toEqual(targetArray3) }) }) const nestTree4 = { value: 'space.$s100', isBase: true, } const targetArray4 = [{ name: '', value: 'space.$s100', isBase: true }] describe('flattenTree w/ base token', () => { test('4: base value', () => { const result = flattenTree(nestTree4) expect(result).toEqual(targetArray4) }) }) const nestTree5 = { value: 'space.$s100', isReference: true, } const targetArray5 = [{ name: '', value: 'space.$s100', isReference: true }] describe('flattenTree', () => { test('5: base with isReference', () => { const result = flattenTree(nestTree5) expect(result).toEqual(targetArray5) }) })