@wordpress/data 6.7.0 → 6.10.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.
@@ -6,15 +6,7 @@ import deepFreeze from 'deep-freeze';
6
6
  /**
7
7
  * Internal dependencies
8
8
  */
9
- import plugin, {
10
- createPersistenceInterface,
11
- withLazySameState,
12
- migrateFeaturePreferencesToPreferencesStore,
13
- migrateThirdPartyFeaturePreferencesToPreferencesStore,
14
- migrateIndividualPreferenceToPreferencesStore,
15
- convertEditPostPanels,
16
- migrateInterfaceEnableItemsToPreferencesStore,
17
- } from '../';
9
+ import plugin, { createPersistenceInterface, withLazySameState } from '../';
18
10
  import objectStorage from '../storage/object';
19
11
  import { createRegistry } from '../../../';
20
12
 
@@ -385,771 +377,3 @@ describe( 'persistence', () => {
385
377
  } );
386
378
  } );
387
379
  } );
388
-
389
- describe( 'migrateFeaturePreferencesToPreferencesStore', () => {
390
- it( 'migrates multiple preferences from persisted source stores to preferences', () => {
391
- const persistenceInterface = createPersistenceInterface( {
392
- storageKey: 'test-username',
393
- } );
394
-
395
- const sourceStateA = {
396
- preferences: {
397
- features: {
398
- featureA: true,
399
- featureB: false,
400
- featureC: true,
401
- },
402
- },
403
- };
404
-
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
- );
422
-
423
- migrateFeaturePreferencesToPreferencesStore(
424
- persistenceInterface,
425
- 'core/test-b'
426
- );
427
-
428
- expect( persistenceInterface.get() ).toEqual( {
429
- 'core/preferences': {
430
- preferences: {
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,
440
- },
441
- },
442
- },
443
- 'core/test-a': {
444
- preferences: {
445
- features: undefined,
446
- },
447
- },
448
- 'core/test-b': {
449
- preferences: {
450
- features: undefined,
451
- },
452
- },
453
- } );
454
- } );
455
-
456
- it( 'migrates multiple preferences from the persisted interface store to preferences, with interface state taking precedence over source stores', () => {
457
- const persistenceInterface = createPersistenceInterface( {
458
- storageKey: 'test-username',
459
- } );
460
-
461
- const sourceStateA = {
462
- preferences: {
463
- features: {
464
- featureA: true,
465
- featureB: false,
466
- featureC: true,
467
- },
468
- },
469
- };
470
-
471
- const sourceStateB = {
472
- preferences: {
473
- features: {
474
- featureD: true,
475
- featureE: false,
476
- featureF: true,
477
- },
478
- },
479
- };
480
-
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 );
504
-
505
- migrateFeaturePreferencesToPreferencesStore(
506
- persistenceInterface,
507
- 'core/test-a'
508
- );
509
-
510
- migrateFeaturePreferencesToPreferencesStore(
511
- persistenceInterface,
512
- 'core/test-b'
513
- );
514
-
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
- },
530
- 'core/interface': {
531
- otherData: {
532
- test: 1,
533
- },
534
- preferences: {
535
- features: {
536
- 'core/test-a': undefined,
537
- 'core/test-b': undefined,
538
- },
539
- },
540
- },
541
- 'core/test-a': {
542
- preferences: {
543
- features: undefined,
544
- },
545
- },
546
- 'core/test-b': {
547
- preferences: {
548
- features: undefined,
549
- },
550
- },
551
- } );
552
- } );
553
-
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 );
587
-
588
- migrateFeaturePreferencesToPreferencesStore(
589
- persistenceInterface,
590
- 'core/test-a'
591
- );
592
-
593
- expect( persistenceInterface.get() ).toEqual( {
594
- 'core/preferences': {
595
- preferences: {
596
- 'core/test-a': {
597
- featureA: true,
598
- featureB: false,
599
- featureC: true,
600
- },
601
- },
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
- },
615
- preferences: {
616
- features: {
617
- featureD: true,
618
- featureE: false,
619
- featureF: true,
620
- },
621
- },
622
- },
623
- } );
624
- } );
625
-
626
- it( 'only migrates persisted data for the source name from interface', () => {
627
- const persistenceInterface = createPersistenceInterface( {
628
- storageKey: 'test-username',
629
- } );
630
-
631
- const interfaceState = {
632
- preferences: {
633
- features: {
634
- 'core/test-a': {
635
- featureG: true,
636
- featureH: false,
637
- featureI: true,
638
- },
639
- 'core/test-b': {
640
- featureJ: true,
641
- featureK: false,
642
- featureL: true,
643
- },
644
- },
645
- },
646
- };
647
-
648
- persistenceInterface.set( 'core/interface', interfaceState );
649
-
650
- migrateFeaturePreferencesToPreferencesStore(
651
- persistenceInterface,
652
- 'core/test-a'
653
- );
654
-
655
- expect( persistenceInterface.get() ).toEqual( {
656
- 'core/preferences': {
657
- preferences: {
658
- 'core/test-a': {
659
- featureG: true,
660
- featureH: false,
661
- featureI: true,
662
- },
663
- },
664
- },
665
- 'core/interface': {
666
- preferences: {
667
- features: {
668
- 'core/test-a': undefined,
669
- 'core/test-b': {
670
- featureJ: true,
671
- featureK: false,
672
- featureL: true,
673
- },
674
- },
675
- },
676
- },
677
- } );
678
- } );
679
- } );
680
-
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
- } );
686
-
687
- const initialState = {
688
- preferences: {
689
- myPreference: '123',
690
- },
691
- };
692
-
693
- persistenceInterface.set( 'core/test', initialState );
694
-
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',
706
- },
707
- },
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',
760
- },
761
- },
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',
798
- },
799
- },
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',
839
- },
840
- },
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',
853
- } );
854
-
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
- );
866
-
867
- expect( persistenceInterface.get() ).toEqual( {
868
- 'core/preferences': {
869
- preferences: {
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': {
895
- featureA: true,
896
- featureB: false,
897
- featureC: true,
898
- },
899
- 'plugin-b': {
900
- featureD: true,
901
- featureE: false,
902
- featureF: true,
903
- },
904
- },
905
- },
906
- };
907
- persistenceInterface.set( 'core/interface', interfaceState );
908
-
909
- migrateThirdPartyFeaturePreferencesToPreferencesStore(
910
- persistenceInterface
911
- );
912
-
913
- expect( persistenceInterface.get() ).toEqual( {
914
- 'core/preferences': {
915
- preferences: {
916
- 'plugin-a': {
917
- featureA: true,
918
- featureB: false,
919
- featureC: true,
920
- },
921
- 'plugin-b': {
922
- featureD: true,
923
- featureE: false,
924
- featureF: true,
925
- },
926
- },
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
- } );
941
-
942
- it( 'ignores any core scopes', () => {
943
- const persistenceInterface = createPersistenceInterface( {
944
- storageKey: 'test-username',
945
- } );
946
-
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,
959
- },
960
- },
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,
976
- },
977
- },
978
- },
979
- 'core/interface': {
980
- preferences: {
981
- features: {
982
- 'plugin-a': undefined,
983
- 'core/edit-post': {
984
- featureD: true,
985
- featureE: false,
986
- featureF: true,
987
- },
988
- },
989
- },
990
- },
991
- } );
992
- } );
993
- } );
994
-
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,
1021
- },
1022
- },
1023
- } )
1024
- ).toEqual( {
1025
- inactivePanels: [ 'permalinks', 'excerpt', 'discussion' ],
1026
- openPanels: [ 'tags', 'excerpt', 'template' ],
1027
- } );
1028
- } );
1029
-
1030
- it( 'returns empty arrays when there is no data to convert', () => {
1031
- expect( convertEditPostPanels( {} ) ).toEqual( {
1032
- inactivePanels: [],
1033
- openPanels: [],
1034
- } );
1035
- } );
1036
- } );
1037
-
1038
- describe( 'migrateInterfaceEnableItemsToPreferencesStore', () => {
1039
- it( 'migrates enableItems to the preferences store', () => {
1040
- const persistenceInterface = createPersistenceInterface( {
1041
- storageKey: 'test-username',
1042
- } );
1043
-
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',
1050
- },
1051
- },
1052
- multipleEnableItems: {
1053
- pinnedItems: {
1054
- 'core/edit-post': {
1055
- 'plugin-1': true,
1056
- },
1057
- 'core/edit-site': {
1058
- 'plugin-2': true,
1059
- },
1060
- },
1061
- },
1062
- },
1063
- } );
1064
-
1065
- migrateInterfaceEnableItemsToPreferencesStore( persistenceInterface );
1066
-
1067
- expect( persistenceInterface.get() ).toEqual( {
1068
- 'core/preferences': {
1069
- preferences: {
1070
- 'core/edit-post': {
1071
- complementaryArea: 'edit-post/document',
1072
- pinnedItems: {
1073
- 'plugin-1': true,
1074
- },
1075
- },
1076
- 'core/edit-site': {
1077
- complementaryArea: 'edit-site/global-styles',
1078
- pinnedItems: {
1079
- 'plugin-2': true,
1080
- },
1081
- },
1082
- },
1083
- },
1084
- 'core/interface': {
1085
- enableItems: undefined,
1086
- },
1087
- } );
1088
- } );
1089
-
1090
- it( 'merges pinnedItems and complementaryAreas with existing preferences store data', () => {
1091
- const persistenceInterface = createPersistenceInterface( {
1092
- storageKey: 'test-username',
1093
- } );
1094
-
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',
1101
- },
1102
- },
1103
- multipleEnableItems: {
1104
- pinnedItems: {
1105
- 'core/edit-post': {
1106
- 'plugin-1': true,
1107
- },
1108
- 'core/edit-site': {
1109
- 'plugin-2': true,
1110
- },
1111
- },
1112
- },
1113
- },
1114
- } );
1115
-
1116
- persistenceInterface.set( 'core/preferences', {
1117
- preferences: {
1118
- 'core/edit-post': {
1119
- preferenceA: 1,
1120
- preferenceB: 2,
1121
- },
1122
- 'core/edit-site': {
1123
- preferenceC: true,
1124
- },
1125
- },
1126
- } );
1127
-
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,
1139
- },
1140
- },
1141
- 'core/edit-site': {
1142
- preferenceC: true,
1143
- complementaryArea: 'edit-site/global-styles',
1144
- pinnedItems: {
1145
- 'plugin-2': true,
1146
- },
1147
- },
1148
- },
1149
- },
1150
- 'core/interface': {
1151
- enableItems: undefined,
1152
- },
1153
- } );
1154
- } );
1155
- } );