import fs from 'node:fs/promises' import path from 'node:path' import { fileURLToPath } from 'node:url' import chalk from 'chalk' import { glob } from 'glob' import type { Ora } from 'ora' import { expect, test, vi } from 'vitest' import { copyZipFiles } from './move-downloads' const __dirname = path.dirname(fileURLToPath(import.meta.url)) test('copyZipFiles should copy zip files', async () => { // Create temporary directories and files const sourceDir = path.join(__dirname, 'tmp_source') const destDir = path.join(__dirname, 'tmp_dest') await fs.mkdir(sourceDir, { recursive: true }) await fs.mkdir(destDir, { recursive: true }) await fs.writeFile(path.join(sourceDir, 'file1.zip'), 'content1') await fs.writeFile(path.join(sourceDir, 'file2.zip'), 'content2') const globMock = vi.spyOn(glob, 'sync') globMock.mockReturnValue(['file1.zip', 'file2.zip']) const mockOra = { text: '', start: vi.fn(), succeed: vi.fn(), fail: vi.fn() } await copyZipFiles(sourceDir, destDir, mockOra as unknown as Ora) const file1 = await fs.readFile(path.join(destDir, 'file1.zip'), 'utf-8') const file2 = await fs.readFile(path.join(destDir, 'file2.zip'), 'utf-8') expect(file1).toBe('content1') expect(file2).toBe('content2') expect(mockOra.succeed).toHaveBeenCalledWith( `${chalk.bold('[move-downloads]')} Copied 2 .zip files to ${destDir}` ) // Cleanup await fs.rm(sourceDir, { recursive: true, force: true }) await fs.rm(destDir, { recursive: true, force: true }) })