Compare commits

...

2 Commits

Author SHA1 Message Date
Gitea Actions
bdb2e274cc ci: Bump version to 0.11.8 [skip ci] 2026-01-19 05:28:15 +05:00
cd46f1d4c2 integration test fixes
All checks were successful
Deploy to Test Environment / deploy-to-test (push) Successful in 16m38s
2026-01-18 16:23:34 -08:00
4 changed files with 24 additions and 13 deletions

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "flyer-crawler",
"version": "0.11.7",
"version": "0.11.8",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "flyer-crawler",
"version": "0.11.7",
"version": "0.11.8",
"dependencies": {
"@bull-board/api": "^6.14.2",
"@bull-board/express": "^6.14.2",

View File

@@ -1,7 +1,7 @@
{
"name": "flyer-crawler",
"private": true,
"version": "0.11.7",
"version": "0.11.8",
"type": "module",
"scripts": {
"dev": "concurrently \"npm:start:dev\" \"vite\"",

View File

@@ -275,10 +275,16 @@ describe('Admin API Routes Integration Tests', () => {
describe('DELETE /api/admin/users/:id', () => {
it("should allow an admin to delete another user's account", async () => {
// Create a dedicated user for this deletion test to avoid affecting other tests
const { user: userToDelete } = await createAndLoginUser({
email: `delete-target-${Date.now()}@test.com`,
fullName: 'User To Delete',
request,
});
// Act: Call the delete endpoint as an admin.
const targetUserId = regularUser.user.user_id;
const response = await request
.delete(`/api/admin/users/${targetUserId}`)
.delete(`/api/admin/users/${userToDelete.user.user_id}`)
.set('Authorization', `Bearer ${adminToken}`);
// Assert: Check for a successful deletion status.
@@ -354,7 +360,7 @@ describe('Admin API Routes Integration Tests', () => {
.post('/api/admin/trigger/analytics-report')
.set('Authorization', `Bearer ${adminToken}`);
expect(response.status).toBe(200);
expect(response.status).toBe(202); // 202 Accepted for async job enqueue
expect(response.body.success).toBe(true);
expect(response.body.data.message).toContain('enqueued');
});
@@ -374,7 +380,7 @@ describe('Admin API Routes Integration Tests', () => {
.post('/api/admin/trigger/weekly-analytics')
.set('Authorization', `Bearer ${adminToken}`);
expect(response.status).toBe(200);
expect(response.status).toBe(202); // 202 Accepted for async job enqueue
expect(response.body.success).toBe(true);
expect(response.body.data.message).toContain('enqueued');
});
@@ -394,9 +400,9 @@ describe('Admin API Routes Integration Tests', () => {
.post('/api/admin/trigger/daily-deal-check')
.set('Authorization', `Bearer ${adminToken}`);
expect(response.status).toBe(200);
expect(response.status).toBe(202); // 202 Accepted for async job trigger
expect(response.body.success).toBe(true);
expect(response.body.data.message).toContain('enqueued');
expect(response.body.data.message).toContain('triggered');
});
it('should forbid regular users from triggering daily deal check', async () => {
@@ -466,7 +472,11 @@ describe('Admin API Routes Integration Tests', () => {
expect(response.status).toBe(200);
expect(response.body.success).toBe(true);
expect(response.body.data).toBeInstanceOf(Array);
// The endpoint returns { users: [...], total: N }
expect(response.body.data).toHaveProperty('users');
expect(response.body.data).toHaveProperty('total');
expect(response.body.data.users).toBeInstanceOf(Array);
expect(typeof response.body.data.total).toBe('number');
});
it('should forbid regular users from listing all users', async () => {

View File

@@ -52,9 +52,10 @@ describe('Reactions API Routes Integration Tests', () => {
vi.unstubAllEnvs();
// Clean up reactions created during tests
if (createdReactionIds.length > 0) {
await getPool().query('DELETE FROM public.reactions WHERE reaction_id = ANY($1::int[])', [
createdReactionIds,
]);
await getPool().query(
'DELETE FROM public.user_reactions WHERE reaction_id = ANY($1::int[])',
[createdReactionIds],
);
}
await cleanupDb({
userIds: createdUserIds,