Files
workavia-calendar-front/__test__/features/user/userAPI.test.tsx
T
lethemanh cadfa70e60 #708 apply strictier linting rules (#717)
* #708 apply strictier linting rules and fix simple eslint bugs

* #708 fix eslint errors relate to promise

* #708 fix eslint import/no-extraneous-dependencies

* #708 fix eslint errors of react-hook

* #708 enable eslint check for typescript

---------

Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
2026-04-01 17:15:10 +02:00

115 lines
3.0 KiB
TypeScript

import { clientConfig } from '@/features/User/oidcAuth'
import {
getOpenPaasUser,
updateUserConfigurations,
getResourceDetails,
getUserDetails
} from '@/features/User/userAPI'
import { api } from '@/utils/apiUtils'
jest.mock('@/utils/apiUtils')
clientConfig.url = 'https://example.com'
describe('getOpenPaasUser', () => {
it('should fetch and return user data', async () => {
const mockUser = { id: '123', name: 'OpenPaas User' }
;(api.get as jest.Mock).mockReturnValue({
json: jest.fn().mockResolvedValue(mockUser)
})
const result = await getOpenPaasUser()
expect(api.get).toHaveBeenCalledWith('api/user')
expect(result).toEqual(mockUser)
})
})
describe('getUserDetails', () => {
it('should fetch and return user details', async () => {
const mockUser = {
firstname: 'John',
lastname: 'Doe',
emails: ['john@test.com']
}
const userId = '123'
;(api.get as jest.Mock).mockReturnValue({
json: jest.fn().mockResolvedValue(mockUser)
})
const result = await getUserDetails(userId)
expect(api.get).toHaveBeenCalledWith(`api/users/${userId}`)
expect(result).toEqual(mockUser)
})
})
describe('getResourceDetails', () => {
it('should fetch and return resource details', async () => {
const mockResource = { _id: 'res-123', name: 'Meeting Room A' }
const resourceId = 'res-123'
;(api.get as jest.Mock).mockReturnValue({
json: jest.fn().mockResolvedValue(mockResource)
})
const result = await getResourceDetails(resourceId)
expect(api.get).toHaveBeenCalledWith(`api/resources/${resourceId}`)
expect(result).toEqual(mockResource)
})
})
describe('updateUserConfigurations', () => {
beforeEach(() => {
jest.clearAllMocks()
})
it('should PATCH configurations with language update', async () => {
const mockResponse = { status: 204 }
;(api.patch as jest.Mock).mockResolvedValue(mockResponse)
await updateUserConfigurations({ language: 'vi' })
expect(api.patch).toHaveBeenCalledWith('api/configurations?scope=user', {
json: [
{
name: 'core',
configurations: [{ name: 'language', value: 'vi' }]
}
]
})
})
it('should PATCH configurations with multiple updates', async () => {
const mockResponse = { status: 204 }
;(api.patch as jest.Mock).mockResolvedValue(mockResponse)
await updateUserConfigurations({
language: 'fr',
timezone: 'Europe/Paris'
})
expect(api.patch).toHaveBeenCalledWith('api/configurations?scope=user', {
json: [
{
name: 'core',
configurations: [
{ name: 'language', value: 'fr' },
{ name: 'datetime', value: { timeZone: 'Europe/Paris' } }
]
}
]
})
})
it('should handle empty updates without calling API', async () => {
const result = await updateUserConfigurations({})
expect(api.patch).not.toHaveBeenCalled()
expect(result).toEqual({ status: 204 })
})
})