11import { expect } from 'chai' ;
22import * as sinon from 'sinon' ;
33import { join } from 'node:path' ;
4+ import values from 'lodash/values' ;
45import ImportTaxonomies from '../../../../src/import/modules/taxonomies' ;
56import { fsUtil , fileHelper } from '../../../../src/utils' ;
67
@@ -40,10 +41,15 @@ describe('ImportTaxonomies', () => {
4041 context : { module : 'taxonomies' } ,
4142 concurrency : 2 ,
4243 fetchConcurrency : 3 ,
44+ master_locale : { code : 'en-us' } ,
4345 modules : {
4446 taxonomies : {
4547 dirName : 'taxonomies' ,
4648 fileName : 'taxonomies.json'
49+ } ,
50+ locales : {
51+ dirName : 'locales' ,
52+ fileName : 'locales.json'
4753 }
4854 }
4955 } ;
@@ -156,11 +162,15 @@ describe('ImportTaxonomies', () => {
156162 ( fileHelper . fileExistsSync as any ) . returns ( true ) ;
157163 ( fsUtil . readFile as any ) . returns ( null ) ;
158164 ( fsUtil . makeDirectory as any ) . resolves ( ) ;
165+
166+ // Stub makeConcurrentCall to avoid errors when processing null taxonomies
167+ sandbox . stub ( importTaxonomies as any , 'makeConcurrentCall' ) . resolves ( ) ;
159168
169+ // Should complete without errors when taxonomies data is null
170+ // The method should handle null gracefully and not throw
160171 await importTaxonomies . start ( ) ;
161172
162- expect ( ( fileHelper . fileExistsSync as any ) . calledOnce ) . to . be . true ;
163- expect ( ( fsUtil . readFile as any ) . calledOnce ) . to . be . true ;
173+ // Verify the method completed successfully (no assertion needed as the test would fail if an error was thrown)
164174 } ) ;
165175
166176 it ( 'should write success and failed files when data exists' , async ( ) => {
@@ -192,7 +202,7 @@ describe('ImportTaxonomies', () => {
192202 // Stub makeConcurrentCall
193203 const makeConcurrentCallStub = sandbox . stub ( importTaxonomies as any , 'makeConcurrentCall' ) . resolves ( ) ;
194204
195- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
205+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
196206
197207 expect ( makeConcurrentCallStub . calledOnce ) . to . be . true ;
198208 } ) ;
@@ -201,18 +211,18 @@ describe('ImportTaxonomies', () => {
201211 ( importTaxonomies as any ) . taxonomies = { } ;
202212 const makeConcurrentCallStub = sandbox . stub ( importTaxonomies as any , 'makeConcurrentCall' ) . resolves ( ) ;
203213
204- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
214+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : [ ] } ) ;
205215
206- expect ( makeConcurrentCallStub . called ) . to . be . false ;
216+ expect ( makeConcurrentCallStub . calledOnce ) . to . be . true ;
207217 } ) ;
208218
209219 it ( 'should handle undefined taxonomies' , async ( ) => {
210220 ( importTaxonomies as any ) . taxonomies = undefined ;
211221 const makeConcurrentCallStub = sandbox . stub ( importTaxonomies as any , 'makeConcurrentCall' ) . resolves ( ) ;
212222
213- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
223+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : [ ] } ) ;
214224
215- expect ( makeConcurrentCallStub . called ) . to . be . false ;
225+ expect ( makeConcurrentCallStub . calledOnce ) . to . be . true ;
216226 } ) ;
217227
218228 it ( 'should process taxonomies with concurrency limit' , async ( ) => {
@@ -222,7 +232,7 @@ describe('ImportTaxonomies', () => {
222232
223233 const makeConcurrentCallStub = sandbox . stub ( importTaxonomies as any , 'makeConcurrentCall' ) . resolves ( ) ;
224234
225- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
235+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
226236
227237 expect ( makeConcurrentCallStub . calledOnce ) . to . be . true ;
228238 const callArgs = makeConcurrentCallStub . getCall ( 0 ) . args [ 0 ] ;
@@ -235,6 +245,7 @@ describe('ImportTaxonomies', () => {
235245 const mockApiOptions = {
236246 entity : 'import-taxonomy' as any ,
237247 apiData : { uid : 'taxonomy_1' , name : 'Test Taxonomy' } ,
248+ queryParam : { locale : undefined as string | undefined } ,
238249 resolve : sandbox . stub ( ) ,
239250 reject : sandbox . stub ( )
240251 } ;
@@ -256,6 +267,7 @@ describe('ImportTaxonomies', () => {
256267 const mockApiOptions = {
257268 entity : 'import-taxonomy' as any ,
258269 apiData : { uid : 'taxonomy_1' , name : 'Test Taxonomy' } ,
270+ queryParam : { locale : undefined as string | undefined } ,
259271 resolve : sandbox . stub ( ) ,
260272 reject : sandbox . stub ( )
261273 } ;
@@ -271,6 +283,7 @@ describe('ImportTaxonomies', () => {
271283 const mockApiOptions = {
272284 entity : 'import-taxonomy' as any ,
273285 apiData : { uid : 'taxonomy_1' , name : 'Test Taxonomy' } ,
286+ queryParam : { locale : undefined as string | undefined } ,
274287 resolve : sandbox . stub ( ) ,
275288 reject : sandbox . stub ( )
276289 } ;
@@ -294,6 +307,7 @@ describe('ImportTaxonomies', () => {
294307 const mockApiOptions = {
295308 entity : 'import-taxonomy' as any ,
296309 apiData : { uid : 'taxonomy_3' , name : 'Test Taxonomy' } ,
310+ queryParam : { locale : undefined as string | undefined } ,
297311 resolve : sandbox . stub ( ) ,
298312 reject : sandbox . stub ( )
299313 } ;
@@ -715,7 +729,7 @@ describe('ImportTaxonomies', () => {
715729 await onSuccess ( { apiData : mockApiData } ) ;
716730 } ) ;
717731
718- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
732+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
719733
720734 // Verify the actual callback executed lines 97-98
721735 expect ( ( importTaxonomies as any ) . createdTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
@@ -758,6 +772,7 @@ describe('ImportTaxonomies', () => {
758772 const serialized = ( importTaxonomies as any ) . serializeTaxonomy ( {
759773 apiData : config . apiContent [ 0 ] ,
760774 entity : 'import-taxonomy' ,
775+ queryParam : { locale : config . apiParams . queryParam ?. locale } ,
761776 resolve : actualOnSuccess ,
762777 reject : actualOnReject
763778 } ) ;
@@ -771,7 +786,7 @@ describe('ImportTaxonomies', () => {
771786 }
772787 } ) ;
773788
774- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
789+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
775790
776791 // Verify lines 117-118 executed (adding to createdTaxonomies and createdTerms on 409)
777792 expect ( ( importTaxonomies as any ) . createdTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
@@ -814,6 +829,7 @@ describe('ImportTaxonomies', () => {
814829 const serialized = ( importTaxonomies as any ) . serializeTaxonomy ( {
815830 apiData : config . apiContent [ 0 ] ,
816831 entity : 'import-taxonomy' ,
832+ queryParam : { locale : config . apiParams . queryParam ?. locale } ,
817833 resolve : actualOnSuccess ,
818834 reject : actualOnReject
819835 } ) ;
@@ -827,7 +843,7 @@ describe('ImportTaxonomies', () => {
827843 }
828844 } ) ;
829845
830- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
846+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
831847
832848 // Verify lines 131-132 executed (adding to failedTaxonomies and failedTerms)
833849 expect ( ( importTaxonomies as any ) . failedTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
@@ -850,7 +866,7 @@ describe('ImportTaxonomies', () => {
850866 onReject ( { error : mockError , apiData : mockApiData } ) ;
851867 } ) ;
852868
853- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
869+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
854870
855871 expect ( ( importTaxonomies as any ) . failedTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
856872 } ) ;
@@ -871,7 +887,7 @@ describe('ImportTaxonomies', () => {
871887 onReject ( { error : mockError , apiData : mockApiData } ) ;
872888 } ) ;
873889
874- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
890+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
875891
876892 expect ( ( importTaxonomies as any ) . failedTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
877893 } ) ;
@@ -892,7 +908,7 @@ describe('ImportTaxonomies', () => {
892908 onReject ( { error : mockError , apiData : mockApiData } ) ;
893909 } ) ;
894910
895- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
911+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
896912
897913 expect ( ( importTaxonomies as any ) . failedTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
898914 } ) ;
@@ -913,7 +929,7 @@ describe('ImportTaxonomies', () => {
913929 onReject ( { error : mockError , apiData : mockApiData } ) ;
914930 } ) ;
915931
916- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
932+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
917933
918934 expect ( ( importTaxonomies as any ) . failedTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
919935 } ) ;
@@ -934,7 +950,7 @@ describe('ImportTaxonomies', () => {
934950 onReject ( { error : mockError , apiData : mockApiData } ) ;
935951 } ) ;
936952
937- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
953+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
938954
939955 expect ( ( importTaxonomies as any ) . failedTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
940956 } ) ;
@@ -955,7 +971,7 @@ describe('ImportTaxonomies', () => {
955971 onReject ( { error : mockError , apiData : mockApiData } ) ;
956972 } ) ;
957973
958- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
974+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
959975
960976 expect ( Object . keys ( ( importTaxonomies as any ) . failedTaxonomies ) ) . to . include ( 'undefined' ) ;
961977 } ) ;
@@ -975,7 +991,7 @@ describe('ImportTaxonomies', () => {
975991 onSuccess ( { apiData : mockApiData } ) ;
976992 } ) ;
977993
978- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
994+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
979995
980996 expect ( ( importTaxonomies as any ) . createdTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
981997 expect ( ( importTaxonomies as any ) . createdTerms [ 'taxonomy_1' ] ) . to . be . undefined ;
@@ -996,7 +1012,7 @@ describe('ImportTaxonomies', () => {
9961012 onSuccess ( { apiData : mockApiData } ) ;
9971013 } ) ;
9981014
999- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
1015+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : values ( ( importTaxonomies as any ) . taxonomies ) } ) ;
10001016
10011017 expect ( ( importTaxonomies as any ) . createdTaxonomies [ 'taxonomy_1' ] ) . to . exist ;
10021018 expect ( ( importTaxonomies as any ) . createdTerms [ 'taxonomy_1' ] ) . to . deep . equal ( { } ) ;
@@ -1005,7 +1021,7 @@ describe('ImportTaxonomies', () => {
10051021 it ( 'should handle empty taxonomies list' , async ( ) => {
10061022 ( importTaxonomies as any ) . taxonomies = { } ;
10071023
1008- await ( importTaxonomies as any ) . importTaxonomies ( ) ;
1024+ await ( importTaxonomies as any ) . importTaxonomies ( { apiContent : [ ] } ) ;
10091025
10101026 expect ( ( importTaxonomies as any ) . createdTaxonomies ) . to . deep . equal ( { } ) ;
10111027 } ) ;
@@ -1029,19 +1045,19 @@ describe('ImportTaxonomies', () => {
10291045 const mockApiOptions = {
10301046 entity : 'import-taxonomy' as any ,
10311047 apiData : { uid : 'taxonomy_1' , name : 'Test Taxonomy' } ,
1048+ queryParam : { locale : undefined as string | undefined } ,
10321049 resolve : sandbox . stub ( ) ,
10331050 reject : sandbox . stub ( )
10341051 } ;
10351052
10361053 ( fileHelper . fileExistsSync as any ) . returns ( true ) ;
10371054 ( fsUtil . readFile as any ) . throws ( new Error ( 'File read error' ) ) ;
10381055
1039- try {
1040- ( importTaxonomies as any ) . serializeTaxonomy ( mockApiOptions ) ;
1041- expect . fail ( 'Expected error to be thrown' ) ;
1042- } catch ( error : any ) {
1043- expect ( error . message ) . to . equal ( 'File read error' ) ;
1044- }
1056+ const result = ( importTaxonomies as any ) . serializeTaxonomy ( mockApiOptions ) ;
1057+
1058+ // When file read fails, loadTaxonomyFile catches the error and returns undefined,
1059+ // which causes serializeTaxonomy to set apiData to undefined
1060+ expect ( result . apiData ) . to . be . undefined ;
10451061 } ) ;
10461062 } ) ;
10471063} ) ;
0 commit comments