11import { describe , it } from 'node:test' ;
22
3- import {
4- DEFAULT_MACRO_GROUPING_SETTINGS ,
5- MACRO_GROUPING_MAX_DEPTH ,
6- normalizeMacroGroupingSettings ,
7- } from '../models/macro-grouping-settings.js' ;
3+ import { DEFAULT_MACRO_GROUPING_SETTINGS } from 'uhk-common' ;
4+
85import {
96 findMacroGroupAncestorPaths ,
107 groupMacrosByName ,
118 GroupableMacroItem ,
9+ MACRO_GROUPING_MAX_DEPTH ,
10+ normalizeMacroGroupingSettings ,
1211 splitMacroName
1312} from './group-macros-by-name.js' ;
1413
@@ -77,11 +76,13 @@ describe('groupMacrosByName', () => {
7776
7877 assert . equal ( result . length , 2 ) ;
7978 assert . deepEqual ( result . map ( node => node . type ) , [ 'macro' , 'group' ] ) ;
80- assert . equal ( result [ 0 ] . macro ?. name , 'Brightness up' ) ;
81- assert . equal ( result [ 1 ] . label , 'Doom' ) ;
82- assert . equal ( result [ 1 ] . children ?. length , 2 ) ;
83- assert . equal ( result [ 1 ] . children ?. [ 0 ] . macro ?. name , 'Doom: Chainsaw' ) ;
84- assert . equal ( result [ 1 ] . children ?. [ 1 ] . macro ?. name , 'Doom: Plasma gun' ) ;
79+ assert . equal ( result [ 0 ] . type === 'macro' ? result [ 0 ] . macro . name : '' , 'Brightness up' ) ;
80+ assert . equal ( result [ 1 ] . type === 'group' ? result [ 1 ] . label : '' , 'Doom' ) ;
81+ assert . equal ( result [ 1 ] . type === 'group' ? result [ 1 ] . children . length : 0 , 2 ) ;
82+ if ( result [ 1 ] . type === 'group' ) {
83+ assert . equal ( result [ 1 ] . children [ 0 ] . type === 'macro' ? result [ 1 ] . children [ 0 ] . macro . name : '' , 'Doom: Chainsaw' ) ;
84+ assert . equal ( result [ 1 ] . children [ 1 ] . type === 'macro' ? result [ 1 ] . children [ 1 ] . macro . name : '' , 'Doom: Plasma gun' ) ;
85+ }
8586 } ) ;
8687
8788 it ( 'does not create a group when there are fewer macros than minChildren' , ( { assert } ) => {
@@ -94,8 +95,8 @@ describe('groupMacrosByName', () => {
9495
9596 assert . equal ( result . length , 2 ) ;
9697 assert . deepEqual ( result . map ( node => node . type ) , [ 'macro' , 'macro' ] ) ;
97- assert . equal ( result [ 0 ] . macro ?. name , 'Brightness up' ) ;
98- assert . equal ( result [ 1 ] . macro ?. name , 'Doom: Chainsaw' ) ;
98+ assert . equal ( result [ 0 ] . type === ' macro' ? result [ 0 ] . macro . name : '' , 'Brightness up' ) ;
99+ assert . equal ( result [ 1 ] . type === ' macro' ? result [ 1 ] . macro . name : '' , 'Doom: Chainsaw' ) ;
99100 } ) ;
100101
101102 it ( 'groups by camel case when enabled' , ( { assert } ) => {
@@ -112,10 +113,15 @@ describe('groupMacrosByName', () => {
112113
113114 assert . equal ( result . length , 2 ) ;
114115 assert . deepEqual ( result . map ( node => node . type ) , [ 'group' , 'macro' ] ) ;
115- assert . equal ( result [ 0 ] . label , 'bind' ) ;
116- assert . equal ( result [ 0 ] . children ?. length , 2 ) ;
117- assert . deepEqual ( result [ 0 ] . children ?. map ( child => child . macro ?. name ) , [ 'bindMouseLeft' , 'bindMouseRight' ] ) ;
118- assert . equal ( result [ 1 ] . macro ?. name , 'brightnessUp' ) ;
116+ assert . equal ( result [ 0 ] . type === 'group' ? result [ 0 ] . label : '' , 'bind' ) ;
117+ if ( result [ 0 ] . type === 'group' ) {
118+ assert . equal ( result [ 0 ] . children . length , 2 ) ;
119+ assert . deepEqual (
120+ result [ 0 ] . children . map ( child => child . type === 'macro' ? child . macro . name : '' ) ,
121+ [ 'bindMouseLeft' , 'bindMouseRight' ]
122+ ) ;
123+ }
124+ assert . equal ( result [ 1 ] . type === 'macro' ? result [ 1 ] . macro . name : '' , 'brightnessUp' ) ;
119125 } ) ;
120126
121127 it ( 'groups dollar-prefixed smart macro names under the dollar prefix' , ( { assert } ) => {
@@ -131,8 +137,13 @@ describe('groupMacrosByName', () => {
131137
132138 assert . equal ( result . length , 1 ) ;
133139 assert . equal ( result [ 0 ] . type , 'group' ) ;
134- assert . equal ( result [ 0 ] . label , '$on' ) ;
135- assert . deepEqual ( result [ 0 ] . children ?. map ( child => child . macro ?. name ) , [ '$onInit' , '$onJoin' ] ) ;
140+ if ( result [ 0 ] . type === 'group' ) {
141+ assert . equal ( result [ 0 ] . label , '$on' ) ;
142+ assert . deepEqual (
143+ result [ 0 ] . children . map ( child => child . type === 'macro' ? child . macro . name : '' ) ,
144+ [ '$onInit' , '$onJoin' ]
145+ ) ;
146+ }
136147 } ) ;
137148
138149 it ( 'groups non-English macro names that share a prefix' , ( { assert } ) => {
@@ -145,8 +156,13 @@ describe('groupMacrosByName', () => {
145156
146157 assert . equal ( result . length , 1 ) ;
147158 assert . equal ( result [ 0 ] . type , 'group' ) ;
148- assert . equal ( result [ 0 ] . label , 'Az' ) ;
149- assert . deepEqual ( result [ 0 ] . children ?. map ( child => child . macro ?. name ) , [ 'Az én: első' , 'Az én: második' ] ) ;
159+ if ( result [ 0 ] . type === 'group' ) {
160+ assert . equal ( result [ 0 ] . label , 'Az' ) ;
161+ assert . deepEqual (
162+ result [ 0 ] . children . map ( child => child . type === 'macro' ? child . macro . name : '' ) ,
163+ [ 'Az én: első' , 'Az én: második' ]
164+ ) ;
165+ }
150166 } ) ;
151167
152168 it ( 'keeps parent-level remainders when deeper nesting does not apply' , ( { assert } ) => {
@@ -161,8 +177,13 @@ describe('groupMacrosByName', () => {
161177 } ) ;
162178
163179 assert . equal ( result . length , 1 ) ;
164- assert . equal ( result [ 0 ] . label , 'Open' ) ;
165- assert . deepEqual ( result [ 0 ] . children ?. map ( child => child . macro ?. name ) , [ 'Open daily sites' , 'Open weekly sites' ] ) ;
180+ if ( result [ 0 ] . type === 'group' ) {
181+ assert . equal ( result [ 0 ] . label , 'Open' ) ;
182+ assert . deepEqual (
183+ result [ 0 ] . children . map ( child => child . type === 'macro' ? child . macro . name : '' ) ,
184+ [ 'Open daily sites' , 'Open weekly sites' ]
185+ ) ;
186+ }
166187 } ) ;
167188
168189 it ( 'places a macro named like a group inside that group' , ( { assert } ) => {
@@ -176,12 +197,13 @@ describe('groupMacrosByName', () => {
176197
177198 assert . equal ( result . length , 1 ) ;
178199 assert . equal ( result [ 0 ] . type , 'group' ) ;
179- assert . equal ( result [ 0 ] . label , 'Doom' ) ;
180- assert . deepEqual ( result [ 0 ] . children ?. map ( child => child . macro ?. name ) , [
181- 'Doom' ,
182- 'Doom: Chainsaw' ,
183- 'Doom: Plasma gun' ,
184- ] ) ;
200+ if ( result [ 0 ] . type === 'group' ) {
201+ assert . equal ( result [ 0 ] . label , 'Doom' ) ;
202+ assert . deepEqual (
203+ result [ 0 ] . children . map ( child => child . type === 'macro' ? child . macro . name : '' ) ,
204+ [ 'Doom' , 'Doom: Chainsaw' , 'Doom: Plasma gun' ]
205+ ) ;
206+ }
185207 } ) ;
186208
187209 it ( 'places an exact subgroup name inside a nested group' , ( { assert } ) => {
@@ -197,15 +219,18 @@ describe('groupMacrosByName', () => {
197219 } ) ;
198220
199221 assert . equal ( result . length , 1 ) ;
200- assert . equal ( result [ 0 ] . label , 'Open' ) ;
201- assert . equal ( result [ 0 ] . children ?. length , 1 ) ;
202- assert . equal ( result [ 0 ] . children ?. [ 0 ] . type , 'group' ) ;
203- assert . equal ( result [ 0 ] . children ?. [ 0 ] . label , 'daily' ) ;
204- assert . deepEqual ( result [ 0 ] . children ?. [ 0 ] . children ?. map ( child => child . macro ?. name ) , [
205- 'Open: daily' ,
206- 'Open: daily: evening' ,
207- 'Open: daily: morning' ,
208- ] ) ;
222+ if ( result [ 0 ] . type === 'group' ) {
223+ assert . equal ( result [ 0 ] . label , 'Open' ) ;
224+ assert . equal ( result [ 0 ] . children . length , 1 ) ;
225+ assert . equal ( result [ 0 ] . children [ 0 ] . type , 'group' ) ;
226+ if ( result [ 0 ] . children [ 0 ] . type === 'group' ) {
227+ assert . equal ( result [ 0 ] . children [ 0 ] . label , 'daily' ) ;
228+ assert . deepEqual (
229+ result [ 0 ] . children [ 0 ] . children . map ( child => child . type === 'macro' ? child . macro . name : '' ) ,
230+ [ 'Open: daily' , 'Open: daily: evening' , 'Open: daily: morning' ]
231+ ) ;
232+ }
233+ }
209234 } ) ;
210235
211236 it ( 'keeps a same-named macro outside when the group is not created' , ( { assert } ) => {
@@ -217,7 +242,10 @@ describe('groupMacrosByName', () => {
217242 const result = groupMacrosByName ( macros , ENABLED_MACRO_GROUPING_SETTINGS ) ;
218243
219244 assert . equal ( result . length , 2 ) ;
220- assert . deepEqual ( result . map ( node => node . macro ?. name ) , [ 'Doom' , 'Doom: Chainsaw' ] ) ;
245+ assert . deepEqual (
246+ result . map ( node => node . type === 'macro' ? node . macro . name : '' ) ,
247+ [ 'Doom' , 'Doom: Chainsaw' ]
248+ ) ;
221249 } ) ;
222250} ) ;
223251
0 commit comments