@@ -118,6 +118,105 @@ describe("BaseExportFormatter", () => {
118118 jest . clearAllMocks ( ) ;
119119 } ) ;
120120
121+ /***********************************************************
122+ * fetchVariants
123+ ***********************************************************/
124+ describe ( "fetchVariants" , ( ) => {
125+ it ( "should fetch all variants and include base variant if id: all provided" , async ( ) => {
126+ const output = createMockOutput ( ) ;
127+ const projectConfig = createMockProjectConfig ( {
128+ projects : [ { id : "project1" } , { id : "project2" } ] ,
129+ variants : [ { id : "all" } ] ,
130+ } ) ;
131+
132+ const mockVariants = [
133+ { id : "variant1" , name : "Variant 1" } ,
134+ { id : "variant2" , name : "Variant 2" } ,
135+ ] ;
136+ mockFetchVariants . mockResolvedValue ( mockVariants ) ;
137+ // @ts -ignore
138+ const formatter = new TestBaseExportFormatter (
139+ output ,
140+ projectConfig ,
141+ createMockMeta ( )
142+ ) ;
143+ await formatter . fetchVariants ( ) ;
144+ expect ( formatter . variants ) . toEqual ( [
145+ { id : "variant1" , name : "Variant 1" } ,
146+ { id : "variant2" , name : "Variant 2" } ,
147+ { id : "base" } ,
148+ ] ) ;
149+ } ) ;
150+
151+ it ( "should set only base variant if variants empty" , async ( ) => {
152+ const output = createMockOutput ( ) ;
153+ const projectConfig = createMockProjectConfig ( {
154+ projects : [ { id : "project1" } , { id : "project2" } ] ,
155+ variants : [ ] ,
156+ } ) ;
157+
158+ const mockVariants = [
159+ { id : "variant1" , name : "Variant 1" } ,
160+ { id : "variant2" , name : "Variant 2" } ,
161+ ] ;
162+ mockFetchVariants . mockResolvedValue ( mockVariants ) ;
163+ // @ts -ignore
164+ const formatter = new TestBaseExportFormatter (
165+ output ,
166+ projectConfig ,
167+ createMockMeta ( )
168+ ) ;
169+ await formatter . fetchVariants ( ) ;
170+ expect ( formatter . variants ) . toEqual ( [ { id : "base" } ] ) ;
171+ } ) ;
172+
173+ it ( "should prioritize outputs configured in output config" , async ( ) => {
174+ const output = createMockOutput ( {
175+ variants : [ { id : "afrikaans" } , { id : "swahili" } ] ,
176+ } ) ;
177+ const projectConfig = createMockProjectConfig ( {
178+ projects : [ { id : "project1" } , { id : "project2" } ] ,
179+ variants : [ { id : "spanish" } , { id : "japanese" } ] ,
180+ } ) ;
181+
182+ const mockVariants = [
183+ { id : "variant1" , name : "Variant 1" } ,
184+ { id : "variant2" , name : "Variant 2" } ,
185+ ] ;
186+ mockFetchVariants . mockResolvedValue ( mockVariants ) ;
187+ // @ts -ignore
188+ const formatter = new TestBaseExportFormatter (
189+ output ,
190+ projectConfig ,
191+ createMockMeta ( )
192+ ) ;
193+ await formatter . fetchVariants ( ) ;
194+ expect ( formatter . variants ) . toEqual ( output . variants ) ;
195+ } ) ;
196+
197+ it ( "should otherwise default to variants configured in project config" , async ( ) => {
198+ const output = createMockOutput ( ) ;
199+ const projectConfig = createMockProjectConfig ( {
200+ projects : [ { id : "project1" } , { id : "project2" } ] ,
201+ variants : [ { id : "spanish" } , { id : "japanese" } ] ,
202+ } ) ;
203+
204+ const mockVariants = [
205+ { id : "variant1" , name : "Variant 1" } ,
206+ { id : "variant2" , name : "Variant 2" } ,
207+ ] ;
208+ mockFetchVariants . mockResolvedValue ( mockVariants ) ;
209+ // @ts -ignore
210+ const formatter = new TestBaseExportFormatter (
211+ output ,
212+ projectConfig ,
213+ createMockMeta ( )
214+ ) ;
215+ await formatter . fetchVariants ( ) ;
216+ expect ( formatter . variants ) . toEqual ( projectConfig . variants ) ;
217+ } ) ;
218+ } ) ;
219+
121220 /***********************************************************
122221 * fetchTextItemsMap
123222 ***********************************************************/
@@ -198,7 +297,7 @@ describe("BaseExportFormatter", () => {
198297 } ) ;
199298 } ) ;
200299
201- it ( "should fetch variants from API when 'all' is specified" , async ( ) => {
300+ it ( "should fetch variants from API when 'all' is specified, including base " , async ( ) => {
202301 const projectConfig = createMockProjectConfig ( {
203302 projects : [ { id : "project1" } ] ,
204303 variants : [ { id : "all" } ] ,
@@ -226,6 +325,7 @@ describe("BaseExportFormatter", () => {
226325 expect ( mockFetchVariants ) . toHaveBeenCalled ( ) ;
227326 expect ( result ) . toEqual ( {
228327 project1 : {
328+ base : mockContent ,
229329 variant1 : mockContent ,
230330 variant2 : mockContent ,
231331 } ,
@@ -292,7 +392,7 @@ describe("BaseExportFormatter", () => {
292392 expect ( mockExportComponents ) . toHaveBeenCalledTimes ( 2 ) ;
293393 } ) ;
294394
295- it ( "should fetch variants from API when 'all' is specified" , async ( ) => {
395+ it ( "should fetch variants from API when 'all' is specified, including base text " , async ( ) => {
296396 const projectConfig = createMockProjectConfig ( {
297397 variants : [ { id : "all" } ] ,
298398 components : {
@@ -320,7 +420,11 @@ describe("BaseExportFormatter", () => {
320420 const result = await formatter . fetchComponentsMap ( ) ;
321421
322422 expect ( mockFetchVariants ) . toHaveBeenCalled ( ) ;
323- expect ( result ) . toEqual ( { variant1 : mockContent , variant2 : mockContent } ) ;
423+ expect ( result ) . toEqual ( {
424+ base : mockContent ,
425+ variant1 : mockContent ,
426+ variant2 : mockContent ,
427+ } ) ;
324428 } ) ;
325429
326430 it ( "should default to base variant when variants are empty" , async ( ) => {
0 commit comments