1
1
import type { LocalizedField } from '@shopify/ui-extensions/checkout' ;
2
2
3
- import { useLocalizedFields } from '../localized-fields' ;
3
+ import { useLocalizedFields , useLocalizedField } from '../localized-fields' ;
4
4
5
5
import { mount , createMockStatefulRemoteSubscribable } from './mount' ;
6
6
@@ -19,7 +19,53 @@ describe('useLocalizedFields', () => {
19
19
) ;
20
20
} ) ;
21
21
22
- it ( 'returns empty if no localized fields match the passed keys' , ( ) => {
22
+ it ( 'returns all localized fields if no keys are passed' , ( ) => {
23
+ const localizedFields : LocalizedField [ ] = [
24
+ {
25
+ key : 'TAX_CREDENTIAL_BR' ,
26
+ title : 'CPF/CNPJ' ,
27
+ value : 'test-value' ,
28
+ } ,
29
+ {
30
+ key : 'SHIPPING_CREDENTIAL_BR' ,
31
+ title : 'CPF/CNPJ' ,
32
+ value : 'test-value' ,
33
+ } ,
34
+ ] ;
35
+
36
+ const extensionApi = {
37
+ localizedFields : createMockStatefulRemoteSubscribable ( localizedFields ) ,
38
+ } ;
39
+
40
+ const { value} = mount . hook ( ( ) => useLocalizedFields ( ) , { extensionApi} ) ;
41
+
42
+ expect ( value ) . toStrictEqual ( localizedFields ) ;
43
+ } ) ;
44
+
45
+ it ( 'returns an empty array if the passed keys array is empty' , ( ) => {
46
+ const localizedFields : LocalizedField [ ] = [
47
+ {
48
+ key : 'TAX_CREDENTIAL_BR' ,
49
+ title : 'CPF/CNPJ' ,
50
+ value : 'test-value' ,
51
+ } ,
52
+ {
53
+ key : 'SHIPPING_CREDENTIAL_BR' ,
54
+ title : 'CPF/CNPJ' ,
55
+ value : 'test-value' ,
56
+ } ,
57
+ ] ;
58
+
59
+ const extensionApi = {
60
+ localizedFields : createMockStatefulRemoteSubscribable ( localizedFields ) ,
61
+ } ;
62
+
63
+ const { value} = mount . hook ( ( ) => useLocalizedFields ( [ ] ) , { extensionApi} ) ;
64
+
65
+ expect ( value ) . toStrictEqual ( [ ] ) ;
66
+ } ) ;
67
+
68
+ it ( 'returns an empty array if no localized fields match the passed keys' , ( ) => {
23
69
const localizedFields : LocalizedField [ ] = [
24
70
{
25
71
key : 'TAX_CREDENTIAL_BR' ,
@@ -75,4 +121,92 @@ describe('useLocalizedFields', () => {
75
121
76
122
expect ( value ) . toMatchObject ( [ localizedFields [ 0 ] , localizedFields [ 2 ] ] ) ;
77
123
} ) ;
124
+
125
+ it ( 'returns an array of localized fields for any matching fields' , ( ) => {
126
+ const localizedFields : LocalizedField [ ] = [
127
+ {
128
+ key : 'TAX_CREDENTIAL_MX' ,
129
+ title : 'Tax credential MX' ,
130
+ value : 'test-value' ,
131
+ } ,
132
+ {
133
+ key : 'SHIPPING_CREDENTIAL_MX' ,
134
+ title : 'Shipping credential MX' ,
135
+ value : 'test-value' ,
136
+ } ,
137
+ {
138
+ key : 'TAX_CREDENTIAL_USE_MX' ,
139
+ title : 'Tax credential use MX' ,
140
+ value : 'test-value' ,
141
+ } ,
142
+ ] ;
143
+
144
+ const extensionApi = {
145
+ localizedFields : createMockStatefulRemoteSubscribable ( localizedFields ) ,
146
+ } ;
147
+
148
+ const { value} = mount . hook (
149
+ ( ) =>
150
+ useLocalizedFields ( [
151
+ 'TAX_CREDENTIAL_MX' ,
152
+ 'TAX_CREDENTIAL_BR' ,
153
+ 'TAX_CREDENTIAL_USE_MX' ,
154
+ ] ) ,
155
+ { extensionApi} ,
156
+ ) ;
157
+
158
+ expect ( value ) . toMatchObject ( [ localizedFields [ 0 ] , localizedFields [ 2 ] ] ) ;
159
+ } ) ;
160
+ } ) ;
161
+
162
+ describe ( 'useLocalizedField' , ( ) => {
163
+ it ( 'returns the localized field that matches the passed key' , async ( ) => {
164
+ const localizedFields : LocalizedField [ ] = [
165
+ {
166
+ key : 'TAX_CREDENTIAL_MX' ,
167
+ title : 'Tax credential MX' ,
168
+ value : 'test-value-1' ,
169
+ } ,
170
+ {
171
+ key : 'SHIPPING_CREDENTIAL_MX' ,
172
+ title : 'Shipping credential MX' ,
173
+ value : 'test-value-2' ,
174
+ } ,
175
+ {
176
+ key : 'TAX_CREDENTIAL_USE_MX' ,
177
+ title : 'Tax credential use MX' ,
178
+ value : 'test-value-3' ,
179
+ } ,
180
+ ] ;
181
+
182
+ const extensionApi = {
183
+ localizedFields : createMockStatefulRemoteSubscribable ( localizedFields ) ,
184
+ } ;
185
+
186
+ const { value} = mount . hook (
187
+ ( ) => useLocalizedField ( 'TAX_CREDENTIAL_USE_MX' ) ,
188
+ {
189
+ extensionApi,
190
+ } ,
191
+ ) ;
192
+
193
+ expect ( value ) . toStrictEqual ( localizedFields [ 2 ] ) ;
194
+ } ) ;
195
+
196
+ it ( 'returns undefined if no localized field matches the passed key' , async ( ) => {
197
+ const localizedFields : LocalizedField [ ] = [ ] ;
198
+
199
+ const extensionApi = {
200
+ localizedFields : createMockStatefulRemoteSubscribable ( localizedFields ) ,
201
+ } ;
202
+
203
+ const { value} = mount . hook (
204
+ ( ) => useLocalizedField ( 'TAX_CREDENTIAL_USE_MX' ) ,
205
+ {
206
+ extensionApi,
207
+ } ,
208
+ ) ;
209
+
210
+ expect ( value ) . toBeUndefined ( ) ;
211
+ } ) ;
78
212
} ) ;
0 commit comments