Files
quasar/backend/dist/tests/services/archiveReader.integration.spec.js
Benito Rodríguez a07096d7c7
Some checks failed
CI / lint (push) Failing after 1m5s
CI / test-backend (push) Has been skipped
CI / test-frontend (push) Has been skipped
CI / test-e2e (push) Has been skipped
feat: add UI components for alert dialog, badge, checkbox, dialog, label, select, sheet, table, textarea
- Implemented AlertDialog component with overlay, content, header, footer, title, description, action, and cancel functionalities.
- Created Badge component with variant support for different styles.
- Developed Checkbox component with custom styling and indicator.
- Added Dialog component with trigger, close, overlay, content, header, footer, title, and description.
- Introduced Label component for form elements.
- Built Select component with trigger, content, group, item, label, separator, and scroll buttons.
- Created Sheet component with trigger, close, overlay, content, header, footer, title, and description.
- Implemented Table component with header, body, footer, row, head, cell, and caption.
- Added Textarea component with custom styling.
- Established API service for game management with CRUD operations and metadata search functionalities.
- Updated dependencies in package lock files.
2026-03-18 19:21:36 +01:00

56 lines
2.4 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const fs_1 = require("fs");
const path_1 = __importDefault(require("path"));
const child_process_1 = require("child_process");
const checksumService_1 = require("../../src/services/checksumService");
const archiveReader_1 = require("../../src/services/archiveReader");
const crypto_1 = require("crypto");
function hasBinary(bin) {
try {
(0, child_process_1.execSync)(`which ${bin}`, { stdio: 'ignore' });
return true;
}
catch (e) {
return false;
}
}
const wantIntegration = process.env.INTEGRATION === '1';
const canCreate = hasBinary('7z') || hasBinary('zip');
if (!wantIntegration) {
vitest_1.test.skip('archiveReader integration tests require INTEGRATION=1', () => { });
}
else if (!canCreate) {
vitest_1.test.skip('archiveReader integration tests skipped: no archive creation tool (7z or zip) available', () => { });
}
else {
(0, vitest_1.test)('reads entry from zip using system tools', async () => {
const tmpDir = await fs_1.promises.mkdtemp(path_1.default.join(process.cwd(), 'tmp-arc-'));
const inner = path_1.default.join(tmpDir, 'game.rom');
const content = 'QUASAR-INTEGRATION-TEST';
await fs_1.promises.writeFile(inner, content);
const archivePath = path_1.default.join(tmpDir, 'simple.zip');
// create zip using available tool
if (hasBinary('7z')) {
(0, child_process_1.execSync)(`7z a -tzip ${JSON.stringify(archivePath)} ${JSON.stringify(inner)}`, {
stdio: 'ignore',
});
}
else {
(0, child_process_1.execSync)(`zip -j ${JSON.stringify(archivePath)} ${JSON.stringify(inner)}`, {
stdio: 'ignore',
});
}
const stream = await (0, archiveReader_1.streamArchiveEntry)(archivePath, path_1.default.basename(inner));
(0, vitest_1.expect)(stream).not.toBeNull();
const hashes = await (0, checksumService_1.computeHashesFromStream)(stream);
const expectedMd5 = (0, crypto_1.createHash)('md5').update(content).digest('hex');
(0, vitest_1.expect)(hashes.md5).toBe(expectedMd5);
await fs_1.promises.rm(tmpDir, { recursive: true, force: true });
});
}