Skip to content

Commit 4fdfa2a

Browse files
AINATIVEM-44 add volume name and command coverage for app-extensions compose tests
1 parent 4632c04 commit 4fdfa2a

2 files changed

Lines changed: 21 additions & 6 deletions

File tree

src/generators/node/database.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,7 @@ describe('generateDatabase — tokenRepository.ts', () => {
326326
expect(compose).toContain('user: root');
327327
expect(compose).toContain('tsx watch src/index.ts');
328328
expect(compose).toContain('su-exec node');
329+
expect(compose).toContain('chown -R node:node /app/node_modules');
329330
expect(compose).toContain('3000:3000');
330331
expect(compose).toContain('./package.json:/app/package.json:ro');
331332
expect(compose).toContain('app_node_modules:/app/node_modules');
@@ -338,6 +339,7 @@ describe('generateDatabase — tokenRepository.ts', () => {
338339
expect(compose).toContain('dockerfile: Dockerfile.app-extension-ui');
339340
expect(compose).toContain('npm run dev:frontend');
340341
expect(compose).toContain('su-exec node');
342+
expect(compose).toContain('chown -R node:node /app/node_modules');
341343
expect(compose).toContain('5173:5173');
342344
expect(compose).toContain('./package.json:/app/package.json:ro');
343345
expect(compose).toContain('app_extension_ui_node_modules:/app/node_modules');
@@ -384,6 +386,8 @@ describe('generateDatabase — tokenRepository.ts', () => {
384386
expect(compose).toContain('DATABASE_URL: postgresql://app:app@db:5432/test-app');
385387
expect(compose).toContain('depends_on:');
386388
expect(compose).toContain('condition: service_healthy');
389+
expect(compose).toContain('postgres_data:/var/lib/postgresql/data');
390+
expect(compose).not.toContain('db_data:');
387391
});
388392

389393
it('postgres schema uses text for access_token and refresh_token', async () => {
@@ -489,6 +493,14 @@ describe('generateDatabase — ComposeBuilder behavior', () => {
489493
expect(content).not.toContain('app-extension-ui');
490494
expect(content).not.toContain('Dockerfile.app-extension-ui');
491495
});
496+
497+
it('mysql with app extensions uses mysql_data volume name', async () => {
498+
const { generateDatabase } = await import('./database.js');
499+
await generateDatabase(tmpDir, { ...mysqlOptions, appExtensions: ['custom-panel'] });
500+
const compose = await read('docker-compose.yml');
501+
expect(compose).toContain('mysql_data:/var/lib/mysql');
502+
expect(compose).not.toContain('db_data:');
503+
});
492504
});
493505

494506
describe('generateDatabase — Dockerfile', () => {

src/generators/node/database.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -468,8 +468,8 @@ function buildBackendService(options: GeneratorOptions): { name: string; service
468468
database === 'postgres'
469469
? `postgresql://app:app@db:5432/${projectName}`
470470
: database === 'mysql'
471-
? `mysql://app:app@db:3306/${projectName}`
472-
: 'file:./data.db';
471+
? `mysql://app:app@db:3306/${projectName}`
472+
: 'file:./data.db';
473473

474474
const service: ComposeService = {
475475
build: { context: '.', dockerfile: 'Dockerfile.app' },
@@ -494,8 +494,8 @@ function buildBackendService(options: GeneratorOptions): { name: string; service
494494
const databaseUrl = isSqlite
495495
? 'file:/app/data/data.db'
496496
: database === 'postgres'
497-
? `postgresql://app:app@db:5432/${projectName}`
498-
: `mysql://app:app@db:3306/${projectName}`;
497+
? `postgresql://app:app@db:5432/${projectName}`
498+
: `mysql://app:app@db:3306/${projectName}`;
499499

500500
const service: ComposeService = {
501501
build: '.',
@@ -512,7 +512,11 @@ function buildBackendService(options: GeneratorOptions): { name: string; service
512512
return { name: 'backend', service };
513513
}
514514

515-
function buildDatabaseService(options: GeneratorOptions): { name: string; service: ComposeService; volumeName: string } {
515+
function buildDatabaseService(options: GeneratorOptions): {
516+
name: string;
517+
service: ComposeService;
518+
volumeName: string;
519+
} {
516520
const { database, projectName, appExtensions } = options;
517521
const hasAppExt = appExtensions.length > 0;
518522

@@ -641,7 +645,6 @@ async function generateDockerCompose(outputDir: string, options: GeneratorOption
641645
await writeFile(join(outputDir, 'docker-compose.yml'), yaml.stringify(config));
642646
}
643647

644-
645648
function nodeVolumeCommand(command: string): string {
646649
return `sh -c "chown -R node:node /app/node_modules && su-exec node sh -c '${command}'"`;
647650
}

0 commit comments

Comments
 (0)