77 type ParserConfig ,
88 InvalidDataError ,
99 AddChildFn ,
10+ InvalidStructureError ,
1011} from "./parseData.js" ;
1112
1213interface TestGroup {
@@ -108,14 +109,14 @@ describe("parseData()", () => {
108109 } ) ;
109110
110111 describe ( "parsing an empty group object" , ( ) => {
111- let parsedGroupOrToken : TestGroup | TestDesignToken | undefined ;
112+ let parsedGroup : TestGroup | undefined ;
112113
113114 beforeEach ( ( ) => {
114- parsedGroupOrToken = parseData ( { } , parserConfig ) ;
115+ parsedGroup = parseData ( { } , parserConfig ) ;
115116 } ) ;
116117
117118 it ( "returns a group" , ( ) => {
118- expect ( parsedGroupOrToken ?. type ) . toBe ( "group" ) ;
119+ expect ( parsedGroup ?. type ) . toBe ( "group" ) ;
119120 } ) ;
120121
121122 it ( "calls isDesignTokenData function once" , ( ) => {
@@ -141,33 +142,26 @@ describe("parseData()", () => {
141142
142143 describe ( "parsing a design token object" , ( ) => {
143144 const testTokenData = {
144- value : "whatever" , // <-- this makes it a token
145- other : "thing" ,
146- stuff : 123 ,
147- notAGroup : { } ,
145+ testToken : {
146+ value : "whatever" , // <-- this makes it a token
147+ other : "thing" ,
148+ stuff : 123 ,
149+ notAGroup : { } ,
150+ } ,
148151 } ;
149- let parsedGroupOrToken : TestGroup | TestDesignToken | undefined ;
150152
151153 beforeEach ( ( ) => {
152- parsedGroupOrToken = parseData ( testTokenData , parserConfig ) ;
153- } ) ;
154-
155- it ( "returns a design token" , ( ) => {
156- expect ( parsedGroupOrToken ?. type ) . toBe ( "token" ) ;
157- } ) ;
158-
159- it ( "does not call parseGroupData function" , ( ) => {
160- expect ( mockParseGroupData ) . not . toHaveBeenCalled ( ) ;
154+ parseData ( testTokenData , parserConfig ) ;
161155 } ) ;
162156
163157 it ( "calls parseDesignTokenData function once" , ( ) => {
164158 expect ( mockParseDesignTokenData ) . toHaveBeenCalledOnce ( ) ;
165159 } ) ;
166160
167- it ( "calls parseDesignTokenData function with complete data and empty path array" , ( ) => {
161+ it ( "calls parseDesignTokenData function with complete data and path array" , ( ) => {
168162 expect ( mockParseDesignTokenData ) . toHaveBeenCalledWith (
169- testTokenData ,
170- [ ] ,
163+ testTokenData . testToken ,
164+ [ "testToken" ] ,
171165 undefined
172166 ) ;
173167 } ) ;
@@ -432,4 +426,10 @@ describe("parseData()", () => {
432426 expect ( ( error as InvalidDataError ) . data ) . toBe ( 123 ) ;
433427 }
434428 } ) ;
429+
430+ it ( "throws an InvalidStructureError when there is no root group" , ( ) => {
431+ expect ( ( ) =>
432+ parseData ( { value : "naughty anonymous token" } , parserConfig )
433+ ) . toThrowError ( InvalidStructureError ) ;
434+ } ) ;
435435} ) ;
0 commit comments