omnivore/packages/api/test/services/create_user.test.ts

107 lines
3.4 KiB
TypeScript
Raw Normal View History

2024-04-05 14:53:03 +00:00
import { expect } from 'chai'
2023-09-14 03:22:27 +00:00
import { Filter } from '../../src/entity/filter'
2023-08-23 04:15:50 +00:00
import { StatusType, User } from '../../src/entity/user'
2023-09-14 03:22:27 +00:00
import { authTrx, getRepository } from '../../src/repository'
2023-09-07 04:35:05 +00:00
import { findProfile } from '../../src/services/profile'
import { deleteUser } from '../../src/services/user'
2023-08-23 04:15:50 +00:00
import {
createTestUser,
2023-09-14 03:22:27 +00:00
createUserWithoutProfile,
deleteFiltersFromUser,
2023-08-23 04:15:50 +00:00
} from '../db'
2022-07-21 05:18:24 +00:00
describe('create user', () => {
2023-09-01 15:42:19 +00:00
context('creates a user through manual sign up', () => {
2023-09-14 03:22:27 +00:00
it('adds the default filters to the user', async () => {
2023-09-01 15:42:19 +00:00
after(async () => {
const testUser = await getRepository(User).findOneBy({
2023-09-01 22:26:30 +00:00
name: 'filter_user',
2023-09-01 15:42:19 +00:00
})
2023-09-14 03:22:27 +00:00
await deleteUser(testUser!.id)
2023-09-01 15:42:19 +00:00
await deleteFiltersFromUser(testUser!.id)
})
2023-09-14 03:22:27 +00:00
const user = await createTestUser('filter_user')
const filters = await authTrx(
(t) => t.getRepository(Filter).findBy({ user: { id: user.id } }),
undefined,
user.id
)
2023-09-01 15:42:19 +00:00
expect(filters).not.to.be.empty
})
})
context('create a user with an invite', () => {
2023-09-06 11:31:34 +00:00
// it('follows the other user in the group', async () => {
// after(async () => {
// const testUser = await getRepository(User).findOneBy({
// name: 'testuser',
// })
// await deleteTestUser(testUser!.id)
// const testOwner = await getRepository(User).findOneBy({
// name: 'testowner',
// })
// await deleteTestUser(testOwner!.id)
// })
// const testOwner = 'testowner'
// const testUser = 'testuser'
// const adminUser = await createTestUser(testOwner)
// const admninIds = [adminUser.id]
// const [, invite] = await createGroup({
// admin: adminUser,
// name: 'testgroup',
// })
// const user = await createTestUser(testUser, invite.code)
// const userIds = [user.id]
// const userFollowers = await getUserFollowers(user)
// const userFollowing = await getUserFollowing(user)
// const adminUserFollowers = await getUserFollowers(adminUser)
// const adminUserFollowing = await getUserFollowing(adminUser)
// expect(userFollowers.map((u) => u.id)).to.eql(admninIds)
// expect(userFollowing.map((u) => u.id)).to.eql(admninIds)
// expect(adminUserFollowers.map((u) => u.id)).to.eql(userIds)
// expect(adminUserFollowing.map((u) => u.id)).to.eql(userIds)
// })
2022-02-11 17:24:33 +00:00
it('creates profile when user exists but profile not', async () => {
after(async () => {
2022-08-10 08:36:31 +00:00
const user = await getRepository(User).findOneBy({
name: 'userWithoutProfile',
})
2023-09-07 04:35:05 +00:00
await deleteUser(user!.id)
})
2022-02-11 17:24:33 +00:00
const name = 'userWithoutProfile'
const user = await createUserWithoutProfile(name)
2022-02-11 17:24:33 +00:00
await createTestUser(user.name)
2022-02-11 17:24:33 +00:00
2023-09-07 04:35:05 +00:00
const profile = await findProfile(user)
2022-02-11 17:24:33 +00:00
expect(profile).to.exist
})
2022-02-11 17:24:33 +00:00
})
context('create a user with pending confirmation', () => {
const name = 'pendingUser'
2022-07-21 05:18:24 +00:00
context('when email sends successfully', () => {
afterEach(async () => {
2022-08-10 08:36:31 +00:00
const user = await getRepository(User).findOneBy({ name })
2023-09-07 04:35:05 +00:00
await deleteUser(user!.id)
})
2022-07-21 05:18:24 +00:00
it('creates the user with pending status and correct name', async () => {
const user = await createTestUser(name, undefined, undefined, true)
expect(user.status).to.eql(StatusType.Pending)
expect(user.name).to.eql(name)
})
})
2022-07-21 05:18:24 +00:00
})
})