@wordpress/core-data 4.0.1 → 4.0.5

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.
Files changed (116) hide show
  1. package/README.md +13 -7
  2. package/build/actions.js +178 -122
  3. package/build/actions.js.map +1 -1
  4. package/build/batch/default-processor.js +58 -27
  5. package/build/batch/default-processor.js.map +1 -1
  6. package/build/entities.js +70 -23
  7. package/build/entities.js.map +1 -1
  8. package/build/fetch/__experimental-fetch-url-data.js +1 -1
  9. package/build/fetch/__experimental-fetch-url-data.js.map +1 -1
  10. package/build/index.js +9 -17
  11. package/build/index.js.map +1 -1
  12. package/build/locks/actions.js +17 -77
  13. package/build/locks/actions.js.map +1 -1
  14. package/build/locks/engine.js +77 -0
  15. package/build/locks/engine.js.map +1 -0
  16. package/build/locks/reducer.js +1 -5
  17. package/build/locks/reducer.js.map +1 -1
  18. package/build/locks/selectors.js +6 -6
  19. package/build/locks/selectors.js.map +1 -1
  20. package/build/queried-data/get-query-parts.js +9 -4
  21. package/build/queried-data/get-query-parts.js.map +1 -1
  22. package/build/queried-data/selectors.js +3 -9
  23. package/build/queried-data/selectors.js.map +1 -1
  24. package/build/reducer.js +17 -22
  25. package/build/reducer.js.map +1 -1
  26. package/build/resolvers.js +151 -97
  27. package/build/resolvers.js.map +1 -1
  28. package/build/selectors.js +79 -14
  29. package/build/selectors.js.map +1 -1
  30. package/build/utils/forward-resolver.js +23 -0
  31. package/build/utils/forward-resolver.js.map +1 -0
  32. package/build/utils/index.js +11 -3
  33. package/build/utils/index.js.map +1 -1
  34. package/build/utils/is-raw-attribute.js +19 -0
  35. package/build/utils/is-raw-attribute.js.map +1 -0
  36. package/build-module/actions.js +155 -112
  37. package/build-module/actions.js.map +1 -1
  38. package/build-module/batch/default-processor.js +57 -27
  39. package/build-module/batch/default-processor.js.map +1 -1
  40. package/build-module/entities.js +65 -19
  41. package/build-module/entities.js.map +1 -1
  42. package/build-module/fetch/__experimental-fetch-url-data.js +1 -1
  43. package/build-module/fetch/__experimental-fetch-url-data.js.map +1 -1
  44. package/build-module/index.js +10 -14
  45. package/build-module/index.js.map +1 -1
  46. package/build-module/locks/actions.js +14 -68
  47. package/build-module/locks/actions.js.map +1 -1
  48. package/build-module/locks/engine.js +66 -0
  49. package/build-module/locks/engine.js.map +1 -0
  50. package/build-module/locks/reducer.js +1 -2
  51. package/build-module/locks/reducer.js.map +1 -1
  52. package/build-module/locks/selectors.js +4 -4
  53. package/build-module/locks/selectors.js.map +1 -1
  54. package/build-module/queried-data/get-query-parts.js +9 -4
  55. package/build-module/queried-data/get-query-parts.js.map +1 -1
  56. package/build-module/queried-data/selectors.js +3 -9
  57. package/build-module/queried-data/selectors.js.map +1 -1
  58. package/build-module/reducer.js +15 -19
  59. package/build-module/reducer.js.map +1 -1
  60. package/build-module/resolvers.js +123 -81
  61. package/build-module/resolvers.js.map +1 -1
  62. package/build-module/selectors.js +74 -13
  63. package/build-module/selectors.js.map +1 -1
  64. package/build-module/utils/forward-resolver.js +15 -0
  65. package/build-module/utils/forward-resolver.js.map +1 -0
  66. package/build-module/utils/index.js +2 -1
  67. package/build-module/utils/index.js.map +1 -1
  68. package/build-module/utils/is-raw-attribute.js +12 -0
  69. package/build-module/utils/is-raw-attribute.js.map +1 -0
  70. package/package.json +10 -11
  71. package/src/actions.js +163 -194
  72. package/src/batch/default-processor.js +57 -26
  73. package/src/batch/test/default-processor.js +53 -26
  74. package/src/entities.js +47 -19
  75. package/src/fetch/__experimental-fetch-url-data.js +1 -1
  76. package/src/index.js +7 -10
  77. package/src/locks/actions.js +10 -61
  78. package/src/locks/engine.js +43 -0
  79. package/src/locks/reducer.js +1 -3
  80. package/src/locks/selectors.js +4 -4
  81. package/src/locks/test/engine.js +135 -0
  82. package/src/locks/test/reducer.js +1 -1
  83. package/src/locks/test/selectors.js +105 -124
  84. package/src/queried-data/get-query-parts.js +11 -6
  85. package/src/queried-data/selectors.js +2 -9
  86. package/src/queried-data/test/get-query-parts.js +1 -1
  87. package/src/queried-data/test/selectors.js +1 -0
  88. package/src/reducer.js +14 -19
  89. package/src/resolvers.js +132 -120
  90. package/src/selectors.js +156 -44
  91. package/src/test/actions.js +330 -170
  92. package/src/test/entities.js +40 -26
  93. package/src/test/resolvers.js +270 -223
  94. package/src/test/selectors.js +127 -1
  95. package/src/utils/forward-resolver.js +14 -0
  96. package/src/utils/index.js +2 -1
  97. package/src/utils/is-raw-attribute.js +11 -0
  98. package/src/utils/test/is-raw-attribute.js +22 -0
  99. package/build/controls.js +0 -44
  100. package/build/controls.js.map +0 -1
  101. package/build/locks/index.js +0 -47
  102. package/build/locks/index.js.map +0 -1
  103. package/build/utils/if-not-resolved.js +0 -46
  104. package/build/utils/if-not-resolved.js.map +0 -1
  105. package/build-module/controls.js +0 -31
  106. package/build-module/controls.js.map +0 -1
  107. package/build-module/locks/index.js +0 -4
  108. package/build-module/locks/index.js.map +0 -1
  109. package/build-module/utils/if-not-resolved.js +0 -36
  110. package/build-module/utils/if-not-resolved.js.map +0 -1
  111. package/src/controls.js +0 -31
  112. package/src/locks/index.js +0 -3
  113. package/src/locks/test/actions.js +0 -307
  114. package/src/test/integration.js +0 -264
  115. package/src/utils/if-not-resolved.js +0 -40
  116. package/src/utils/test/if-not-resolved.js +0 -75
@@ -1,3 +1,9 @@
1
+ /**
2
+ * WordPress dependencies
3
+ */
4
+ import triggerFetch from '@wordpress/api-fetch';
5
+ jest.mock( '@wordpress/api-fetch' );
6
+
1
7
  /**
2
8
  * Internal dependencies
3
9
  */
@@ -7,7 +13,6 @@ import {
7
13
  getKindEntities,
8
14
  prePersistPostType,
9
15
  } from '../entities';
10
- import { addEntities } from '../actions';
11
16
 
12
17
  describe( 'getMethodName', () => {
13
18
  it( 'should return the right method name for an entity with the root kind', () => {
@@ -45,43 +50,52 @@ describe( 'getMethodName', () => {
45
50
  } );
46
51
 
47
52
  describe( 'getKindEntities', () => {
53
+ beforeEach( async () => {
54
+ triggerFetch.mockReset();
55
+ jest.useFakeTimers();
56
+ } );
57
+
48
58
  it( 'shouldn’t do anything if the entities have already been resolved', async () => {
59
+ const dispatch = jest.fn();
60
+ const select = {
61
+ getEntitiesByKind: jest.fn( () => entities ),
62
+ };
49
63
  const entities = [ { kind: 'postType' } ];
50
- const fulfillment = getKindEntities( 'postType' );
51
- // Start the generator
52
- fulfillment.next();
53
- // Provide the entities
54
- const end = fulfillment.next( entities );
55
- expect( end.done ).toBe( true );
64
+ await getKindEntities( 'postType' )( { dispatch, select } );
65
+ expect( dispatch ).not.toHaveBeenCalled();
56
66
  } );
57
67
 
58
68
  it( 'shouldn’t do anything if there no defined kind config', async () => {
59
- const fulfillment = getKindEntities( 'unknownKind' );
60
- // Start the generator
61
- fulfillment.next();
62
- // Provide no entities to continue
63
- const end = fulfillment.next( [] );
64
- expect( end.done ).toBe( true );
69
+ const dispatch = jest.fn();
70
+ const select = {
71
+ getEntitiesByKind: jest.fn( () => [] ),
72
+ };
73
+ await getKindEntities( 'unknownKind' )( { dispatch, select } );
74
+ expect( dispatch ).not.toHaveBeenCalled();
65
75
  } );
66
76
 
67
77
  it( 'should fetch and add the entities', async () => {
68
78
  const fetchedEntities = [
69
79
  {
70
- baseURL: '/wp/v2/posts',
71
- kind: 'postType',
72
- name: 'post',
80
+ rest_base: 'posts',
81
+ labels: {
82
+ singular_name: 'post',
83
+ },
73
84
  },
74
85
  ];
75
- const fulfillment = getKindEntities( 'postType' );
76
- // Start the generator
77
- fulfillment.next();
78
- // Provide no entities to continue
79
- fulfillment.next( [] );
80
- // Fetch entities and trigger action
81
- const { value: action } = fulfillment.next( fetchedEntities );
82
- expect( action ).toEqual( addEntities( fetchedEntities ) );
83
- const end = fulfillment.next();
84
- expect( end ).toEqual( { done: true, value: fetchedEntities } );
86
+ const dispatch = jest.fn();
87
+ const select = {
88
+ getEntitiesByKind: jest.fn( () => [] ),
89
+ };
90
+ triggerFetch.mockImplementation( () => fetchedEntities );
91
+
92
+ await getKindEntities( 'postType' )( { dispatch, select } );
93
+ expect( dispatch ).toHaveBeenCalledTimes( 1 );
94
+ expect( dispatch.mock.calls[ 0 ][ 0 ].type ).toBe( 'ADD_ENTITIES' );
95
+ expect( dispatch.mock.calls[ 0 ][ 0 ].entities.length ).toBe( 1 );
96
+ expect( dispatch.mock.calls[ 0 ][ 0 ].entities[ 0 ].baseURL ).toBe(
97
+ '/wp/v2/posts'
98
+ );
85
99
  } );
86
100
  } );
87
101