@wordpress/data 6.4.0 → 6.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/build/components/use-select/index.js +10 -15
- package/build/components/use-select/index.js.map +1 -1
- package/build/plugins/persistence/index.js +265 -50
- package/build/plugins/persistence/index.js.map +1 -1
- package/build/redux-store/index.js +42 -27
- package/build/redux-store/index.js.map +1 -1
- package/build/registry.js +10 -17
- package/build/registry.js.map +1 -1
- package/build-module/components/use-select/index.js +10 -15
- package/build-module/components/use-select/index.js.map +1 -1
- package/build-module/plugins/persistence/index.js +261 -50
- package/build-module/plugins/persistence/index.js.map +1 -1
- package/build-module/redux-store/index.js +42 -27
- package/build-module/redux-store/index.js.map +1 -1
- package/build-module/registry.js +10 -17
- package/build-module/registry.js.map +1 -1
- package/package.json +8 -8
- package/src/components/use-select/index.js +11 -19
- package/src/plugins/persistence/index.js +277 -57
- package/src/plugins/persistence/test/index.js +575 -320
- package/src/redux-store/index.js +23 -12
- package/src/redux-store/test/index.js +15 -5
- package/src/registry.js +10 -10
- package/src/test/registry.js +1 -1
|
@@ -9,9 +9,11 @@ import deepFreeze from 'deep-freeze';
|
|
|
9
9
|
import plugin, {
|
|
10
10
|
createPersistenceInterface,
|
|
11
11
|
withLazySameState,
|
|
12
|
-
migrateFeaturePreferencesToInterfaceStore,
|
|
13
12
|
migrateFeaturePreferencesToPreferencesStore,
|
|
13
|
+
migrateThirdPartyFeaturePreferencesToPreferencesStore,
|
|
14
14
|
migrateIndividualPreferenceToPreferencesStore,
|
|
15
|
+
convertEditPostPanels,
|
|
16
|
+
migrateInterfaceEnableItemsToPreferencesStore,
|
|
15
17
|
} from '../';
|
|
16
18
|
import objectStorage from '../storage/object';
|
|
17
19
|
import { createRegistry } from '../../../';
|
|
@@ -384,13 +386,13 @@ describe( 'persistence', () => {
|
|
|
384
386
|
} );
|
|
385
387
|
} );
|
|
386
388
|
|
|
387
|
-
describe( '
|
|
388
|
-
it( 'migrates preferences from
|
|
389
|
+
describe( 'migrateFeaturePreferencesToPreferencesStore', () => {
|
|
390
|
+
it( 'migrates multiple preferences from persisted source stores to preferences', () => {
|
|
389
391
|
const persistenceInterface = createPersistenceInterface( {
|
|
390
392
|
storageKey: 'test-username',
|
|
391
393
|
} );
|
|
392
394
|
|
|
393
|
-
const
|
|
395
|
+
const sourceStateA = {
|
|
394
396
|
preferences: {
|
|
395
397
|
features: {
|
|
396
398
|
featureA: true,
|
|
@@ -400,26 +402,50 @@ describe( 'migrateFeaturePreferencesToInterfaceStore', () => {
|
|
|
400
402
|
},
|
|
401
403
|
};
|
|
402
404
|
|
|
403
|
-
|
|
405
|
+
const sourceStateB = {
|
|
406
|
+
preferences: {
|
|
407
|
+
features: {
|
|
408
|
+
featureD: true,
|
|
409
|
+
featureE: false,
|
|
410
|
+
featureF: true,
|
|
411
|
+
},
|
|
412
|
+
},
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
persistenceInterface.set( 'core/test-a', sourceStateA );
|
|
416
|
+
persistenceInterface.set( 'core/test-b', sourceStateB );
|
|
417
|
+
|
|
418
|
+
migrateFeaturePreferencesToPreferencesStore(
|
|
419
|
+
persistenceInterface,
|
|
420
|
+
'core/test-a'
|
|
421
|
+
);
|
|
404
422
|
|
|
405
|
-
|
|
423
|
+
migrateFeaturePreferencesToPreferencesStore(
|
|
406
424
|
persistenceInterface,
|
|
407
|
-
'core/test'
|
|
425
|
+
'core/test-b'
|
|
408
426
|
);
|
|
409
427
|
|
|
410
428
|
expect( persistenceInterface.get() ).toEqual( {
|
|
411
|
-
'core/
|
|
429
|
+
'core/preferences': {
|
|
412
430
|
preferences: {
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
431
|
+
'core/test-a': {
|
|
432
|
+
featureA: true,
|
|
433
|
+
featureB: false,
|
|
434
|
+
featureC: true,
|
|
435
|
+
},
|
|
436
|
+
'core/test-b': {
|
|
437
|
+
featureD: true,
|
|
438
|
+
featureE: false,
|
|
439
|
+
featureF: true,
|
|
419
440
|
},
|
|
420
441
|
},
|
|
421
442
|
},
|
|
422
|
-
'core/test': {
|
|
443
|
+
'core/test-a': {
|
|
444
|
+
preferences: {
|
|
445
|
+
features: undefined,
|
|
446
|
+
},
|
|
447
|
+
},
|
|
448
|
+
'core/test-b': {
|
|
423
449
|
preferences: {
|
|
424
450
|
features: undefined,
|
|
425
451
|
},
|
|
@@ -427,12 +453,12 @@ describe( 'migrateFeaturePreferencesToInterfaceStore', () => {
|
|
|
427
453
|
} );
|
|
428
454
|
} );
|
|
429
455
|
|
|
430
|
-
it( '
|
|
456
|
+
it( 'migrates multiple preferences from the persisted interface store to preferences, with interface state taking precedence over source stores', () => {
|
|
431
457
|
const persistenceInterface = createPersistenceInterface( {
|
|
432
458
|
storageKey: 'test-username',
|
|
433
459
|
} );
|
|
434
460
|
|
|
435
|
-
const
|
|
461
|
+
const sourceStateA = {
|
|
436
462
|
preferences: {
|
|
437
463
|
features: {
|
|
438
464
|
featureA: true,
|
|
@@ -442,7 +468,7 @@ describe( 'migrateFeaturePreferencesToInterfaceStore', () => {
|
|
|
442
468
|
},
|
|
443
469
|
};
|
|
444
470
|
|
|
445
|
-
const
|
|
471
|
+
const sourceStateB = {
|
|
446
472
|
preferences: {
|
|
447
473
|
features: {
|
|
448
474
|
featureD: true,
|
|
@@ -452,33 +478,63 @@ describe( 'migrateFeaturePreferencesToInterfaceStore', () => {
|
|
|
452
478
|
},
|
|
453
479
|
};
|
|
454
480
|
|
|
455
|
-
|
|
456
|
-
|
|
481
|
+
const interfaceState = {
|
|
482
|
+
otherData: {
|
|
483
|
+
test: 1,
|
|
484
|
+
},
|
|
485
|
+
preferences: {
|
|
486
|
+
features: {
|
|
487
|
+
'core/test-a': {
|
|
488
|
+
featureG: true,
|
|
489
|
+
featureH: false,
|
|
490
|
+
featureI: true,
|
|
491
|
+
},
|
|
492
|
+
'core/test-b': {
|
|
493
|
+
featureJ: true,
|
|
494
|
+
featureK: false,
|
|
495
|
+
featureL: true,
|
|
496
|
+
},
|
|
497
|
+
},
|
|
498
|
+
},
|
|
499
|
+
};
|
|
500
|
+
|
|
501
|
+
persistenceInterface.set( 'core/test-a', sourceStateA );
|
|
502
|
+
persistenceInterface.set( 'core/test-b', sourceStateB );
|
|
503
|
+
persistenceInterface.set( 'core/interface', interfaceState );
|
|
457
504
|
|
|
458
|
-
|
|
505
|
+
migrateFeaturePreferencesToPreferencesStore(
|
|
459
506
|
persistenceInterface,
|
|
460
507
|
'core/test-a'
|
|
461
508
|
);
|
|
462
509
|
|
|
463
|
-
|
|
510
|
+
migrateFeaturePreferencesToPreferencesStore(
|
|
464
511
|
persistenceInterface,
|
|
465
512
|
'core/test-b'
|
|
466
513
|
);
|
|
467
514
|
|
|
468
515
|
expect( persistenceInterface.get() ).toEqual( {
|
|
516
|
+
'core/preferences': {
|
|
517
|
+
preferences: {
|
|
518
|
+
'core/test-a': {
|
|
519
|
+
featureG: true,
|
|
520
|
+
featureH: false,
|
|
521
|
+
featureI: true,
|
|
522
|
+
},
|
|
523
|
+
'core/test-b': {
|
|
524
|
+
featureJ: true,
|
|
525
|
+
featureK: false,
|
|
526
|
+
featureL: true,
|
|
527
|
+
},
|
|
528
|
+
},
|
|
529
|
+
},
|
|
469
530
|
'core/interface': {
|
|
531
|
+
otherData: {
|
|
532
|
+
test: 1,
|
|
533
|
+
},
|
|
470
534
|
preferences: {
|
|
471
535
|
features: {
|
|
472
|
-
'core/test-a':
|
|
473
|
-
|
|
474
|
-
featureB: false,
|
|
475
|
-
featureC: true,
|
|
476
|
-
},
|
|
477
|
-
'core/test-b': {
|
|
478
|
-
featureD: true,
|
|
479
|
-
featureE: false,
|
|
480
|
-
featureF: true,
|
|
481
|
-
},
|
|
536
|
+
'core/test-a': undefined,
|
|
537
|
+
'core/test-b': undefined,
|
|
482
538
|
},
|
|
483
539
|
},
|
|
484
540
|
},
|
|
@@ -495,23 +551,67 @@ describe( 'migrateFeaturePreferencesToInterfaceStore', () => {
|
|
|
495
551
|
} );
|
|
496
552
|
} );
|
|
497
553
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
554
|
+
it( 'only migrates persisted preference data for the source name from source stores', () => {
|
|
555
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
556
|
+
storageKey: 'test-username',
|
|
557
|
+
} );
|
|
558
|
+
|
|
559
|
+
const sourceStateA = {
|
|
560
|
+
otherData: {
|
|
561
|
+
test: 1,
|
|
562
|
+
},
|
|
563
|
+
preferences: {
|
|
564
|
+
features: {
|
|
565
|
+
featureA: true,
|
|
566
|
+
featureB: false,
|
|
567
|
+
featureC: true,
|
|
568
|
+
},
|
|
569
|
+
},
|
|
570
|
+
};
|
|
571
|
+
|
|
572
|
+
const sourceStateB = {
|
|
573
|
+
otherData: {
|
|
574
|
+
test: 2,
|
|
575
|
+
},
|
|
576
|
+
preferences: {
|
|
577
|
+
features: {
|
|
578
|
+
featureD: true,
|
|
579
|
+
featureE: false,
|
|
580
|
+
featureF: true,
|
|
581
|
+
},
|
|
582
|
+
},
|
|
583
|
+
};
|
|
584
|
+
|
|
585
|
+
persistenceInterface.set( 'core/test-a', sourceStateA );
|
|
586
|
+
persistenceInterface.set( 'core/test-b', sourceStateB );
|
|
503
587
|
|
|
504
|
-
|
|
588
|
+
migrateFeaturePreferencesToPreferencesStore(
|
|
589
|
+
persistenceInterface,
|
|
590
|
+
'core/test-a'
|
|
591
|
+
);
|
|
592
|
+
|
|
593
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
594
|
+
'core/preferences': {
|
|
505
595
|
preferences: {
|
|
506
|
-
|
|
596
|
+
'core/test-a': {
|
|
507
597
|
featureA: true,
|
|
508
598
|
featureB: false,
|
|
509
599
|
featureC: true,
|
|
510
600
|
},
|
|
511
601
|
},
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
|
|
602
|
+
},
|
|
603
|
+
'core/test-a': {
|
|
604
|
+
otherData: {
|
|
605
|
+
test: 1,
|
|
606
|
+
},
|
|
607
|
+
preferences: {
|
|
608
|
+
features: undefined,
|
|
609
|
+
},
|
|
610
|
+
},
|
|
611
|
+
'core/test-b': {
|
|
612
|
+
otherData: {
|
|
613
|
+
test: 2,
|
|
614
|
+
},
|
|
515
615
|
preferences: {
|
|
516
616
|
features: {
|
|
517
617
|
featureD: true,
|
|
@@ -519,82 +619,53 @@ describe( 'migrateFeaturePreferencesToInterfaceStore', () => {
|
|
|
519
619
|
featureF: true,
|
|
520
620
|
},
|
|
521
621
|
},
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
persistenceInterface.set( 'core/test-b', sourceStateB );
|
|
526
|
-
|
|
527
|
-
migrateFeaturePreferencesToPreferencesStore(
|
|
528
|
-
persistenceInterface,
|
|
529
|
-
'core/test-a'
|
|
530
|
-
);
|
|
622
|
+
},
|
|
623
|
+
} );
|
|
624
|
+
} );
|
|
531
625
|
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
626
|
+
it( 'only migrates persisted data for the source name from interface', () => {
|
|
627
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
628
|
+
storageKey: 'test-username',
|
|
629
|
+
} );
|
|
536
630
|
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
},
|
|
545
|
-
'core/test-b': {
|
|
546
|
-
featureD: true,
|
|
547
|
-
featureE: false,
|
|
548
|
-
featureF: true,
|
|
549
|
-
},
|
|
550
|
-
},
|
|
551
|
-
},
|
|
552
|
-
'core/test-a': {
|
|
553
|
-
preferences: {
|
|
554
|
-
features: undefined,
|
|
631
|
+
const interfaceState = {
|
|
632
|
+
preferences: {
|
|
633
|
+
features: {
|
|
634
|
+
'core/test-a': {
|
|
635
|
+
featureG: true,
|
|
636
|
+
featureH: false,
|
|
637
|
+
featureI: true,
|
|
555
638
|
},
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
639
|
+
'core/test-b': {
|
|
640
|
+
featureJ: true,
|
|
641
|
+
featureK: false,
|
|
642
|
+
featureL: true,
|
|
560
643
|
},
|
|
561
644
|
},
|
|
562
|
-
}
|
|
563
|
-
}
|
|
645
|
+
},
|
|
646
|
+
};
|
|
564
647
|
|
|
565
|
-
|
|
566
|
-
const persistenceInterface = createPersistenceInterface( {
|
|
567
|
-
storageKey: 'test-username',
|
|
568
|
-
} );
|
|
648
|
+
persistenceInterface.set( 'core/interface', interfaceState );
|
|
569
649
|
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
featureB: false,
|
|
575
|
-
featureC: true,
|
|
576
|
-
},
|
|
577
|
-
},
|
|
578
|
-
};
|
|
650
|
+
migrateFeaturePreferencesToPreferencesStore(
|
|
651
|
+
persistenceInterface,
|
|
652
|
+
'core/test-a'
|
|
653
|
+
);
|
|
579
654
|
|
|
580
|
-
|
|
655
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
656
|
+
'core/preferences': {
|
|
581
657
|
preferences: {
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
658
|
+
'core/test-a': {
|
|
659
|
+
featureG: true,
|
|
660
|
+
featureH: false,
|
|
661
|
+
featureI: true,
|
|
586
662
|
},
|
|
587
663
|
},
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
const interfaceState = {
|
|
664
|
+
},
|
|
665
|
+
'core/interface': {
|
|
591
666
|
preferences: {
|
|
592
667
|
features: {
|
|
593
|
-
'core/test-a':
|
|
594
|
-
featureG: true,
|
|
595
|
-
featureH: false,
|
|
596
|
-
featureI: true,
|
|
597
|
-
},
|
|
668
|
+
'core/test-a': undefined,
|
|
598
669
|
'core/test-b': {
|
|
599
670
|
featureJ: true,
|
|
600
671
|
featureK: false,
|
|
@@ -602,299 +673,483 @@ describe( 'migrateFeaturePreferencesToInterfaceStore', () => {
|
|
|
602
673
|
},
|
|
603
674
|
},
|
|
604
675
|
},
|
|
605
|
-
}
|
|
676
|
+
},
|
|
677
|
+
} );
|
|
678
|
+
} );
|
|
679
|
+
} );
|
|
606
680
|
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
681
|
+
describe( 'migrateIndividualPreferenceToPreferencesStore', () => {
|
|
682
|
+
it( 'migrates an individual preference from the source to the preferences store', () => {
|
|
683
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
684
|
+
storageKey: 'test-username',
|
|
685
|
+
} );
|
|
610
686
|
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
'
|
|
614
|
-
|
|
687
|
+
const initialState = {
|
|
688
|
+
preferences: {
|
|
689
|
+
myPreference: '123',
|
|
690
|
+
},
|
|
691
|
+
};
|
|
615
692
|
|
|
616
|
-
|
|
617
|
-
persistenceInterface,
|
|
618
|
-
'core/test-b'
|
|
619
|
-
);
|
|
693
|
+
persistenceInterface.set( 'core/test', initialState );
|
|
620
694
|
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
featureL: true,
|
|
633
|
-
},
|
|
695
|
+
migrateIndividualPreferenceToPreferencesStore(
|
|
696
|
+
persistenceInterface,
|
|
697
|
+
{ from: 'core/test', scope: 'core/test' },
|
|
698
|
+
'myPreference'
|
|
699
|
+
);
|
|
700
|
+
|
|
701
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
702
|
+
'core/preferences': {
|
|
703
|
+
preferences: {
|
|
704
|
+
'core/test': {
|
|
705
|
+
myPreference: '123',
|
|
634
706
|
},
|
|
635
707
|
},
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
708
|
+
},
|
|
709
|
+
'core/test': {
|
|
710
|
+
preferences: {
|
|
711
|
+
myPreference: undefined,
|
|
712
|
+
},
|
|
713
|
+
},
|
|
714
|
+
} );
|
|
715
|
+
} );
|
|
716
|
+
|
|
717
|
+
it( 'does not overwrite other preferences in the preferences store', () => {
|
|
718
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
719
|
+
storageKey: 'test-username',
|
|
720
|
+
} );
|
|
721
|
+
|
|
722
|
+
const initialState = {
|
|
723
|
+
otherData: {
|
|
724
|
+
test: 1,
|
|
725
|
+
},
|
|
726
|
+
preferences: {
|
|
727
|
+
myPreference: '123',
|
|
728
|
+
},
|
|
729
|
+
};
|
|
730
|
+
|
|
731
|
+
persistenceInterface.set( 'core/test', initialState );
|
|
732
|
+
persistenceInterface.set( 'core/preferences', {
|
|
733
|
+
preferences: {
|
|
734
|
+
'core/other-store': {
|
|
735
|
+
preferenceA: 1,
|
|
736
|
+
preferenceB: 2,
|
|
737
|
+
},
|
|
738
|
+
'core/test': {
|
|
739
|
+
unrelatedPreference: 'unrelated-value',
|
|
740
|
+
},
|
|
741
|
+
},
|
|
742
|
+
} );
|
|
743
|
+
|
|
744
|
+
migrateIndividualPreferenceToPreferencesStore(
|
|
745
|
+
persistenceInterface,
|
|
746
|
+
{ from: 'core/test', scope: 'core/test' },
|
|
747
|
+
'myPreference'
|
|
748
|
+
);
|
|
749
|
+
|
|
750
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
751
|
+
'core/preferences': {
|
|
752
|
+
preferences: {
|
|
753
|
+
'core/other-store': {
|
|
754
|
+
preferenceA: 1,
|
|
755
|
+
preferenceB: 2,
|
|
756
|
+
},
|
|
757
|
+
'core/test': {
|
|
758
|
+
unrelatedPreference: 'unrelated-value',
|
|
759
|
+
myPreference: '123',
|
|
642
760
|
},
|
|
643
761
|
},
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
762
|
+
},
|
|
763
|
+
'core/test': {
|
|
764
|
+
otherData: {
|
|
765
|
+
test: 1,
|
|
766
|
+
},
|
|
767
|
+
preferences: {
|
|
768
|
+
myPreference: undefined,
|
|
769
|
+
},
|
|
770
|
+
},
|
|
771
|
+
} );
|
|
772
|
+
} );
|
|
773
|
+
|
|
774
|
+
it( 'supports moving data to a scope that is differently named to the source store', () => {
|
|
775
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
776
|
+
storageKey: 'test-username',
|
|
777
|
+
} );
|
|
778
|
+
|
|
779
|
+
const initialState = {
|
|
780
|
+
preferences: {
|
|
781
|
+
myPreference: '123',
|
|
782
|
+
},
|
|
783
|
+
};
|
|
784
|
+
|
|
785
|
+
persistenceInterface.set( 'core/source', initialState );
|
|
786
|
+
|
|
787
|
+
migrateIndividualPreferenceToPreferencesStore(
|
|
788
|
+
persistenceInterface,
|
|
789
|
+
{ from: 'core/source', scope: 'core/destination' },
|
|
790
|
+
'myPreference'
|
|
791
|
+
);
|
|
792
|
+
|
|
793
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
794
|
+
'core/preferences': {
|
|
795
|
+
preferences: {
|
|
796
|
+
'core/destination': {
|
|
797
|
+
myPreference: '123',
|
|
647
798
|
},
|
|
648
799
|
},
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
800
|
+
},
|
|
801
|
+
'core/source': {
|
|
802
|
+
preferences: {
|
|
803
|
+
myPreference: undefined,
|
|
804
|
+
},
|
|
805
|
+
},
|
|
806
|
+
} );
|
|
807
|
+
} );
|
|
808
|
+
|
|
809
|
+
it( 'does not migrate data if there is already a matching preference key at the target', () => {
|
|
810
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
811
|
+
storageKey: 'test-username',
|
|
812
|
+
} );
|
|
813
|
+
|
|
814
|
+
persistenceInterface.set( 'core/test', {
|
|
815
|
+
preferences: {
|
|
816
|
+
myPreference: '123',
|
|
817
|
+
},
|
|
818
|
+
} );
|
|
819
|
+
|
|
820
|
+
persistenceInterface.set( 'core/preferences', {
|
|
821
|
+
preferences: {
|
|
822
|
+
'core/test': {
|
|
823
|
+
myPreference: 'already-set',
|
|
824
|
+
},
|
|
825
|
+
},
|
|
826
|
+
} );
|
|
827
|
+
|
|
828
|
+
migrateIndividualPreferenceToPreferencesStore(
|
|
829
|
+
persistenceInterface,
|
|
830
|
+
{ from: 'core/test', scope: 'core/test' },
|
|
831
|
+
'myPreference'
|
|
832
|
+
);
|
|
833
|
+
|
|
834
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
835
|
+
'core/preferences': {
|
|
836
|
+
preferences: {
|
|
837
|
+
'core/test': {
|
|
838
|
+
myPreference: 'already-set',
|
|
652
839
|
},
|
|
653
840
|
},
|
|
654
|
-
}
|
|
841
|
+
},
|
|
842
|
+
'core/test': {
|
|
843
|
+
preferences: {
|
|
844
|
+
myPreference: '123',
|
|
845
|
+
},
|
|
846
|
+
},
|
|
847
|
+
} );
|
|
848
|
+
} );
|
|
849
|
+
|
|
850
|
+
it( 'migrates preferences that have a `false` value', () => {
|
|
851
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
852
|
+
storageKey: 'test-username',
|
|
655
853
|
} );
|
|
656
854
|
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
}
|
|
855
|
+
persistenceInterface.set( 'core/test', {
|
|
856
|
+
preferences: {
|
|
857
|
+
myFalsePreference: false,
|
|
858
|
+
},
|
|
859
|
+
} );
|
|
860
|
+
|
|
861
|
+
migrateIndividualPreferenceToPreferencesStore(
|
|
862
|
+
persistenceInterface,
|
|
863
|
+
{ from: 'core/test', scope: 'core/test' },
|
|
864
|
+
'myFalsePreference'
|
|
865
|
+
);
|
|
661
866
|
|
|
662
|
-
|
|
867
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
868
|
+
'core/preferences': {
|
|
663
869
|
preferences: {
|
|
664
|
-
|
|
870
|
+
'core/test': {
|
|
871
|
+
myFalsePreference: false,
|
|
872
|
+
},
|
|
873
|
+
},
|
|
874
|
+
},
|
|
875
|
+
'core/test': {
|
|
876
|
+
preferences: {},
|
|
877
|
+
},
|
|
878
|
+
} );
|
|
879
|
+
} );
|
|
880
|
+
} );
|
|
881
|
+
|
|
882
|
+
describe( 'migrateThirdPartyFeaturePreferencesToPreferencesStore', () => {
|
|
883
|
+
it( 'migrates multiple scopes from the interface package to the preferences package', () => {
|
|
884
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
885
|
+
storageKey: 'test-username',
|
|
886
|
+
} );
|
|
887
|
+
|
|
888
|
+
const interfaceState = {
|
|
889
|
+
otherData: {
|
|
890
|
+
test: 1,
|
|
891
|
+
},
|
|
892
|
+
preferences: {
|
|
893
|
+
features: {
|
|
894
|
+
'plugin-a': {
|
|
665
895
|
featureA: true,
|
|
666
896
|
featureB: false,
|
|
667
897
|
featureC: true,
|
|
668
898
|
},
|
|
899
|
+
'plugin-b': {
|
|
900
|
+
featureD: true,
|
|
901
|
+
featureE: false,
|
|
902
|
+
featureF: true,
|
|
903
|
+
},
|
|
669
904
|
},
|
|
670
|
-
}
|
|
905
|
+
},
|
|
906
|
+
};
|
|
907
|
+
persistenceInterface.set( 'core/interface', interfaceState );
|
|
908
|
+
|
|
909
|
+
migrateThirdPartyFeaturePreferencesToPreferencesStore(
|
|
910
|
+
persistenceInterface
|
|
911
|
+
);
|
|
671
912
|
|
|
672
|
-
|
|
913
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
914
|
+
'core/preferences': {
|
|
673
915
|
preferences: {
|
|
674
|
-
|
|
916
|
+
'plugin-a': {
|
|
917
|
+
featureA: true,
|
|
918
|
+
featureB: false,
|
|
919
|
+
featureC: true,
|
|
920
|
+
},
|
|
921
|
+
'plugin-b': {
|
|
675
922
|
featureD: true,
|
|
676
923
|
featureE: false,
|
|
677
924
|
featureF: true,
|
|
678
925
|
},
|
|
679
926
|
},
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
927
|
+
},
|
|
928
|
+
'core/interface': {
|
|
929
|
+
otherData: {
|
|
930
|
+
test: 1,
|
|
931
|
+
},
|
|
932
|
+
preferences: {
|
|
933
|
+
features: {
|
|
934
|
+
'plugin-a': undefined,
|
|
935
|
+
'plugin-b': undefined,
|
|
936
|
+
},
|
|
937
|
+
},
|
|
938
|
+
},
|
|
939
|
+
} );
|
|
940
|
+
} );
|
|
684
941
|
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
942
|
+
it( 'ignores any core scopes', () => {
|
|
943
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
944
|
+
storageKey: 'test-username',
|
|
945
|
+
} );
|
|
689
946
|
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
947
|
+
const interfaceState = {
|
|
948
|
+
preferences: {
|
|
949
|
+
features: {
|
|
950
|
+
'plugin-a': {
|
|
951
|
+
featureA: true,
|
|
952
|
+
featureB: false,
|
|
953
|
+
featureC: true,
|
|
954
|
+
},
|
|
955
|
+
'core/edit-post': {
|
|
956
|
+
featureD: true,
|
|
957
|
+
featureE: false,
|
|
958
|
+
featureF: true,
|
|
698
959
|
},
|
|
699
960
|
},
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
961
|
+
},
|
|
962
|
+
};
|
|
963
|
+
persistenceInterface.set( 'core/interface', interfaceState );
|
|
964
|
+
|
|
965
|
+
migrateThirdPartyFeaturePreferencesToPreferencesStore(
|
|
966
|
+
persistenceInterface
|
|
967
|
+
);
|
|
968
|
+
|
|
969
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
970
|
+
'core/preferences': {
|
|
971
|
+
preferences: {
|
|
972
|
+
'plugin-a': {
|
|
973
|
+
featureA: true,
|
|
974
|
+
featureB: false,
|
|
975
|
+
featureC: true,
|
|
703
976
|
},
|
|
704
977
|
},
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
978
|
+
},
|
|
979
|
+
'core/interface': {
|
|
980
|
+
preferences: {
|
|
981
|
+
features: {
|
|
982
|
+
'plugin-a': undefined,
|
|
983
|
+
'core/edit-post': {
|
|
708
984
|
featureD: true,
|
|
709
985
|
featureE: false,
|
|
710
986
|
featureF: true,
|
|
711
987
|
},
|
|
712
988
|
},
|
|
713
989
|
},
|
|
714
|
-
}
|
|
990
|
+
},
|
|
715
991
|
} );
|
|
992
|
+
} );
|
|
993
|
+
} );
|
|
716
994
|
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
995
|
+
describe( 'convertEditPostPanels', () => {
|
|
996
|
+
it( 'converts from one format to another', () => {
|
|
997
|
+
expect(
|
|
998
|
+
convertEditPostPanels( {
|
|
999
|
+
panels: {
|
|
1000
|
+
tags: {
|
|
1001
|
+
enabled: true,
|
|
1002
|
+
opened: true,
|
|
1003
|
+
},
|
|
1004
|
+
permalinks: {
|
|
1005
|
+
enabled: false,
|
|
1006
|
+
opened: false,
|
|
1007
|
+
},
|
|
1008
|
+
categories: {
|
|
1009
|
+
enabled: true,
|
|
1010
|
+
opened: false,
|
|
1011
|
+
},
|
|
1012
|
+
excerpt: {
|
|
1013
|
+
enabled: false,
|
|
1014
|
+
opened: true,
|
|
1015
|
+
},
|
|
1016
|
+
discussion: {
|
|
1017
|
+
enabled: false,
|
|
1018
|
+
},
|
|
1019
|
+
template: {
|
|
1020
|
+
opened: true,
|
|
735
1021
|
},
|
|
736
1022
|
},
|
|
737
|
-
}
|
|
1023
|
+
} )
|
|
1024
|
+
).toEqual( {
|
|
1025
|
+
inactivePanels: [ 'permalinks', 'excerpt', 'discussion' ],
|
|
1026
|
+
openPanels: [ 'tags', 'excerpt', 'template' ],
|
|
1027
|
+
} );
|
|
1028
|
+
} );
|
|
738
1029
|
|
|
739
|
-
|
|
1030
|
+
it( 'returns empty arrays when there is no data to convert', () => {
|
|
1031
|
+
expect( convertEditPostPanels( {} ) ).toEqual( {
|
|
1032
|
+
inactivePanels: [],
|
|
1033
|
+
openPanels: [],
|
|
1034
|
+
} );
|
|
1035
|
+
} );
|
|
1036
|
+
} );
|
|
740
1037
|
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
1038
|
+
describe( 'migrateInterfaceEnableItemsToPreferencesStore', () => {
|
|
1039
|
+
it( 'migrates enableItems to the preferences store', () => {
|
|
1040
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
1041
|
+
storageKey: 'test-username',
|
|
1042
|
+
} );
|
|
745
1043
|
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
featureI: true,
|
|
753
|
-
},
|
|
1044
|
+
persistenceInterface.set( 'core/interface', {
|
|
1045
|
+
enableItems: {
|
|
1046
|
+
singleEnableItems: {
|
|
1047
|
+
complementaryArea: {
|
|
1048
|
+
'core/edit-post': 'edit-post/document',
|
|
1049
|
+
'core/edit-site': 'edit-site/global-styles',
|
|
754
1050
|
},
|
|
755
1051
|
},
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
'
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
featureL: true,
|
|
764
|
-
},
|
|
1052
|
+
multipleEnableItems: {
|
|
1053
|
+
pinnedItems: {
|
|
1054
|
+
'core/edit-post': {
|
|
1055
|
+
'plugin-1': true,
|
|
1056
|
+
},
|
|
1057
|
+
'core/edit-site': {
|
|
1058
|
+
'plugin-2': true,
|
|
765
1059
|
},
|
|
766
1060
|
},
|
|
767
1061
|
},
|
|
768
|
-
}
|
|
1062
|
+
},
|
|
769
1063
|
} );
|
|
770
|
-
} );
|
|
771
1064
|
|
|
772
|
-
|
|
773
|
-
it( 'migrates an individual preference from the source to the preferences store', () => {
|
|
774
|
-
const persistenceInterface = createPersistenceInterface( {
|
|
775
|
-
storageKey: 'test-username',
|
|
776
|
-
} );
|
|
1065
|
+
migrateInterfaceEnableItemsToPreferencesStore( persistenceInterface );
|
|
777
1066
|
|
|
778
|
-
|
|
1067
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
1068
|
+
'core/preferences': {
|
|
779
1069
|
preferences: {
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
persistenceInterface.set( 'core/test', initialState );
|
|
785
|
-
|
|
786
|
-
migrateIndividualPreferenceToPreferencesStore(
|
|
787
|
-
persistenceInterface,
|
|
788
|
-
'core/test',
|
|
789
|
-
'myPreference'
|
|
790
|
-
);
|
|
791
|
-
|
|
792
|
-
expect( persistenceInterface.get() ).toEqual( {
|
|
793
|
-
'core/preferences': {
|
|
794
|
-
preferences: {
|
|
795
|
-
'core/test': {
|
|
796
|
-
myPreference: '123',
|
|
1070
|
+
'core/edit-post': {
|
|
1071
|
+
complementaryArea: 'edit-post/document',
|
|
1072
|
+
pinnedItems: {
|
|
1073
|
+
'plugin-1': true,
|
|
797
1074
|
},
|
|
798
1075
|
},
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
1076
|
+
'core/edit-site': {
|
|
1077
|
+
complementaryArea: 'edit-site/global-styles',
|
|
1078
|
+
pinnedItems: {
|
|
1079
|
+
'plugin-2': true,
|
|
1080
|
+
},
|
|
803
1081
|
},
|
|
804
1082
|
},
|
|
805
|
-
}
|
|
1083
|
+
},
|
|
1084
|
+
'core/interface': {
|
|
1085
|
+
enableItems: undefined,
|
|
1086
|
+
},
|
|
806
1087
|
} );
|
|
1088
|
+
} );
|
|
807
1089
|
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
const initialState = {
|
|
814
|
-
preferences: {
|
|
815
|
-
myPreference: '123',
|
|
816
|
-
},
|
|
817
|
-
};
|
|
1090
|
+
it( 'merges pinnedItems and complementaryAreas with existing preferences store data', () => {
|
|
1091
|
+
const persistenceInterface = createPersistenceInterface( {
|
|
1092
|
+
storageKey: 'test-username',
|
|
1093
|
+
} );
|
|
818
1094
|
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
},
|
|
826
|
-
'core/test': {
|
|
827
|
-
unrelatedPreference: 'unrelated-value',
|
|
1095
|
+
persistenceInterface.set( 'core/interface', {
|
|
1096
|
+
enableItems: {
|
|
1097
|
+
singleEnableItems: {
|
|
1098
|
+
complementaryArea: {
|
|
1099
|
+
'core/edit-post': 'edit-post/document',
|
|
1100
|
+
'core/edit-site': 'edit-site/global-styles',
|
|
828
1101
|
},
|
|
829
1102
|
},
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
'core/test',
|
|
835
|
-
'myPreference'
|
|
836
|
-
);
|
|
837
|
-
|
|
838
|
-
expect( persistenceInterface.get() ).toEqual( {
|
|
839
|
-
'core/preferences': {
|
|
840
|
-
preferences: {
|
|
841
|
-
'core/other-store': {
|
|
842
|
-
preferenceA: 1,
|
|
843
|
-
preferenceB: 2,
|
|
1103
|
+
multipleEnableItems: {
|
|
1104
|
+
pinnedItems: {
|
|
1105
|
+
'core/edit-post': {
|
|
1106
|
+
'plugin-1': true,
|
|
844
1107
|
},
|
|
845
|
-
'core/
|
|
846
|
-
|
|
847
|
-
myPreference: '123',
|
|
1108
|
+
'core/edit-site': {
|
|
1109
|
+
'plugin-2': true,
|
|
848
1110
|
},
|
|
849
1111
|
},
|
|
850
1112
|
},
|
|
851
|
-
|
|
852
|
-
preferences: {
|
|
853
|
-
myPreference: undefined,
|
|
854
|
-
},
|
|
855
|
-
},
|
|
856
|
-
} );
|
|
1113
|
+
},
|
|
857
1114
|
} );
|
|
858
1115
|
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
persistenceInterface.set( 'core/test', {
|
|
865
|
-
preferences: {
|
|
866
|
-
myPreference: '123',
|
|
1116
|
+
persistenceInterface.set( 'core/preferences', {
|
|
1117
|
+
preferences: {
|
|
1118
|
+
'core/edit-post': {
|
|
1119
|
+
preferenceA: 1,
|
|
1120
|
+
preferenceB: 2,
|
|
867
1121
|
},
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
persistenceInterface.set( 'core/preferences', {
|
|
871
|
-
preferences: {
|
|
872
|
-
'core/test': {
|
|
873
|
-
myPreference: 'already-set',
|
|
874
|
-
},
|
|
1122
|
+
'core/edit-site': {
|
|
1123
|
+
preferenceC: true,
|
|
875
1124
|
},
|
|
876
|
-
}
|
|
1125
|
+
},
|
|
1126
|
+
} );
|
|
877
1127
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
1128
|
+
migrateInterfaceEnableItemsToPreferencesStore( persistenceInterface );
|
|
1129
|
+
|
|
1130
|
+
expect( persistenceInterface.get() ).toEqual( {
|
|
1131
|
+
'core/preferences': {
|
|
1132
|
+
preferences: {
|
|
1133
|
+
'core/edit-post': {
|
|
1134
|
+
preferenceA: 1,
|
|
1135
|
+
preferenceB: 2,
|
|
1136
|
+
complementaryArea: 'edit-post/document',
|
|
1137
|
+
pinnedItems: {
|
|
1138
|
+
'plugin-1': true,
|
|
889
1139
|
},
|
|
890
1140
|
},
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
1141
|
+
'core/edit-site': {
|
|
1142
|
+
preferenceC: true,
|
|
1143
|
+
complementaryArea: 'edit-site/global-styles',
|
|
1144
|
+
pinnedItems: {
|
|
1145
|
+
'plugin-2': true,
|
|
1146
|
+
},
|
|
895
1147
|
},
|
|
896
1148
|
},
|
|
897
|
-
}
|
|
1149
|
+
},
|
|
1150
|
+
'core/interface': {
|
|
1151
|
+
enableItems: undefined,
|
|
1152
|
+
},
|
|
898
1153
|
} );
|
|
899
1154
|
} );
|
|
900
1155
|
} );
|