@@ -182,25 +182,6 @@ describe("updateCache.mts parseCSV", () => {
182182} ) ;
183183
184184describe ( "main behavior without side-effect" , ( ) => {
185- it ( "returns false when CSV unchanged and performs no writes" , async ( ) => {
186- const csv = "uid1,name1,desc1\nuid2,name2,desc2" ;
187- applyMocks ( { newCSV : csv , oldCSV : csv } ) ;
188- const { main } = await import ( "./updateCache.mts" ) ;
189- const updated = await main ( ) ;
190- expect ( updated ) . toBe ( false ) ;
191- expect ( mockFsWrite ) . not . toHaveBeenCalled ( ) ;
192- expect ( mockWriteEntry ) . not . toHaveBeenCalled ( ) ;
193- expect ( mockWriteBarrel ) . not . toHaveBeenCalled ( ) ;
194- expect ( mockWriteChangelog ) . not . toHaveBeenCalled ( ) ;
195- const logMessages = mockLog . mock . calls . map ( ( c ) => c [ 0 ] ) ;
196- expect (
197- logMessages . some ( ( m ) =>
198- typeof m === "object"
199- ? String ( m . message ) . includes ( "Cache is up to date" )
200- : String ( m ) . includes ( "Cache is up to date" ) ,
201- ) ,
202- ) . toBe ( true ) ;
203- } ) ;
204185
205186 it ( "returns true and updates cache when CSV changed" , async ( ) => {
206187 const oldCSV = "uid1,name1,desc1\nuid2,name2,desc2" ;
@@ -271,41 +252,6 @@ describe("main behavior without side-effect", () => {
271252} ) ;
272253
273254describe ( "side-effect import with UPDATE env" , ( ) => {
274- it ( "exits with code 1 when cache unchanged and CI not set" , async ( ) => {
275- const csv = "uid1,name1,desc1" ;
276- applyMocks ( { newCSV : csv , oldCSV : csv , sideEffect : true } ) ;
277- // FIX: Use correct type for process.exit mock
278- const exitSpy = vi
279- . spyOn ( process , "exit" )
280- . mockImplementation ( ( ( ) => undefined ) as unknown as typeof process . exit ) ;
281- const logSpy = vi . spyOn ( console , "log" ) . mockImplementation ( ( ) => { } ) ;
282- await import ( "./updateCache.mts" ) ;
283- await flushMicrotasks ( ) ;
284- expect ( exitSpy ) . toHaveBeenCalledWith ( 1 ) ;
285- // JSON printed only because VERBOSE_UPDATE was set
286- expect (
287- logSpy . mock . calls . some ( ( c ) => c [ 0 ] . includes ( '"cacheUpdated":false' ) ) ,
288- ) . toBe ( true ) ;
289- exitSpy . mockRestore ( ) ;
290- logSpy . mockRestore ( ) ;
291- } ) ;
292-
293- it ( "exits with code 0 when cache unchanged and CI set" , async ( ) => {
294- const csv = "uid1,name1,desc1" ;
295- applyMocks ( { ci : true , newCSV : csv , oldCSV : csv , sideEffect : true } ) ;
296- const exitSpy = vi
297- . spyOn ( process , "exit" )
298- . mockImplementation ( ( ( ) => undefined ) as unknown as typeof process . exit ) ;
299- const logSpy = vi . spyOn ( console , "log" ) . mockImplementation ( ( ) => { } ) ;
300- await import ( "./updateCache.mts" ) ;
301- await flushMicrotasks ( ) ;
302- expect ( exitSpy ) . toHaveBeenCalledWith ( 0 ) ;
303- expect (
304- logSpy . mock . calls . some ( ( c ) => c [ 0 ] . includes ( '"cacheUpdated":false' ) ) ,
305- ) . toBe ( true ) ;
306- exitSpy . mockRestore ( ) ;
307- logSpy . mockRestore ( ) ;
308- } ) ;
309255
310256 it ( "exits with code 0 when cache updated" , async ( ) => {
311257 const oldCSV = "uid1,name1,desc1" ;
@@ -339,32 +285,6 @@ describe("side-effect import with UPDATE env", () => {
339285 } ) ;
340286} ) ;
341287
342- describe ( "fetch error fallback" , ( ) => {
343- it ( "uses cached CSV when fetch fails and returns false (unchanged)" , async ( ) => {
344- const csv = "uid1,name1,desc1" ;
345- applyMocks ( {
346- fetchThrows : true ,
347- newCSV : csv , // unused due to fetchThrows
348- oldCSV : csv ,
349- } ) ;
350- const { main } = await import ( "./updateCache.mts" ) ;
351- const updated = await main ( ) ;
352- expect ( updated ) . toBe ( false ) ;
353- // Log should contain fetch error message
354- const logArgs = mockLog . mock . calls . map ( ( c ) => c [ 0 ] ) ;
355- expect (
356- logArgs . some (
357- ( a ) =>
358- typeof a === "object" &&
359- Array . isArray ( a . message ) &&
360- a . message . some ( ( m : unknown ) =>
361- String ( m ) . includes ( "Error fetching CSV" ) ,
362- ) ,
363- ) ,
364- ) . toBe ( true ) ;
365- } ) ;
366- } ) ;
367-
368288describe ( "checksum structural assertions" , ( ) => {
369289 it ( "produces 64-char hex checksums for entries and csv" , async ( ) => {
370290 const oldCSV = "uid1,name1,desc1" ;
0 commit comments