eletrotupi / tcc/ api/tests/users/onboarding.test.tsd056c177d3c92fbe121ee526d7bab29f7ba377eb
1.2 KB | 41 lines Raw
1
import { describe, it, expect, afterAll, beforeEach } from 'vitest'
2
import request from 'supertest'
3
import { createApp } from '@app/createApp'
4
import {
5
  buildPrisma,
6
  cleanupTestDb,
7
  createTestUser,
8
  generateTestToken,
9
  expectPublicUser,
10
} from '../test-helper'
11

12
const app = createApp()
13
const db = buildPrisma()
14

15
afterAll(() => db.$disconnect())
16
beforeEach(() => cleanupTestDb(db))
17

18
describe('POST /users/me/onboarding/complete', () => {
19
  it('records the completion and returns the public user', async () => {
20
    const user = await createTestUser(db, { email: 'onboarding@example.com' })
21
    const token = generateTestToken(user.id, user.email)
22

23
    expect(user.onboardingSeenAt).toBeNull()
24

25
    const res = await request(app)
26
      .post('/users/me/onboarding/complete')
27
      .set('Authorization', `Bearer ${token}`)
28

29
    expect(res.status).toBe(200)
30
    expect(res.body.user.onboardingSeenAt).not.toBeNull()
31
    expectPublicUser(res.body.user)
32

33
    const dbUser = await db.user.findUnique({ where: { id: user.id } })
34
    expect(dbUser!.onboardingSeenAt).not.toBeNull()
35
  })
36

37
  it('returns 401 without a token', async () => {
38
    const res = await request(app).post('/users/me/onboarding/complete')
39
    expect(res.status).toBe(401)
40
  })
41
})