test(260925-bow): Anlagewege tragen die laufende Version ein (rot)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { AdminSeedService } from './admin-seed.service';
|
||||
|
||||
/**
|
||||
@@ -95,6 +95,40 @@ describe('AdminSeedService', () => {
|
||||
service = new AdminSeedService(prisma, configService, groupsService);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.unstubAllEnvs();
|
||||
});
|
||||
|
||||
// quick-260925-bow (D-04): der Erst-Administrator bekommt die laufende
|
||||
// freigegebene Version eingetragen und sieht kein "Was ist neu"-Fenster
|
||||
// mit Altlasten; auf dev-Staenden null.
|
||||
it('legt den Erst-Administrator mit lastSeenReleaseVersion der laufenden Version an', async () => {
|
||||
vi.stubEnv('APP_VERSION', 'v10.2.3-3-gabc1234');
|
||||
let createdData: any;
|
||||
prisma.__setUserCreateImpl(async (args: any) => {
|
||||
createdData = args.data;
|
||||
return { id: 'u1' };
|
||||
});
|
||||
|
||||
await service.onApplicationBootstrap();
|
||||
|
||||
expect(createdData.lastSeenReleaseVersion).toBe('10.2.3');
|
||||
expect(createdData.role).toBe('SUPER_ADMIN');
|
||||
});
|
||||
|
||||
it('legt den Erst-Administrator auf dev-Staenden mit lastSeenReleaseVersion null an', async () => {
|
||||
vi.stubEnv('APP_VERSION', 'dev');
|
||||
let createdData: any;
|
||||
prisma.__setUserCreateImpl(async (args: any) => {
|
||||
createdData = args.data;
|
||||
return { id: 'u1' };
|
||||
});
|
||||
|
||||
await service.onApplicationBootstrap();
|
||||
|
||||
expect(createdData).toHaveProperty('lastSeenReleaseVersion', null);
|
||||
});
|
||||
|
||||
it('ruft auf einer frischen Installation in genau dieser Reihenfolge auf: tenant.upsert, ensureDefaultGroup, dann user.create', async () => {
|
||||
await service.onApplicationBootstrap();
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { ConflictException } from '@nestjs/common';
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { UserService } from './user.service';
|
||||
|
||||
/**
|
||||
@@ -251,6 +251,56 @@ describe('UserService', () => {
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* quick-260925-bow (D-04): neue Benutzer bekommen die laufende freigegebene
|
||||
* Version eingetragen, damit sie kein "Was ist neu"-Fenster mit Altlasten
|
||||
* sehen. Der Wert ist eine Eigenschaft des Servers (APP_VERSION), nicht des
|
||||
* Aufrufers — die Signatur von create() bekommt kein neues Feld.
|
||||
*/
|
||||
describe('create — lastSeenReleaseVersion (quick-260925-bow)', () => {
|
||||
let prisma: any;
|
||||
let service: UserService;
|
||||
|
||||
beforeEach(() => {
|
||||
prisma = makeFakePrisma();
|
||||
service = new UserService(prisma, { addUserToDefaultGroup: vi.fn().mockResolvedValue(undefined) } as any);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.unstubAllEnvs();
|
||||
});
|
||||
|
||||
it('traegt bei freigegebener laufender Version X.Y.Z ein (Describe-Stand gekuerzt)', async () => {
|
||||
vi.stubEnv('APP_VERSION', 'v10.2.3-3-gabc1234');
|
||||
const result = await service.create({ username: 'neu', email: 'neu@example.com', tenantId: 't1' });
|
||||
expect(result.lastSeenReleaseVersion).toBe('10.2.3');
|
||||
expectBoundCall(prisma, 't1', 'user', 'create');
|
||||
});
|
||||
|
||||
it('traegt auf dev-Staenden null ein', async () => {
|
||||
vi.stubEnv('APP_VERSION', 'dev');
|
||||
const result = await service.create({ username: 'neu2', email: 'neu2@example.com', tenantId: 't1' });
|
||||
expect(result.lastSeenReleaseVersion).toBeNull();
|
||||
});
|
||||
|
||||
it('traegt ohne APP_VERSION null ein', async () => {
|
||||
vi.stubEnv('APP_VERSION', undefined);
|
||||
const result = await service.create({ username: 'neu3', email: 'neu3@example.com', tenantId: 't1' });
|
||||
expect(result.lastSeenReleaseVersion).toBeNull();
|
||||
});
|
||||
|
||||
it('ein von aussen untergeschobenes Feld setzt den Wert nicht (kein Parameter der Signatur)', async () => {
|
||||
vi.stubEnv('APP_VERSION', 'v10.2.3');
|
||||
const result = await service.create({
|
||||
username: 'neu4',
|
||||
email: 'neu4@example.com',
|
||||
tenantId: 't1',
|
||||
lastSeenReleaseVersion: '99.0.0',
|
||||
} as unknown as Parameters<UserService['create']>[0]);
|
||||
expect(result.lastSeenReleaseVersion).toBe('10.2.3');
|
||||
});
|
||||
});
|
||||
|
||||
describe('findById', () => {
|
||||
let prisma: any;
|
||||
let service: UserService;
|
||||
|
||||
Reference in New Issue
Block a user