@@ -249,17 +249,44 @@ describe('ExperimentalAddToCartBuilder', () => {
249
249
expect ( control ) . to . exist ;
250
250
} ) ;
251
251
252
- it ( 'renders Unavailable message when preview is not available ' , async ( ) => {
252
+ it ( 'renders SKU Required message when appropriate ' , async ( ) => {
253
253
const router = createRouter ( ) ;
254
+
255
+ await router . handleRequest (
256
+ new Request ( 'https://demo.api/hapi/stores/0' , {
257
+ method : 'PATCH' ,
258
+ body : JSON . stringify ( { use_cart_validation : true } ) ,
259
+ } )
260
+ ) ?. handlerPromise ;
261
+
254
262
const element1 = await fixture < Builder > (
255
- html ` < foxy-experimental-add-to-cart-builder > </ foxy-experimental-add-to-cart-builder > `
263
+ html `
264
+ < foxy-experimental-add-to-cart-builder
265
+ default-domain ="foxycart.com "
266
+ encode-helper ="https://demo.api/virtual/encode "
267
+ locale-codes ="https://demo.api/hapi/property_helpers/7 "
268
+ store ="https://demo.api/hapi/stores/0 "
269
+ @fetch =${ ( evt : FetchEvent ) => router . handleEvent ( evt ) }
270
+ >
271
+ </ foxy-experimental-add-to-cart-builder >
272
+ `
256
273
) ;
257
274
258
- const spinnerSelector = 'foxy-spinner[infer="unavailable"][state="busy"]' ;
259
- const labelSelector = 'foxy-i18n[infer="unavailable"][key="loading_busy"]' ;
275
+ await waitForIdle ( element1 ) ;
276
+ await element1 . requestUpdate ( ) ;
277
+
278
+ const spinnerSelector = 'foxy-spinner[infer="unavailable"][state="paused"]' ;
279
+ const labelSelector = 'foxy-i18n[infer="unavailable"][key="paused_code_required"]' ;
260
280
expect ( element1 . renderRoot . querySelector ( spinnerSelector ) ) . to . exist ;
261
281
expect ( element1 . renderRoot . querySelector ( labelSelector ) ) . to . exist ;
262
282
283
+ await router . handleRequest (
284
+ new Request ( 'https://demo.api/hapi/stores/0' , {
285
+ method : 'PATCH' ,
286
+ body : JSON . stringify ( { use_cart_validation : false } ) ,
287
+ } )
288
+ ) ?. handlerPromise ;
289
+
263
290
const element2 = await fixture < Builder > (
264
291
html `
265
292
< foxy-experimental-add-to-cart-builder
@@ -279,7 +306,7 @@ describe('ExperimentalAddToCartBuilder', () => {
279
306
expect ( element2 . renderRoot . querySelector ( labelSelector ) ) . to . not . exist ;
280
307
} ) ;
281
308
282
- it ( 'renders SKU Required message when appropriate' , async ( ) => {
309
+ it ( 'renders HTML Entities Unsupported message when appropriate' , async ( ) => {
283
310
const router = createRouter ( ) ;
284
311
285
312
await router . handleRequest (
@@ -302,11 +329,12 @@ describe('ExperimentalAddToCartBuilder', () => {
302
329
`
303
330
) ;
304
331
332
+ element1 . edit ( { items : [ { name : 'Test"' , code : 'TEST' , price : 25 , custom_options : [ ] } ] } ) ;
305
333
await waitForIdle ( element1 ) ;
306
334
await element1 . requestUpdate ( ) ;
307
335
308
- const spinnerSelector = 'foxy-spinner[infer="unavailable"][state="paused "]' ;
309
- const labelSelector = 'foxy-i18n[infer="unavailable"][key="paused_code_required "]' ;
336
+ const spinnerSelector = 'foxy-spinner[infer="unavailable"][state="error "]' ;
337
+ const labelSelector = 'foxy-i18n[infer="unavailable"][key="error_html_entities_present "]' ;
310
338
expect ( element1 . renderRoot . querySelector ( spinnerSelector ) ) . to . exist ;
311
339
expect ( element1 . renderRoot . querySelector ( labelSelector ) ) . to . exist ;
312
340
@@ -336,7 +364,7 @@ describe('ExperimentalAddToCartBuilder', () => {
336
364
expect ( element2 . renderRoot . querySelector ( labelSelector ) ) . to . not . exist ;
337
365
} ) ;
338
366
339
- it ( 'renders HTML Entities Unsupported message when appropriate' , async ( ) => {
367
+ it ( 'renders Double Quotes Unsupported message when appropriate' , async ( ) => {
340
368
const router = createRouter ( ) ;
341
369
342
370
await router . handleRequest (
@@ -359,12 +387,12 @@ describe('ExperimentalAddToCartBuilder', () => {
359
387
`
360
388
) ;
361
389
362
- element1 . edit ( { items : [ { name : 'Test" ' , code : 'TEST' , price : 25 , custom_options : [ ] } ] } ) ;
390
+ element1 . edit ( { items : [ { name : 'Test" ' , code : 'TEST' , price : 25 , custom_options : [ ] } ] } ) ;
363
391
await waitForIdle ( element1 ) ;
364
392
await element1 . requestUpdate ( ) ;
365
393
366
394
const spinnerSelector = 'foxy-spinner[infer="unavailable"][state="error"]' ;
367
- const labelSelector = 'foxy-i18n[infer="unavailable"][key="error_html_entities_present "]' ;
395
+ const labelSelector = 'foxy-i18n[infer="unavailable"][key="error_double_quotes_present "]' ;
368
396
expect ( element1 . renderRoot . querySelector ( spinnerSelector ) ) . to . exist ;
369
397
expect ( element1 . renderRoot . querySelector ( labelSelector ) ) . to . exist ;
370
398
@@ -394,7 +422,7 @@ describe('ExperimentalAddToCartBuilder', () => {
394
422
expect ( element2 . renderRoot . querySelector ( labelSelector ) ) . to . not . exist ;
395
423
} ) ;
396
424
397
- it ( 'renders Double Quotes Unsupported message when appropriate' , async ( ) => {
425
+ it ( 'renders Special Characters Present message when appropriate' , async ( ) => {
398
426
const router = createRouter ( ) ;
399
427
400
428
await router . handleRequest (
@@ -417,13 +445,211 @@ describe('ExperimentalAddToCartBuilder', () => {
417
445
`
418
446
) ;
419
447
420
- element1 . edit ( { items : [ { name : 'Test" ' , code : 'TEST' , price : 25 , custom_options : [ ] } ] } ) ;
448
+ element1 . edit ( { items : [ { name : 'Test& ' , code : 'TEST' , price : 25 , custom_options : [ ] } ] } ) ;
421
449
await waitForIdle ( element1 ) ;
422
450
await element1 . requestUpdate ( ) ;
423
451
424
- const spinnerSelector = 'foxy-spinner[infer="unavailable"][state="error"]' ;
425
- const labelSelector = 'foxy-i18n[infer="unavailable"][key="error_double_quotes_present"]' ;
426
- expect ( element1 . renderRoot . querySelector ( spinnerSelector ) ) . to . exist ;
452
+ const labelSelector = 'foxy-i18n[infer="unavailable"][key="error_special_characters_present"]' ;
453
+ expect ( element1 . renderRoot . querySelector ( labelSelector ) ) . to . exist ;
454
+
455
+ await router . handleRequest (
456
+ new Request ( 'https://demo.api/hapi/stores/0' , {
457
+ method : 'PATCH' ,
458
+ body : JSON . stringify ( { use_cart_validation : false } ) ,
459
+ } )
460
+ ) ?. handlerPromise ;
461
+
462
+ const element2 = await fixture < Builder > (
463
+ html `
464
+ < foxy-experimental-add-to-cart-builder
465
+ default-domain ="foxycart.com "
466
+ encode-helper ="https://demo.api/virtual/encode "
467
+ locale-codes ="https://demo.api/hapi/property_helpers/7 "
468
+ store ="https://demo.api/hapi/stores/0 "
469
+ @fetch =${ ( evt : FetchEvent ) => router . handleEvent ( evt ) }
470
+ >
471
+ </ foxy-experimental-add-to-cart-builder >
472
+ `
473
+ ) ;
474
+
475
+ await waitForIdle ( element2 ) ;
476
+ await element2 . requestUpdate ( ) ;
477
+ expect ( element2 . renderRoot . querySelector ( labelSelector ) ) . to . not . exist ;
478
+ } ) ;
479
+
480
+ it ( 'renders Configurable Price Unsupported message when appropriate' , async ( ) => {
481
+ const router = createRouter ( ) ;
482
+
483
+ await router . handleRequest (
484
+ new Request ( 'https://demo.api/hapi/stores/0' , {
485
+ method : 'PATCH' ,
486
+ body : JSON . stringify ( { use_cart_validation : true } ) ,
487
+ } )
488
+ ) ?. handlerPromise ;
489
+
490
+ const element1 = await fixture < Builder > (
491
+ html `
492
+ < foxy-experimental-add-to-cart-builder
493
+ default-domain ="foxycart.com "
494
+ encode-helper ="https://demo.api/virtual/encode "
495
+ locale-codes ="https://demo.api/hapi/property_helpers/7 "
496
+ store ="https://demo.api/hapi/stores/0 "
497
+ @fetch =${ ( evt : FetchEvent ) => router . handleEvent ( evt ) }
498
+ >
499
+ </ foxy-experimental-add-to-cart-builder >
500
+ `
501
+ ) ;
502
+
503
+ element1 . edit ( {
504
+ items : [
505
+ {
506
+ name : 'Test' ,
507
+ code : 'TEST' ,
508
+ price : 25 ,
509
+ price_configurable : true ,
510
+ custom_options : [ ] ,
511
+ } ,
512
+ ] ,
513
+ } ) ;
514
+
515
+ await waitForIdle ( element1 ) ;
516
+ await element1 . requestUpdate ( ) ;
517
+
518
+ const labelSelector = 'foxy-i18n[infer="unavailable"][key="error_price_configurable"]' ;
519
+ expect ( element1 . renderRoot . querySelector ( labelSelector ) ) . to . exist ;
520
+
521
+ await router . handleRequest (
522
+ new Request ( 'https://demo.api/hapi/stores/0' , {
523
+ method : 'PATCH' ,
524
+ body : JSON . stringify ( { use_cart_validation : false } ) ,
525
+ } )
526
+ ) ?. handlerPromise ;
527
+
528
+ const element2 = await fixture < Builder > (
529
+ html `
530
+ < foxy-experimental-add-to-cart-builder
531
+ default-domain ="foxycart.com "
532
+ encode-helper ="https://demo.api/virtual/encode "
533
+ locale-codes ="https://demo.api/hapi/property_helpers/7 "
534
+ store ="https://demo.api/hapi/stores/0 "
535
+ @fetch =${ ( evt : FetchEvent ) => router . handleEvent ( evt ) }
536
+ >
537
+ </ foxy-experimental-add-to-cart-builder >
538
+ `
539
+ ) ;
540
+
541
+ await waitForIdle ( element2 ) ;
542
+ await element2 . requestUpdate ( ) ;
543
+ expect ( element2 . renderRoot . querySelector ( labelSelector ) ) . to . not . exist ;
544
+ } ) ;
545
+
546
+ it ( 'renders Duplicate Custom Options Unsupported message when appropriate' , async ( ) => {
547
+ const router = createRouter ( ) ;
548
+
549
+ await router . handleRequest (
550
+ new Request ( 'https://demo.api/hapi/stores/0' , {
551
+ method : 'PATCH' ,
552
+ body : JSON . stringify ( { use_cart_validation : true } ) ,
553
+ } )
554
+ ) ?. handlerPromise ;
555
+
556
+ const element1 = await fixture < Builder > (
557
+ html `
558
+ < foxy-experimental-add-to-cart-builder
559
+ default-domain ="foxycart.com "
560
+ encode-helper ="https://demo.api/virtual/encode "
561
+ locale-codes ="https://demo.api/hapi/property_helpers/7 "
562
+ store ="https://demo.api/hapi/stores/0 "
563
+ @fetch =${ ( evt : FetchEvent ) => router . handleEvent ( evt ) }
564
+ >
565
+ </ foxy-experimental-add-to-cart-builder >
566
+ `
567
+ ) ;
568
+
569
+ element1 . edit ( {
570
+ items : [
571
+ {
572
+ name : 'Test' ,
573
+ code : 'TEST' ,
574
+ price : 25 ,
575
+ custom_options : [
576
+ { name : 'foo' , value : 'bar' } ,
577
+ { name : 'foo' , value : 'baz' } ,
578
+ ] ,
579
+ } ,
580
+ ] ,
581
+ } ) ;
582
+
583
+ await waitForIdle ( element1 ) ;
584
+ await element1 . requestUpdate ( ) ;
585
+
586
+ const labelSelector =
587
+ 'foxy-i18n[infer="unavailable"][key="error_duplicate_custom_option_names"]' ;
588
+ expect ( element1 . renderRoot . querySelector ( labelSelector ) ) . to . exist ;
589
+
590
+ await router . handleRequest (
591
+ new Request ( 'https://demo.api/hapi/stores/0' , {
592
+ method : 'PATCH' ,
593
+ body : JSON . stringify ( { use_cart_validation : false } ) ,
594
+ } )
595
+ ) ?. handlerPromise ;
596
+
597
+ const element2 = await fixture < Builder > (
598
+ html `
599
+ < foxy-experimental-add-to-cart-builder
600
+ default-domain ="foxycart.com "
601
+ encode-helper ="https://demo.api/virtual/encode "
602
+ locale-codes ="https://demo.api/hapi/property_helpers/7 "
603
+ store ="https://demo.api/hapi/stores/0 "
604
+ @fetch =${ ( evt : FetchEvent ) => router . handleEvent ( evt ) }
605
+ >
606
+ </ foxy-experimental-add-to-cart-builder >
607
+ `
608
+ ) ;
609
+
610
+ await waitForIdle ( element2 ) ;
611
+ await element2 . requestUpdate ( ) ;
612
+ expect ( element2 . renderRoot . querySelector ( labelSelector ) ) . to . not . exist ;
613
+ } ) ;
614
+
615
+ it ( 'renders Configurable Value In Custom Options Unsupported message when appropriate' , async ( ) => {
616
+ const router = createRouter ( ) ;
617
+
618
+ await router . handleRequest (
619
+ new Request ( 'https://demo.api/hapi/stores/0' , {
620
+ method : 'PATCH' ,
621
+ body : JSON . stringify ( { use_cart_validation : true } ) ,
622
+ } )
623
+ ) ?. handlerPromise ;
624
+
625
+ const element1 = await fixture < Builder > (
626
+ html `
627
+ < foxy-experimental-add-to-cart-builder
628
+ default-domain ="foxycart.com "
629
+ encode-helper ="https://demo.api/virtual/encode "
630
+ locale-codes ="https://demo.api/hapi/property_helpers/7 "
631
+ store ="https://demo.api/hapi/stores/0 "
632
+ @fetch =${ ( evt : FetchEvent ) => router . handleEvent ( evt ) }
633
+ >
634
+ </ foxy-experimental-add-to-cart-builder >
635
+ `
636
+ ) ;
637
+
638
+ element1 . edit ( {
639
+ items : [
640
+ {
641
+ name : 'Test' ,
642
+ code : 'TEST' ,
643
+ price : 25 ,
644
+ custom_options : [ { name : 'foo' , value : 'bar' , value_configurable : true } ] ,
645
+ } ,
646
+ ] ,
647
+ } ) ;
648
+
649
+ await waitForIdle ( element1 ) ;
650
+ await element1 . requestUpdate ( ) ;
651
+
652
+ const labelSelector = 'foxy-i18n[infer="unavailable"][key="error_option_value_configurable"]' ;
427
653
expect ( element1 . renderRoot . querySelector ( labelSelector ) ) . to . exist ;
428
654
429
655
await router . handleRequest (
@@ -448,7 +674,6 @@ describe('ExperimentalAddToCartBuilder', () => {
448
674
449
675
await waitForIdle ( element2 ) ;
450
676
await element2 . requestUpdate ( ) ;
451
- expect ( element2 . renderRoot . querySelector ( spinnerSelector ) ) . to . not . exist ;
452
677
expect ( element2 . renderRoot . querySelector ( labelSelector ) ) . to . not . exist ;
453
678
} ) ;
454
679
0 commit comments