update first - 84
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
import test from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
import fs from 'node:fs/promises';
|
||||
import path from 'node:path';
|
||||
import request from 'supertest';
|
||||
import { createTestApp, loginToken } from './helpers.js';
|
||||
|
||||
test('HTTP auth, role filtering, validation, and progress update are real', async () => {
|
||||
const { app, prisma } = await createTestApp();
|
||||
try {
|
||||
await request(app.getHttpServer()).get('/api/v1/objectives').expect(401);
|
||||
|
||||
const employeeToken = await loginToken(app, 'employee');
|
||||
const managerToken = await loginToken(app, 'manager');
|
||||
|
||||
const employeeObjectives = await request(app.getHttpServer())
|
||||
.get('/api/v1/objectives')
|
||||
.set('Authorization', `Bearer ${employeeToken}`)
|
||||
.expect(200);
|
||||
assert.equal(employeeObjectives.body.success, true);
|
||||
assert.deepEqual(
|
||||
employeeObjectives.body.data.map((objective: { ownerId: number }) => objective.ownerId),
|
||||
[3],
|
||||
);
|
||||
|
||||
const managerObjectives = await request(app.getHttpServer())
|
||||
.get('/api/v1/objectives')
|
||||
.set('Authorization', `Bearer ${managerToken}`)
|
||||
.expect(200);
|
||||
assert.equal(managerObjectives.body.data.length, 3);
|
||||
|
||||
await request(app.getHttpServer())
|
||||
.post('/api/v1/objectives')
|
||||
.set('Authorization', `Bearer ${employeeToken}`)
|
||||
.send({ title: '', ownerId: 3, quarter: '2026-Q2' })
|
||||
.expect(400);
|
||||
|
||||
const progressResponse = await request(app.getHttpServer())
|
||||
.patch('/api/v1/key-results/2/progress')
|
||||
.set('Authorization', `Bearer ${employeeToken}`)
|
||||
.send({ progress: 70, comment: 'Updated in e2e test' })
|
||||
.expect(200);
|
||||
assert.equal(progressResponse.body.data.progress, 70);
|
||||
await prisma.keyResult.update({ where: { id: 2 }, data: { progress: 60 } });
|
||||
await prisma.progressUpdate.deleteMany({ where: { keyResultId: 2, progress: 70 } });
|
||||
} finally {
|
||||
await app.close();
|
||||
}
|
||||
});
|
||||
|
||||
test('golden objective list response does not drift', async () => {
|
||||
const { app } = await createTestApp();
|
||||
try {
|
||||
const token = await loginToken(app, 'manager');
|
||||
const response = await request(app.getHttpServer())
|
||||
.get('/api/v1/objectives')
|
||||
.set('Authorization', `Bearer ${token}`)
|
||||
.expect(200);
|
||||
const canonical = JSON.stringify(
|
||||
{
|
||||
success: response.body.success,
|
||||
data: response.body.data.map((objective: { id: number; title: string; quarter: string; status: string; keyResults: { id: number; title: string; progress: number }[] }) => ({
|
||||
id: objective.id,
|
||||
title: objective.title,
|
||||
quarter: objective.quarter,
|
||||
status: objective.status,
|
||||
keyResults: objective.keyResults.map((keyResult) => ({
|
||||
id: keyResult.id,
|
||||
title: keyResult.title,
|
||||
progress: keyResult.progress,
|
||||
})),
|
||||
})),
|
||||
meta: response.body.meta,
|
||||
},
|
||||
null,
|
||||
2,
|
||||
);
|
||||
const fixture = await fs.readFile(path.resolve('test/golden/objectives.manager.json'), 'utf8');
|
||||
assert.equal(`${canonical}\n`, fixture);
|
||||
} finally {
|
||||
await app.close();
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user