projax 3.3.58 → 3.3.59

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 (80) hide show
  1. package/dist/electron/script-runner.js +52 -20
  2. package/dist/index.js +1 -1
  3. package/dist/prxi.js +844 -109
  4. package/dist/prxi.tsx +1234 -179
  5. package/dist/script-runner.js +52 -20
  6. package/package.json +1 -1
  7. package/coverage/base.css +0 -224
  8. package/coverage/block-navigation.js +0 -87
  9. package/coverage/core-bridge.ts.html +0 -292
  10. package/coverage/favicon.png +0 -0
  11. package/coverage/index.html +0 -191
  12. package/coverage/lcov-report/base.css +0 -224
  13. package/coverage/lcov-report/block-navigation.js +0 -87
  14. package/coverage/lcov-report/core-bridge.ts.html +0 -292
  15. package/coverage/lcov-report/favicon.png +0 -0
  16. package/coverage/lcov-report/index.html +0 -191
  17. package/coverage/lcov-report/port-extractor.ts.html +0 -1174
  18. package/coverage/lcov-report/port-scanner.ts.html +0 -301
  19. package/coverage/lcov-report/port-utils.ts.html +0 -670
  20. package/coverage/lcov-report/prettify.css +0 -1
  21. package/coverage/lcov-report/prettify.js +0 -2
  22. package/coverage/lcov-report/script-runner.ts.html +0 -3346
  23. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  24. package/coverage/lcov-report/sorter.js +0 -210
  25. package/coverage/lcov-report/test-parser.ts.html +0 -799
  26. package/coverage/lcov.info +0 -1338
  27. package/coverage/port-extractor.ts.html +0 -1174
  28. package/coverage/port-scanner.ts.html +0 -301
  29. package/coverage/port-utils.ts.html +0 -670
  30. package/coverage/prettify.css +0 -1
  31. package/coverage/prettify.js +0 -2
  32. package/coverage/script-runner.ts.html +0 -3346
  33. package/coverage/sort-arrow-sprite.png +0 -0
  34. package/coverage/sorter.js +0 -210
  35. package/coverage/test-parser.ts.html +0 -799
  36. package/dist/__tests__/core-bridge.test.d.ts +0 -1
  37. package/dist/__tests__/core-bridge.test.js +0 -135
  38. package/dist/__tests__/port-extractor.test.d.ts +0 -1
  39. package/dist/__tests__/port-extractor.test.js +0 -407
  40. package/dist/__tests__/port-scanner.test.d.ts +0 -1
  41. package/dist/__tests__/port-scanner.test.js +0 -170
  42. package/dist/__tests__/port-utils.test.d.ts +0 -1
  43. package/dist/__tests__/port-utils.test.js +0 -127
  44. package/dist/__tests__/script-runner.test.d.ts +0 -1
  45. package/dist/__tests__/script-runner.test.js +0 -491
  46. package/dist/__tests__/test-parser.test.d.ts +0 -1
  47. package/dist/__tests__/test-parser.test.js +0 -276
  48. package/dist/api/__tests__/database.test.d.ts +0 -2
  49. package/dist/api/__tests__/database.test.d.ts.map +0 -1
  50. package/dist/api/__tests__/database.test.js +0 -485
  51. package/dist/api/__tests__/database.test.js.map +0 -1
  52. package/dist/api/__tests__/routes.test.d.ts +0 -2
  53. package/dist/api/__tests__/routes.test.d.ts.map +0 -1
  54. package/dist/api/__tests__/routes.test.js +0 -484
  55. package/dist/api/__tests__/routes.test.js.map +0 -1
  56. package/dist/api/__tests__/scanner.test.d.ts +0 -2
  57. package/dist/api/__tests__/scanner.test.d.ts.map +0 -1
  58. package/dist/api/__tests__/scanner.test.js +0 -403
  59. package/dist/api/__tests__/scanner.test.js.map +0 -1
  60. package/dist/core/__tests__/database.test.d.ts +0 -1
  61. package/dist/core/__tests__/database.test.js +0 -557
  62. package/dist/core/__tests__/detector.test.d.ts +0 -1
  63. package/dist/core/__tests__/detector.test.js +0 -375
  64. package/dist/core/__tests__/index.test.d.ts +0 -1
  65. package/dist/core/__tests__/index.test.js +0 -469
  66. package/dist/core/__tests__/scanner.test.d.ts +0 -1
  67. package/dist/core/__tests__/scanner.test.js +0 -406
  68. package/dist/core/__tests__/settings.test.d.ts +0 -1
  69. package/dist/core/__tests__/settings.test.js +0 -280
  70. package/dist/electron/core/__tests__/database.test.d.ts +0 -1
  71. package/dist/electron/core/__tests__/database.test.js +0 -557
  72. package/dist/electron/core/__tests__/detector.test.d.ts +0 -1
  73. package/dist/electron/core/__tests__/detector.test.js +0 -375
  74. package/dist/electron/core/__tests__/index.test.d.ts +0 -1
  75. package/dist/electron/core/__tests__/index.test.js +0 -469
  76. package/dist/electron/core/__tests__/scanner.test.d.ts +0 -1
  77. package/dist/electron/core/__tests__/scanner.test.js +0 -406
  78. package/dist/electron/core/__tests__/settings.test.d.ts +0 -1
  79. package/dist/electron/core/__tests__/settings.test.js +0 -280
  80. package/jest.config.js +0 -26
@@ -1,485 +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
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const fs = __importStar(require("fs"));
37
- const path = __importStar(require("path"));
38
- const os = __importStar(require("os"));
39
- // Use an object to hold testDataDir so it can be accessed before initialization
40
- const testConfig = { dataDir: '' };
41
- // Mock os module
42
- jest.mock('os', () => ({
43
- ...jest.requireActual('os'),
44
- homedir: jest.fn(() => testConfig.dataDir || os.tmpdir()),
45
- }));
46
- // Import after mocking
47
- const database_1 = require("../database");
48
- describe('JSONDatabase', () => {
49
- beforeEach(() => {
50
- // Create a temporary test directory with truly unique name
51
- const uniqueId = `${Date.now()}-${process.hrtime.bigint()}-${Math.random().toString(36).substring(7)}`;
52
- testConfig.dataDir = path.join(os.tmpdir(), `projax-test-${uniqueId}`);
53
- // Ensure clean slate
54
- if (fs.existsSync(testConfig.dataDir)) {
55
- fs.rmSync(testConfig.dataDir, { recursive: true, force: true });
56
- }
57
- fs.mkdirSync(testConfig.dataDir, { recursive: true });
58
- });
59
- afterEach(() => {
60
- // Reset singleton before cleanup
61
- (0, database_1.resetDatabase)();
62
- // Clean up test directory
63
- if (fs.existsSync(testConfig.dataDir)) {
64
- fs.rmSync(testConfig.dataDir, { recursive: true, force: true });
65
- }
66
- });
67
- describe('Database Initialization', () => {
68
- it('should create a new database file if none exists', () => {
69
- const db = new database_1.JSONDatabase();
70
- const dbPath = path.join(testConfig.dataDir, '.projax', 'data.json');
71
- expect(fs.existsSync(dbPath)).toBe(true);
72
- });
73
- it('should load existing database file', () => {
74
- // Create initial database
75
- const db1 = new database_1.JSONDatabase();
76
- db1.addProject('Test Project', '/test/path');
77
- // Create new instance to load from file
78
- const db2 = new database_1.JSONDatabase();
79
- const projects = db2.getAllProjects();
80
- expect(projects).toHaveLength(1);
81
- expect(projects[0].name).toBe('Test Project');
82
- });
83
- it('should initialize with default data structure', () => {
84
- const db = new database_1.JSONDatabase();
85
- expect(db.getAllProjects()).toEqual([]);
86
- expect(db.getAllSettings()).toEqual({});
87
- });
88
- it('should handle corrupted database file gracefully', () => {
89
- const dataDir = path.join(testConfig.dataDir, '.projax');
90
- fs.mkdirSync(dataDir, { recursive: true });
91
- const dbPath = path.join(dataDir, 'data.json');
92
- // Write invalid JSON
93
- fs.writeFileSync(dbPath, 'invalid json {{{');
94
- const db = new database_1.JSONDatabase();
95
- expect(db.getAllProjects()).toEqual([]);
96
- });
97
- });
98
- describe('Project Operations', () => {
99
- let db;
100
- beforeEach(() => {
101
- db = new database_1.JSONDatabase();
102
- });
103
- it('should add a new project', () => {
104
- const project = db.addProject('My Project', '/path/to/project');
105
- expect(project).toMatchObject({
106
- id: 1,
107
- name: 'My Project',
108
- path: '/path/to/project',
109
- description: null,
110
- framework: null,
111
- last_scanned: null,
112
- tags: [],
113
- });
114
- expect(project.created_at).toBeGreaterThan(0);
115
- });
116
- it('should throw error when adding project with duplicate path', () => {
117
- db.addProject('Project 1', '/same/path');
118
- expect(() => {
119
- db.addProject('Project 2', '/same/path');
120
- }).toThrow('Project with this path already exists');
121
- });
122
- it('should generate sequential IDs for projects', () => {
123
- const project1 = db.addProject('Project 1', '/path/1');
124
- const project2 = db.addProject('Project 2', '/path/2');
125
- const project3 = db.addProject('Project 3', '/path/3');
126
- expect(project1.id).toBe(1);
127
- expect(project2.id).toBe(2);
128
- expect(project3.id).toBe(3);
129
- });
130
- it('should get a project by ID', () => {
131
- const added = db.addProject('Test', '/test');
132
- const found = db.getProject(added.id);
133
- expect(found).toEqual(added);
134
- });
135
- it('should return null for non-existent project ID', () => {
136
- const found = db.getProject(999);
137
- expect(found).toBeNull();
138
- });
139
- it('should get a project by path', () => {
140
- const added = db.addProject('Test', '/test/path');
141
- const found = db.getProjectByPath('/test/path');
142
- expect(found).toEqual(added);
143
- });
144
- it('should return null for non-existent project path', () => {
145
- const found = db.getProjectByPath('/non/existent');
146
- expect(found).toBeNull();
147
- });
148
- it('should get all projects', () => {
149
- db.addProject('Project 1', '/path/1');
150
- db.addProject('Project 2', '/path/2');
151
- db.addProject('Project 3', '/path/3');
152
- const projects = db.getAllProjects();
153
- expect(projects).toHaveLength(3);
154
- expect(projects.map(p => p.name)).toEqual(['Project 1', 'Project 2', 'Project 3']);
155
- });
156
- it('should update project name', () => {
157
- const project = db.addProject('Old Name', '/path');
158
- const updated = db.updateProjectName(project.id, 'New Name');
159
- expect(updated.name).toBe('New Name');
160
- expect(updated.id).toBe(project.id);
161
- });
162
- it('should throw error when updating non-existent project name', () => {
163
- expect(() => {
164
- db.updateProjectName(999, 'New Name');
165
- }).toThrow('Project not found');
166
- });
167
- it('should update project with partial updates', () => {
168
- const project = db.addProject('Test', '/path');
169
- const updated = db.updateProject(project.id, {
170
- description: 'A test project',
171
- framework: 'Node.js',
172
- tags: ['web', 'api'],
173
- });
174
- expect(updated).toMatchObject({
175
- id: project.id,
176
- name: 'Test',
177
- description: 'A test project',
178
- framework: 'Node.js',
179
- tags: ['web', 'api'],
180
- });
181
- });
182
- it('should update project last scanned timestamp', () => {
183
- const project = db.addProject('Test', '/path');
184
- expect(project.last_scanned).toBeNull();
185
- db.updateProjectLastScanned(project.id);
186
- const updated = db.getProject(project.id);
187
- expect(updated?.last_scanned).toBeGreaterThan(0);
188
- });
189
- it('should remove a project', () => {
190
- const project = db.addProject('Test', '/path');
191
- db.removeProject(project.id);
192
- expect(db.getProject(project.id)).toBeNull();
193
- expect(db.getAllProjects()).toHaveLength(0);
194
- });
195
- it('should remove related data when removing project', () => {
196
- const project = db.addProject('Test', '/path');
197
- db.addTest(project.id, 'test.js', 'jest');
198
- db.addJenkinsJob(project.id, 'build', 'http://jenkins');
199
- db.addProjectPort(project.id, 3000, 'package.json', 'dev');
200
- db.removeProject(project.id);
201
- expect(db.getTestsByProject(project.id)).toHaveLength(0);
202
- expect(db.getJenkinsJobsByProject(project.id)).toHaveLength(0);
203
- expect(db.getProjectPorts(project.id)).toHaveLength(0);
204
- });
205
- it('should get all unique tags', () => {
206
- db.addProject('Project 1', '/path/1');
207
- db.updateProject(1, { tags: ['web', 'api'] });
208
- db.addProject('Project 2', '/path/2');
209
- db.updateProject(2, { tags: ['api', 'mobile'] });
210
- const tags = db.getAllTags();
211
- expect(tags).toEqual(['api', 'mobile', 'web']);
212
- });
213
- });
214
- describe('Test Operations', () => {
215
- let db;
216
- let projectId;
217
- beforeEach(() => {
218
- db = new database_1.JSONDatabase();
219
- const project = db.addProject('Test Project', '/test/path');
220
- projectId = project.id;
221
- });
222
- it('should add a new test', () => {
223
- const test = db.addTest(projectId, 'src/test.spec.ts', 'jest');
224
- expect(test).toMatchObject({
225
- id: 1,
226
- project_id: projectId,
227
- file_path: 'src/test.spec.ts',
228
- framework: 'jest',
229
- status: null,
230
- last_run: null,
231
- });
232
- expect(test.created_at).toBeGreaterThan(0);
233
- });
234
- it('should update existing test when adding duplicate', () => {
235
- const test1 = db.addTest(projectId, 'test.js', 'jest');
236
- const test2 = db.addTest(projectId, 'test.js', 'mocha');
237
- expect(test2.id).toBe(test1.id);
238
- expect(test2.framework).toBe('mocha');
239
- });
240
- it('should get a test by ID', () => {
241
- const added = db.addTest(projectId, 'test.js', 'jest');
242
- const found = db.getTest(added.id);
243
- expect(found).toEqual(added);
244
- });
245
- it('should get tests by project ID', () => {
246
- db.addTest(projectId, 'test1.js', 'jest');
247
- db.addTest(projectId, 'test2.js', 'jest');
248
- db.addTest(projectId, 'test3.js', 'mocha');
249
- const tests = db.getTestsByProject(projectId);
250
- expect(tests).toHaveLength(3);
251
- });
252
- it('should sort tests by file path', () => {
253
- db.addTest(projectId, 'c.js', 'jest');
254
- db.addTest(projectId, 'a.js', 'jest');
255
- db.addTest(projectId, 'b.js', 'jest');
256
- const tests = db.getTestsByProject(projectId);
257
- expect(tests.map(t => t.file_path)).toEqual(['a.js', 'b.js', 'c.js']);
258
- });
259
- it('should remove tests by project', () => {
260
- db.addTest(projectId, 'test1.js', 'jest');
261
- db.addTest(projectId, 'test2.js', 'jest');
262
- db.removeTestsByProject(projectId);
263
- expect(db.getTestsByProject(projectId)).toHaveLength(0);
264
- });
265
- });
266
- describe('Jenkins Job Operations', () => {
267
- let db;
268
- let projectId;
269
- beforeEach(() => {
270
- db = new database_1.JSONDatabase();
271
- const project = db.addProject('Test Project', '/test/path');
272
- projectId = project.id;
273
- });
274
- it('should add a new Jenkins job', () => {
275
- const job = db.addJenkinsJob(projectId, 'build-job', 'http://jenkins/job/build');
276
- expect(job).toMatchObject({
277
- id: 1,
278
- project_id: projectId,
279
- job_name: 'build-job',
280
- job_url: 'http://jenkins/job/build',
281
- last_build_status: null,
282
- last_build_number: null,
283
- last_updated: null,
284
- });
285
- expect(job.created_at).toBeGreaterThan(0);
286
- });
287
- it('should update existing Jenkins job when adding duplicate', () => {
288
- const job1 = db.addJenkinsJob(projectId, 'build', 'http://old-url');
289
- const job2 = db.addJenkinsJob(projectId, 'build', 'http://new-url');
290
- expect(job2.id).toBe(job1.id);
291
- expect(job2.job_url).toBe('http://new-url');
292
- });
293
- it('should get a Jenkins job by ID', () => {
294
- const added = db.addJenkinsJob(projectId, 'build', 'http://jenkins');
295
- const found = db.getJenkinsJob(added.id);
296
- expect(found).toEqual(added);
297
- });
298
- it('should get Jenkins jobs by project ID', () => {
299
- db.addJenkinsJob(projectId, 'build', 'http://jenkins/build');
300
- db.addJenkinsJob(projectId, 'test', 'http://jenkins/test');
301
- db.addJenkinsJob(projectId, 'deploy', 'http://jenkins/deploy');
302
- const jobs = db.getJenkinsJobsByProject(projectId);
303
- expect(jobs).toHaveLength(3);
304
- });
305
- it('should sort Jenkins jobs by name', () => {
306
- db.addJenkinsJob(projectId, 'z-job', 'http://jenkins/z');
307
- db.addJenkinsJob(projectId, 'a-job', 'http://jenkins/a');
308
- db.addJenkinsJob(projectId, 'm-job', 'http://jenkins/m');
309
- const jobs = db.getJenkinsJobsByProject(projectId);
310
- expect(jobs.map(j => j.job_name)).toEqual(['a-job', 'm-job', 'z-job']);
311
- });
312
- });
313
- describe('Project Port Operations', () => {
314
- let db;
315
- let projectId;
316
- beforeEach(() => {
317
- db = new database_1.JSONDatabase();
318
- const project = db.addProject('Test Project', '/test/path');
319
- projectId = project.id;
320
- });
321
- it('should add a new project port', () => {
322
- const port = db.addProjectPort(projectId, 3000, 'package.json', 'dev');
323
- expect(port).toMatchObject({
324
- id: 1,
325
- project_id: projectId,
326
- port: 3000,
327
- script_name: 'dev',
328
- config_source: 'package.json',
329
- });
330
- expect(port.last_detected).toBeGreaterThan(0);
331
- expect(port.created_at).toBeGreaterThan(0);
332
- });
333
- it('should update existing port when adding duplicate', () => {
334
- const port1 = db.addProjectPort(projectId, 3000, 'old-source', 'dev');
335
- const port2 = db.addProjectPort(projectId, 3000, 'new-source', 'dev');
336
- expect(port2.id).toBe(port1.id);
337
- expect(port2.config_source).toBe('new-source');
338
- });
339
- it('should get a project port by ID', () => {
340
- const added = db.addProjectPort(projectId, 3000, 'package.json');
341
- const found = db.getProjectPort(added.id);
342
- expect(found).toEqual(added);
343
- });
344
- it('should get all ports for a project', () => {
345
- db.addProjectPort(projectId, 3000, 'package.json', 'dev');
346
- db.addProjectPort(projectId, 8080, 'package.json', 'api');
347
- db.addProjectPort(projectId, 5432, 'docker-compose.yml');
348
- const ports = db.getProjectPorts(projectId);
349
- expect(ports).toHaveLength(3);
350
- });
351
- it('should sort ports by port number', () => {
352
- db.addProjectPort(projectId, 8080, 'package.json');
353
- db.addProjectPort(projectId, 3000, 'package.json');
354
- db.addProjectPort(projectId, 5432, 'docker-compose.yml');
355
- const ports = db.getProjectPorts(projectId);
356
- expect(ports.map(p => p.port)).toEqual([3000, 5432, 8080]);
357
- });
358
- it('should get ports by script name', () => {
359
- db.addProjectPort(projectId, 3000, 'package.json', 'dev');
360
- db.addProjectPort(projectId, 3001, 'package.json', 'dev');
361
- db.addProjectPort(projectId, 8080, 'package.json', 'prod');
362
- const devPorts = db.getProjectPortsByScript(projectId, 'dev');
363
- expect(devPorts).toHaveLength(2);
364
- expect(devPorts.map(p => p.port)).toEqual([3000, 3001]);
365
- });
366
- it('should update port last detected timestamp', (done) => {
367
- const port = db.addProjectPort(projectId, 3000, 'package.json', 'dev');
368
- const initialTime = port.last_detected;
369
- // Wait a bit to ensure timestamp changes
370
- setTimeout(() => {
371
- db.updateProjectPortLastDetected(projectId, 3000, 'dev');
372
- const updated = db.getProjectPort(port.id);
373
- expect(updated?.last_detected).toBeGreaterThanOrEqual(initialTime);
374
- done();
375
- }, 10);
376
- });
377
- it('should remove all ports for a project', () => {
378
- db.addProjectPort(projectId, 3000, 'package.json');
379
- db.addProjectPort(projectId, 8080, 'package.json');
380
- db.removeProjectPorts(projectId);
381
- expect(db.getProjectPorts(projectId)).toHaveLength(0);
382
- });
383
- });
384
- describe('Settings Operations', () => {
385
- let db;
386
- beforeEach(() => {
387
- db = new database_1.JSONDatabase();
388
- });
389
- it('should set a new setting', () => {
390
- db.setSetting('theme', 'dark');
391
- const value = db.getSetting('theme');
392
- expect(value).toBe('dark');
393
- });
394
- it('should update an existing setting', () => {
395
- db.setSetting('theme', 'dark');
396
- db.setSetting('theme', 'light');
397
- expect(db.getSetting('theme')).toBe('light');
398
- });
399
- it('should return null for non-existent setting', () => {
400
- const value = db.getSetting('non-existent');
401
- expect(value).toBeNull();
402
- });
403
- it('should get all settings', () => {
404
- db.setSetting('theme', 'dark');
405
- db.setSetting('language', 'en');
406
- db.setSetting('notifications', 'true');
407
- const settings = db.getAllSettings();
408
- expect(settings).toEqual({
409
- theme: 'dark',
410
- language: 'en',
411
- notifications: 'true',
412
- });
413
- });
414
- });
415
- describe('Data Migration', () => {
416
- it('should migrate old data without tags field', () => {
417
- const dataDir = path.join(testConfig.dataDir, '.projax');
418
- fs.mkdirSync(dataDir, { recursive: true });
419
- const dbPath = path.join(dataDir, 'data.json');
420
- // Write old format without tags
421
- const oldData = {
422
- projects: [
423
- {
424
- id: 1,
425
- name: 'Old Project',
426
- path: '/old/path',
427
- created_at: 1234567890,
428
- },
429
- ],
430
- tests: [],
431
- jenkins_jobs: [],
432
- project_ports: [],
433
- settings: [],
434
- };
435
- fs.writeFileSync(dbPath, JSON.stringify(oldData));
436
- const db = new database_1.JSONDatabase();
437
- const project = db.getProject(1);
438
- expect(project?.tags).toEqual([]);
439
- expect(project?.framework).toBeNull();
440
- expect(project?.description).toBeNull();
441
- });
442
- it('should add missing arrays in migration', () => {
443
- const dataDir = path.join(testConfig.dataDir, '.projax');
444
- fs.mkdirSync(dataDir, { recursive: true });
445
- const dbPath = path.join(dataDir, 'data.json');
446
- // Write incomplete data
447
- const oldData = {
448
- projects: [],
449
- };
450
- fs.writeFileSync(dbPath, JSON.stringify(oldData));
451
- const db = new database_1.JSONDatabase();
452
- // Should not throw and should have all arrays
453
- expect(db.getAllProjects()).toEqual([]);
454
- expect(db.getAllSettings()).toEqual({});
455
- });
456
- });
457
- describe('Singleton Pattern', () => {
458
- it('should return the same instance', () => {
459
- const db1 = (0, database_1.getDatabase)();
460
- const db2 = (0, database_1.getDatabase)();
461
- expect(db1).toBe(db2);
462
- });
463
- });
464
- describe('Persistence', () => {
465
- it('should persist data to disk', () => {
466
- const db = new database_1.JSONDatabase();
467
- db.addProject('Test', '/test');
468
- const dbPath = path.join(testConfig.dataDir, '.projax', 'data.json');
469
- const content = fs.readFileSync(dbPath, 'utf-8');
470
- const data = JSON.parse(content);
471
- expect(data.projects).toHaveLength(1);
472
- expect(data.projects[0].name).toBe('Test');
473
- });
474
- it('should format JSON with indentation', () => {
475
- const db = new database_1.JSONDatabase();
476
- db.addProject('Test', '/test');
477
- const dbPath = path.join(testConfig.dataDir, '.projax', 'data.json');
478
- const content = fs.readFileSync(dbPath, 'utf-8');
479
- // Check that it's formatted (has newlines and indentation)
480
- expect(content).toContain('\n');
481
- expect(content).toContain(' ');
482
- });
483
- });
484
- });
485
- //# sourceMappingURL=database.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.test.js","sourceRoot":"","sources":["../../src/__tests__/database.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=routes.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"routes.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/routes.test.ts"],"names":[],"mappings":""}