@@ -352,3 +352,104 @@ describe("Navigation pattern tests - Mark items based on URL", () => {
352
352
expect ( document . querySelector ( ".current a" ) ) . toBe ( it4 ) ;
353
353
} ) ;
354
354
} ) ;
355
+
356
+ describe ( "Navigation pattern tests - Mark items based based clicking without pat-inject." , ( ) => {
357
+ beforeEach ( ( ) => {
358
+ document . body . innerHTML = "" ;
359
+ } ) ;
360
+
361
+ afterEach ( ( ) => {
362
+ document . body . innerHTML = "" ;
363
+ } ) ;
364
+
365
+ it ( "navigation roundtrip" , ( ) => {
366
+ document . body . innerHTML = `
367
+ <nav class="pat-navigation"
368
+ data-pat-navigation="in-path-class: inPath">
369
+ <ul>
370
+ <li class="current">
371
+ <a class="current" href="/home">Home</a>
372
+ </li>
373
+ <li>
374
+ <a href="/path1">p1</a>
375
+ </li>
376
+ <li>
377
+ <a href="/path2">p2</a>
378
+ <ul>
379
+ <li>
380
+ <a href="/path2/path2.1">p2.1</a>
381
+ </li>
382
+ <li>
383
+ <a href="/path2/path2.2">p2.2</a>
384
+ <ul>
385
+ <li>
386
+ <a href="/path2/path2.2/path2.2.1">p2.2.1</a>
387
+ </li>
388
+ <li>
389
+ <a href="/path2/path2.2/path2.2.2">p2.2.2</a>
390
+ </li>
391
+ </ul>
392
+ </li>
393
+ </ul>
394
+ </li>
395
+ </ul>
396
+ </nav>
397
+ ` ;
398
+
399
+ const instance = new Pattern ( document . querySelector ( ".pat-navigation" ) ) ;
400
+
401
+ const it0 = document . querySelector ( "a[href='/home']" ) ;
402
+ const it1 = document . querySelector ( "a[href='/path1']" ) ;
403
+ const it2 = document . querySelector ( "a[href='/path2']" ) ;
404
+ const it21 = document . querySelector ( "a[href='/path2/path2.1']" ) ;
405
+ const it22 = document . querySelector ( "a[href='/path2/path2.2']" ) ;
406
+ const it221 = document . querySelector ( "a[href='/path2/path2.2/path2.2.1']" ) ;
407
+ const it222 = document . querySelector ( "a[href='/path2/path2.2/path2.2.2']" ) ;
408
+
409
+ expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ;
410
+ expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 0 ) ;
411
+ expect ( document . querySelector ( ".current a" ) ) . toBe ( it0 ) ;
412
+
413
+ instance . clear_items ( ) ;
414
+ it1 . click ( ) ;
415
+
416
+ expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ;
417
+ expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 0 ) ;
418
+ expect ( document . querySelector ( ".current a" ) ) . toBe ( it1 ) ;
419
+
420
+ instance . clear_items ( ) ;
421
+ it2 . click ( ) ;
422
+
423
+ expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ;
424
+ expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 0 ) ;
425
+ expect ( document . querySelector ( ".current a" ) ) . toBe ( it2 ) ;
426
+
427
+ instance . clear_items ( ) ;
428
+ it21 . click ( ) ;
429
+
430
+ expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ;
431
+ expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 2 ) ;
432
+ expect ( document . querySelector ( ".current a" ) ) . toBe ( it21 ) ;
433
+
434
+ instance . clear_items ( ) ;
435
+ it22 . click ( ) ;
436
+
437
+ expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ;
438
+ expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 2 ) ;
439
+ expect ( document . querySelector ( ".current a" ) ) . toBe ( it22 ) ;
440
+
441
+ instance . clear_items ( ) ;
442
+ it221 . click ( ) ;
443
+
444
+ expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ;
445
+ expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 4 ) ;
446
+ expect ( document . querySelector ( ".current a" ) ) . toBe ( it221 ) ;
447
+
448
+ instance . clear_items ( ) ;
449
+ it222 . click ( ) ;
450
+
451
+ expect ( document . querySelectorAll ( ".current" ) . length ) . toBe ( 2 ) ;
452
+ expect ( document . querySelectorAll ( ".inPath" ) . length ) . toBe ( 4 ) ;
453
+ expect ( document . querySelector ( ".current a" ) ) . toBe ( it222 ) ;
454
+ } ) ;
455
+ } ) ;
0 commit comments