mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2026-04-03 08:05:37 +00:00
64 lines
2.2 KiB
JavaScript
64 lines
2.2 KiB
JavaScript
import { useJoinLeaveGroup } from './useJoinLeaveGroup'
|
|
|
|
describe('useJoinLeaveGroup', () => {
|
|
let apollo, toast, joinLeaveGroup
|
|
|
|
beforeEach(() => {
|
|
apollo = {
|
|
mutate: jest.fn().mockResolvedValue({
|
|
data: { JoinGroup: { user: { id: 'u1' }, membership: { role: 'usual' } } },
|
|
}),
|
|
}
|
|
toast = { error: jest.fn() }
|
|
;({ joinLeaveGroup } = useJoinLeaveGroup({ apollo, toast }))
|
|
})
|
|
|
|
it('calls JoinGroup mutation when not a member', async () => {
|
|
await joinLeaveGroup({ groupId: 'g1', userId: 'u1', isMember: false })
|
|
expect(apollo.mutate).toHaveBeenCalledWith(
|
|
expect.objectContaining({ variables: { groupId: 'g1', userId: 'u1' } }),
|
|
)
|
|
})
|
|
|
|
it('returns success and data on join', async () => {
|
|
const result = await joinLeaveGroup({ groupId: 'g1', userId: 'u1', isMember: false })
|
|
expect(result).toEqual({
|
|
success: true,
|
|
data: { user: { id: 'u1' }, membership: { role: 'usual' } },
|
|
})
|
|
})
|
|
|
|
it('calls LeaveGroup mutation when a member', async () => {
|
|
apollo.mutate.mockResolvedValue({
|
|
data: { LeaveGroup: { user: { id: 'u1' }, membership: { role: 'none' } } },
|
|
})
|
|
await joinLeaveGroup({ groupId: 'g1', userId: 'u1', isMember: true })
|
|
expect(apollo.mutate).toHaveBeenCalledWith(
|
|
expect.objectContaining({ variables: { groupId: 'g1', userId: 'u1' } }),
|
|
)
|
|
})
|
|
|
|
it('returns success and data on leave', async () => {
|
|
apollo.mutate.mockResolvedValue({
|
|
data: { LeaveGroup: { user: { id: 'u1' }, membership: { role: 'none' } } },
|
|
})
|
|
const result = await joinLeaveGroup({ groupId: 'g1', userId: 'u1', isMember: true })
|
|
expect(result).toEqual({
|
|
success: true,
|
|
data: { user: { id: 'u1' }, membership: { role: 'none' } },
|
|
})
|
|
})
|
|
|
|
it('shows toast error on failure', async () => {
|
|
apollo.mutate.mockRejectedValue(new Error('Ouch'))
|
|
await joinLeaveGroup({ groupId: 'g1', userId: 'u1', isMember: false })
|
|
expect(toast.error).toHaveBeenCalledWith('Ouch')
|
|
})
|
|
|
|
it('returns success false on error', async () => {
|
|
apollo.mutate.mockRejectedValue(new Error('Ouch'))
|
|
const result = await joinLeaveGroup({ groupId: 'g1', userId: 'u1', isMember: false })
|
|
expect(result).toEqual({ success: false })
|
|
})
|
|
})
|