projax 3.3.58 → 3.3.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +10 -1
  2. package/dist/electron/preload.d.ts +1 -0
  3. package/dist/electron/renderer/assets/index-CmtZriN5.js +66 -0
  4. package/dist/electron/renderer/index.html +1 -1
  5. package/dist/electron/script-runner.js +52 -20
  6. package/dist/index.js +14 -10
  7. package/dist/prxi.js +877 -109
  8. package/dist/prxi.tsx +1249 -177
  9. package/dist/script-runner.js +52 -20
  10. package/package.json +1 -1
  11. package/coverage/base.css +0 -224
  12. package/coverage/block-navigation.js +0 -87
  13. package/coverage/core-bridge.ts.html +0 -292
  14. package/coverage/favicon.png +0 -0
  15. package/coverage/index.html +0 -191
  16. package/coverage/lcov-report/base.css +0 -224
  17. package/coverage/lcov-report/block-navigation.js +0 -87
  18. package/coverage/lcov-report/core-bridge.ts.html +0 -292
  19. package/coverage/lcov-report/favicon.png +0 -0
  20. package/coverage/lcov-report/index.html +0 -191
  21. package/coverage/lcov-report/port-extractor.ts.html +0 -1174
  22. package/coverage/lcov-report/port-scanner.ts.html +0 -301
  23. package/coverage/lcov-report/port-utils.ts.html +0 -670
  24. package/coverage/lcov-report/prettify.css +0 -1
  25. package/coverage/lcov-report/prettify.js +0 -2
  26. package/coverage/lcov-report/script-runner.ts.html +0 -3346
  27. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  28. package/coverage/lcov-report/sorter.js +0 -210
  29. package/coverage/lcov-report/test-parser.ts.html +0 -799
  30. package/coverage/lcov.info +0 -1338
  31. package/coverage/port-extractor.ts.html +0 -1174
  32. package/coverage/port-scanner.ts.html +0 -301
  33. package/coverage/port-utils.ts.html +0 -670
  34. package/coverage/prettify.css +0 -1
  35. package/coverage/prettify.js +0 -2
  36. package/coverage/script-runner.ts.html +0 -3346
  37. package/coverage/sort-arrow-sprite.png +0 -0
  38. package/coverage/sorter.js +0 -210
  39. package/coverage/test-parser.ts.html +0 -799
  40. package/dist/__tests__/core-bridge.test.d.ts +0 -1
  41. package/dist/__tests__/core-bridge.test.js +0 -135
  42. package/dist/__tests__/port-extractor.test.d.ts +0 -1
  43. package/dist/__tests__/port-extractor.test.js +0 -407
  44. package/dist/__tests__/port-scanner.test.d.ts +0 -1
  45. package/dist/__tests__/port-scanner.test.js +0 -170
  46. package/dist/__tests__/port-utils.test.d.ts +0 -1
  47. package/dist/__tests__/port-utils.test.js +0 -127
  48. package/dist/__tests__/script-runner.test.d.ts +0 -1
  49. package/dist/__tests__/script-runner.test.js +0 -491
  50. package/dist/__tests__/test-parser.test.d.ts +0 -1
  51. package/dist/__tests__/test-parser.test.js +0 -276
  52. package/dist/api/__tests__/database.test.d.ts +0 -2
  53. package/dist/api/__tests__/database.test.d.ts.map +0 -1
  54. package/dist/api/__tests__/database.test.js +0 -485
  55. package/dist/api/__tests__/database.test.js.map +0 -1
  56. package/dist/api/__tests__/routes.test.d.ts +0 -2
  57. package/dist/api/__tests__/routes.test.d.ts.map +0 -1
  58. package/dist/api/__tests__/routes.test.js +0 -484
  59. package/dist/api/__tests__/routes.test.js.map +0 -1
  60. package/dist/api/__tests__/scanner.test.d.ts +0 -2
  61. package/dist/api/__tests__/scanner.test.d.ts.map +0 -1
  62. package/dist/api/__tests__/scanner.test.js +0 -403
  63. package/dist/api/__tests__/scanner.test.js.map +0 -1
  64. package/dist/core/__tests__/database.test.d.ts +0 -1
  65. package/dist/core/__tests__/database.test.js +0 -557
  66. package/dist/core/__tests__/detector.test.d.ts +0 -1
  67. package/dist/core/__tests__/detector.test.js +0 -375
  68. package/dist/core/__tests__/index.test.d.ts +0 -1
  69. package/dist/core/__tests__/index.test.js +0 -469
  70. package/dist/core/__tests__/scanner.test.d.ts +0 -1
  71. package/dist/core/__tests__/scanner.test.js +0 -406
  72. package/dist/core/__tests__/settings.test.d.ts +0 -1
  73. package/dist/core/__tests__/settings.test.js +0 -280
  74. package/dist/electron/core/__tests__/database.test.d.ts +0 -1
  75. package/dist/electron/core/__tests__/database.test.js +0 -557
  76. package/dist/electron/core/__tests__/detector.test.d.ts +0 -1
  77. package/dist/electron/core/__tests__/detector.test.js +0 -375
  78. package/dist/electron/core/__tests__/index.test.d.ts +0 -1
  79. package/dist/electron/core/__tests__/index.test.js +0 -469
  80. package/dist/electron/core/__tests__/scanner.test.d.ts +0 -1
  81. package/dist/electron/core/__tests__/scanner.test.js +0 -406
  82. package/dist/electron/core/__tests__/settings.test.d.ts +0 -1
  83. package/dist/electron/core/__tests__/settings.test.js +0 -280
  84. package/jest.config.js +0 -26
@@ -1,484 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- /* eslint-disable @typescript-eslint/no-var-requires */
40
- const supertest_1 = __importDefault(require("supertest"));
41
- const express_1 = __importDefault(require("express"));
42
- const fs = __importStar(require("fs"));
43
- const path = __importStar(require("path"));
44
- const os = __importStar(require("os"));
45
- // Use an object to hold testDataDir so it can be accessed before initialization
46
- const testConfig = { dataDir: '' };
47
- // Mock core-bridge module (used by routes/projects.ts for git branch detection)
48
- jest.mock('../core-bridge', () => ({
49
- getCurrentBranch: jest.fn(() => 'main'),
50
- parseWorkspaceFile: jest.fn(() => ({ folders: [] })),
51
- generateWorkspaceFile: jest.fn(),
52
- validateWorkspacePath: jest.fn(() => true),
53
- createBackup: jest.fn(),
54
- restoreBackup: jest.fn(),
55
- validateBackup: jest.fn(),
56
- }));
57
- // Mock os module
58
- jest.mock('os', () => ({
59
- ...jest.requireActual('os'),
60
- homedir: jest.fn(() => testConfig.dataDir || os.tmpdir()),
61
- }));
62
- // Import after mocking
63
- const routes_1 = __importDefault(require("../routes"));
64
- const database_1 = require("../database");
65
- describe('API Routes', () => {
66
- let app;
67
- let testProjectDir;
68
- beforeEach(() => {
69
- // Create test directories with truly unique names
70
- const uniqueId = `${Date.now()}-${process.hrtime.bigint()}-${Math.random().toString(36).substring(7)}`;
71
- testConfig.dataDir = path.join(os.tmpdir(), `projax-api-test-${uniqueId}`);
72
- testProjectDir = path.join(testConfig.dataDir, 'test-project');
73
- // Ensure clean slate
74
- if (fs.existsSync(testConfig.dataDir)) {
75
- fs.rmSync(testConfig.dataDir, { recursive: true, force: true });
76
- }
77
- fs.mkdirSync(testProjectDir, { recursive: true });
78
- // Create Express app with routes
79
- app = (0, express_1.default)();
80
- app.use(express_1.default.json());
81
- app.use('/api', routes_1.default);
82
- // Initialize database
83
- new database_1.JSONDatabase();
84
- });
85
- afterEach(() => {
86
- // Reset singleton before cleanup
87
- (0, database_1.resetDatabase)();
88
- // Clean up
89
- if (fs.existsSync(testConfig.dataDir)) {
90
- fs.rmSync(testConfig.dataDir, { recursive: true, force: true });
91
- }
92
- });
93
- describe('GET /api/projects', () => {
94
- it('should return empty array when no projects exist', async () => {
95
- const response = await (0, supertest_1.default)(app).get('/api/projects');
96
- expect(response.status).toBe(200);
97
- expect(response.body).toEqual([]);
98
- });
99
- it('should return all projects', async () => {
100
- // Add projects directly via database
101
- const db = new database_1.JSONDatabase();
102
- db.addProject('Project 1', testProjectDir);
103
- const dir2 = path.join(testConfig.dataDir, 'project2');
104
- fs.mkdirSync(dir2, { recursive: true });
105
- db.addProject('Project 2', dir2);
106
- const response = await (0, supertest_1.default)(app).get('/api/projects');
107
- expect(response.status).toBe(200);
108
- expect(response.body).toHaveLength(2);
109
- expect(response.body[0].name).toBe('Project 1');
110
- expect(response.body[1].name).toBe('Project 2');
111
- });
112
- });
113
- describe('POST /api/projects', () => {
114
- it('should create a new project', async () => {
115
- const response = await (0, supertest_1.default)(app)
116
- .post('/api/projects')
117
- .send({
118
- name: 'My Project',
119
- path: testProjectDir,
120
- });
121
- expect(response.status).toBe(201);
122
- expect(response.body).toMatchObject({
123
- id: 1,
124
- name: 'My Project',
125
- path: testProjectDir,
126
- });
127
- });
128
- it('should return 400 if name is missing', async () => {
129
- const response = await (0, supertest_1.default)(app)
130
- .post('/api/projects')
131
- .send({
132
- path: testProjectDir,
133
- });
134
- expect(response.status).toBe(400);
135
- expect(response.body.error).toBe('Name and path are required');
136
- });
137
- it('should return 400 if path is missing', async () => {
138
- const response = await (0, supertest_1.default)(app)
139
- .post('/api/projects')
140
- .send({
141
- name: 'My Project',
142
- });
143
- expect(response.status).toBe(400);
144
- expect(response.body.error).toBe('Name and path are required');
145
- });
146
- it('should return 400 if path does not exist', async () => {
147
- const response = await (0, supertest_1.default)(app)
148
- .post('/api/projects')
149
- .send({
150
- name: 'My Project',
151
- path: '/non/existent/path',
152
- });
153
- expect(response.status).toBe(400);
154
- expect(response.body.error).toBe('Path does not exist');
155
- });
156
- it('should return 400 if path is not a directory', async () => {
157
- const filePath = path.join(testConfig.dataDir, 'file.txt');
158
- fs.writeFileSync(filePath, 'test');
159
- const response = await (0, supertest_1.default)(app)
160
- .post('/api/projects')
161
- .send({
162
- name: 'My Project',
163
- path: filePath,
164
- });
165
- expect(response.status).toBe(400);
166
- expect(response.body.error).toBe('Path must be a directory');
167
- });
168
- it('should return 409 if project with path already exists', async () => {
169
- // Create first project
170
- await (0, supertest_1.default)(app)
171
- .post('/api/projects')
172
- .send({
173
- name: 'Project 1',
174
- path: testProjectDir,
175
- });
176
- // Try to create duplicate
177
- const response = await (0, supertest_1.default)(app)
178
- .post('/api/projects')
179
- .send({
180
- name: 'Project 2',
181
- path: testProjectDir,
182
- });
183
- expect(response.status).toBe(409);
184
- expect(response.body.error).toBe('Project with this path already exists');
185
- });
186
- });
187
- describe('GET /api/projects/:id', () => {
188
- it('should return a project by ID', async () => {
189
- const db = new database_1.JSONDatabase();
190
- const project = db.addProject('Test Project', testProjectDir);
191
- const response = await (0, supertest_1.default)(app).get(`/api/projects/${project.id}`);
192
- expect(response.status).toBe(200);
193
- expect(response.body).toMatchObject({
194
- id: project.id,
195
- name: 'Test Project',
196
- });
197
- });
198
- it('should return 404 for non-existent project', async () => {
199
- const response = await (0, supertest_1.default)(app).get('/api/projects/999');
200
- expect(response.status).toBe(404);
201
- expect(response.body.error).toBe('Project not found');
202
- });
203
- it('should return 404 for invalid ID format', async () => {
204
- const response = await (0, supertest_1.default)(app).get('/api/projects/invalid');
205
- // The route regex only matches numeric IDs, so non-numeric IDs return 404
206
- expect(response.status).toBe(404);
207
- });
208
- });
209
- describe('PUT /api/projects/:id', () => {
210
- it('should update project name', async () => {
211
- const db = new database_1.JSONDatabase();
212
- const project = db.addProject('Old Name', testProjectDir);
213
- const response = await (0, supertest_1.default)(app)
214
- .put(`/api/projects/${project.id}`)
215
- .send({ name: 'New Name' });
216
- expect(response.status).toBe(200);
217
- expect(response.body.name).toBe('New Name');
218
- });
219
- it('should update project description', async () => {
220
- const db = new database_1.JSONDatabase();
221
- const project = db.addProject('Test', testProjectDir);
222
- const response = await (0, supertest_1.default)(app)
223
- .put(`/api/projects/${project.id}`)
224
- .send({ description: 'A test project' });
225
- expect(response.status).toBe(200);
226
- expect(response.body.description).toBe('A test project');
227
- });
228
- it('should update project framework', async () => {
229
- const db = new database_1.JSONDatabase();
230
- const project = db.addProject('Test', testProjectDir);
231
- const response = await (0, supertest_1.default)(app)
232
- .put(`/api/projects/${project.id}`)
233
- .send({ framework: 'Node.js' });
234
- expect(response.status).toBe(200);
235
- expect(response.body.framework).toBe('Node.js');
236
- });
237
- it('should update project tags', async () => {
238
- const db = new database_1.JSONDatabase();
239
- const project = db.addProject('Test', testProjectDir);
240
- const response = await (0, supertest_1.default)(app)
241
- .put(`/api/projects/${project.id}`)
242
- .send({ tags: ['web', 'api'] });
243
- expect(response.status).toBe(200);
244
- expect(response.body.tags).toEqual(['web', 'api']);
245
- });
246
- it('should update multiple fields at once', async () => {
247
- const db = new database_1.JSONDatabase();
248
- const project = db.addProject('Test', testProjectDir);
249
- const response = await (0, supertest_1.default)(app)
250
- .put(`/api/projects/${project.id}`)
251
- .send({
252
- name: 'Updated Name',
253
- description: 'Updated description',
254
- framework: 'React',
255
- tags: ['frontend'],
256
- });
257
- expect(response.status).toBe(200);
258
- expect(response.body).toMatchObject({
259
- name: 'Updated Name',
260
- description: 'Updated description',
261
- framework: 'React',
262
- tags: ['frontend'],
263
- });
264
- });
265
- it('should return 400 when no fields to update', async () => {
266
- const db = new database_1.JSONDatabase();
267
- const project = db.addProject('Test', testProjectDir);
268
- const response = await (0, supertest_1.default)(app)
269
- .put(`/api/projects/${project.id}`)
270
- .send({});
271
- expect(response.status).toBe(400);
272
- expect(response.body.error).toBe('No valid fields to update');
273
- });
274
- it('should return 404 for invalid ID format', async () => {
275
- const response = await (0, supertest_1.default)(app)
276
- .put('/api/projects/invalid')
277
- .send({ name: 'New Name' });
278
- // The route regex only matches numeric IDs, so non-numeric IDs return 404
279
- expect(response.status).toBe(404);
280
- });
281
- });
282
- describe('DELETE /api/projects/:id', () => {
283
- it('should delete a project', async () => {
284
- const db = new database_1.JSONDatabase();
285
- const project = db.addProject('Test', testProjectDir);
286
- const response = await (0, supertest_1.default)(app).delete(`/api/projects/${project.id}`);
287
- expect(response.status).toBe(204);
288
- // Use getDatabase() to verify deletion from the singleton
289
- const { getDatabase } = require('../database');
290
- expect(getDatabase().getProject(project.id)).toBeNull();
291
- });
292
- it('should return 404 for non-existent project', async () => {
293
- const response = await (0, supertest_1.default)(app).delete('/api/projects/999');
294
- expect(response.status).toBe(404);
295
- expect(response.body.error).toBe('Project not found');
296
- });
297
- it('should return 404 for invalid ID format', async () => {
298
- const response = await (0, supertest_1.default)(app).delete('/api/projects/invalid');
299
- // The route regex only matches numeric IDs, so non-numeric IDs return 404
300
- expect(response.status).toBe(404);
301
- });
302
- });
303
- describe('GET /api/projects/:id/tests', () => {
304
- it('should return tests for a project', async () => {
305
- const db = new database_1.JSONDatabase();
306
- const project = db.addProject('Test', testProjectDir);
307
- db.addTest(project.id, 'test1.js', 'jest');
308
- db.addTest(project.id, 'test2.js', 'jest');
309
- const response = await (0, supertest_1.default)(app).get(`/api/projects/${project.id}/tests`);
310
- expect(response.status).toBe(200);
311
- expect(response.body).toHaveLength(2);
312
- });
313
- it('should return empty array when no tests exist', async () => {
314
- const db = new database_1.JSONDatabase();
315
- const project = db.addProject('Test', testProjectDir);
316
- const response = await (0, supertest_1.default)(app).get(`/api/projects/${project.id}/tests`);
317
- expect(response.status).toBe(200);
318
- expect(response.body).toEqual([]);
319
- });
320
- it('should return 404 for non-existent project', async () => {
321
- const response = await (0, supertest_1.default)(app).get('/api/projects/999/tests');
322
- expect(response.status).toBe(404);
323
- expect(response.body.error).toBe('Project not found');
324
- });
325
- });
326
- describe('GET /api/projects/:id/ports', () => {
327
- it('should return ports for a project', async () => {
328
- const db = new database_1.JSONDatabase();
329
- const project = db.addProject('Test', testProjectDir);
330
- db.addProjectPort(project.id, 3000, 'package.json', 'dev');
331
- db.addProjectPort(project.id, 8080, 'package.json', 'api');
332
- const response = await (0, supertest_1.default)(app).get(`/api/projects/${project.id}/ports`);
333
- expect(response.status).toBe(200);
334
- expect(response.body).toHaveLength(2);
335
- expect(response.body.map((p) => p.port)).toEqual([3000, 8080]);
336
- });
337
- it('should return empty array when no ports exist', async () => {
338
- const db = new database_1.JSONDatabase();
339
- const project = db.addProject('Test', testProjectDir);
340
- const response = await (0, supertest_1.default)(app).get(`/api/projects/${project.id}/ports`);
341
- expect(response.status).toBe(200);
342
- expect(response.body).toEqual([]);
343
- });
344
- it('should return 404 for non-existent project', async () => {
345
- const response = await (0, supertest_1.default)(app).get('/api/projects/999/ports');
346
- expect(response.status).toBe(404);
347
- expect(response.body.error).toBe('Project not found');
348
- });
349
- });
350
- describe('POST /api/projects/:id/scan', () => {
351
- it('should scan a project for tests', async () => {
352
- // Create project with test files
353
- const packageJson = {
354
- devDependencies: { jest: '^29.0.0' },
355
- };
356
- fs.writeFileSync(path.join(testProjectDir, 'package.json'), JSON.stringify(packageJson));
357
- fs.mkdirSync(path.join(testProjectDir, 'src'), { recursive: true });
358
- fs.writeFileSync(path.join(testProjectDir, 'src', 'app.test.ts'), '');
359
- const db = new database_1.JSONDatabase();
360
- const project = db.addProject('Test', testProjectDir);
361
- const response = await (0, supertest_1.default)(app).post(`/api/projects/${project.id}/scan`);
362
- expect(response.status).toBe(200);
363
- expect(response.body).toMatchObject({
364
- testsFound: 1,
365
- });
366
- expect(response.body.tests).toHaveLength(1);
367
- expect(response.body.project.last_scanned).toBeGreaterThan(0);
368
- });
369
- it('should return 404 for invalid ID format', async () => {
370
- const response = await (0, supertest_1.default)(app).post('/api/projects/invalid/scan');
371
- // The route regex only matches numeric IDs, so non-numeric IDs return 404
372
- expect(response.status).toBe(404);
373
- });
374
- });
375
- describe('POST /api/projects/scan/all', () => {
376
- it('should scan all projects', async () => {
377
- // Create two projects with test files
378
- const packageJson = { devDependencies: { jest: '^29.0.0' } };
379
- const dir1 = path.join(testConfig.dataDir, 'project1');
380
- fs.mkdirSync(dir1, { recursive: true });
381
- fs.writeFileSync(path.join(dir1, 'package.json'), JSON.stringify(packageJson));
382
- fs.writeFileSync(path.join(dir1, 'test.spec.ts'), '');
383
- const dir2 = path.join(testConfig.dataDir, 'project2');
384
- fs.mkdirSync(dir2, { recursive: true });
385
- fs.writeFileSync(path.join(dir2, 'package.json'), JSON.stringify(packageJson));
386
- fs.writeFileSync(path.join(dir2, 'test.spec.ts'), '');
387
- const db = new database_1.JSONDatabase();
388
- db.addProject('Project 1', dir1);
389
- db.addProject('Project 2', dir2);
390
- const response = await (0, supertest_1.default)(app).post('/api/projects/scan/all');
391
- expect(response.status).toBe(200);
392
- expect(response.body).toHaveLength(2);
393
- expect(response.body[0].testsFound).toBe(1);
394
- expect(response.body[1].testsFound).toBe(1);
395
- });
396
- it('should return empty array when no projects exist', async () => {
397
- const response = await (0, supertest_1.default)(app).post('/api/projects/scan/all');
398
- expect(response.status).toBe(200);
399
- expect(response.body).toEqual([]);
400
- });
401
- });
402
- describe('GET /api/projects/tags', () => {
403
- it('should return all unique tags', async () => {
404
- const db = new database_1.JSONDatabase();
405
- const dir1 = path.join(testConfig.dataDir, 'p1');
406
- const dir2 = path.join(testConfig.dataDir, 'p2');
407
- fs.mkdirSync(dir1, { recursive: true });
408
- fs.mkdirSync(dir2, { recursive: true });
409
- db.addProject('Project 1', dir1);
410
- db.updateProject(1, { tags: ['web', 'api'] });
411
- db.addProject('Project 2', dir2);
412
- db.updateProject(2, { tags: ['api', 'mobile'] });
413
- const response = await (0, supertest_1.default)(app).get('/api/projects/tags');
414
- expect(response.status).toBe(200);
415
- expect(response.body).toEqual(['api', 'mobile', 'web']);
416
- });
417
- it('should return empty array when no tags exist', async () => {
418
- const response = await (0, supertest_1.default)(app).get('/api/projects/tags');
419
- expect(response.status).toBe(200);
420
- expect(response.body).toEqual([]);
421
- });
422
- });
423
- describe('GET /api/settings', () => {
424
- it('should return all settings', async () => {
425
- const db = new database_1.JSONDatabase();
426
- db.setSetting('theme', 'dark');
427
- db.setSetting('language', 'en');
428
- const response = await (0, supertest_1.default)(app).get('/api/settings');
429
- expect(response.status).toBe(200);
430
- expect(response.body).toEqual({
431
- theme: 'dark',
432
- language: 'en',
433
- });
434
- });
435
- it('should return empty object when no settings exist', async () => {
436
- const response = await (0, supertest_1.default)(app).get('/api/settings');
437
- expect(response.status).toBe(200);
438
- expect(response.body).toEqual({});
439
- });
440
- });
441
- describe('PUT /api/settings/:key', () => {
442
- it('should create a new setting', async () => {
443
- const response = await (0, supertest_1.default)(app)
444
- .put('/api/settings/theme')
445
- .send({ value: 'dark' });
446
- expect(response.status).toBe(200);
447
- expect(response.body).toEqual({
448
- key: 'theme',
449
- value: 'dark',
450
- });
451
- });
452
- it('should update an existing setting', async () => {
453
- const db = new database_1.JSONDatabase();
454
- db.setSetting('theme', 'dark');
455
- const response = await (0, supertest_1.default)(app)
456
- .put('/api/settings/theme')
457
- .send({ value: 'light' });
458
- expect(response.status).toBe(200);
459
- expect(response.body).toEqual({
460
- key: 'theme',
461
- value: 'light',
462
- });
463
- });
464
- it('should return 400 if value is missing', async () => {
465
- const response = await (0, supertest_1.default)(app)
466
- .put('/api/settings/theme')
467
- .send({});
468
- expect(response.status).toBe(400);
469
- expect(response.body.error).toBe('Value is required');
470
- });
471
- it('should convert value to string', async () => {
472
- const response = await (0, supertest_1.default)(app)
473
- .put('/api/settings/count')
474
- .send({ value: 42 });
475
- expect(response.status).toBe(200);
476
- // The response returns the original value, but it's stored as a string in DB
477
- expect(response.body.value).toBe(42);
478
- // Verify it was actually stored as a string
479
- const { getDatabase } = require('../database');
480
- expect(getDatabase().getSetting('count')).toBe('42');
481
- });
482
- });
483
- });
484
- //# sourceMappingURL=routes.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.test.js","sourceRoot":"","sources":["../../src/__tests__/routes.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=scanner.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanner.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/scanner.test.ts"],"names":[],"mappings":""}