/
userHasRole.test.ts
45 lines (37 loc) · 1.1 KB
/
userHasRole.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import type {CurrentUser} from '@sanity/types'
import {userHasRole} from './userHasRole'
const roleLessUser: CurrentUser = {
id: 'pabc123',
email: 'some@user.com',
name: 'Some User',
role: '',
roles: [],
}
const adminUser: CurrentUser = {
...roleLessUser,
role: 'administrator', // Legacy
roles: [{name: 'administrator', title: 'Administrator'}],
}
const multiRoleUser: CurrentUser = {
...adminUser,
role: 'editor', // Legacy
roles: [
{name: 'translator', title: 'Translator'},
{name: 'editor', title: 'Editor'},
],
}
test('userHasRole(): no roles', () => {
expect(userHasRole(roleLessUser, 'administrator')).toBe(false)
})
test('userHasRole(): no match', () => {
expect(userHasRole(adminUser, 'dogwalker')).toBe(false)
})
test('userHasRole(): match (single role)', () => {
expect(userHasRole(adminUser, 'administrator')).toBe(true)
})
test('userHasRole(): match (multiple roles)', () => {
expect(userHasRole(multiRoleUser, 'editor')).toBe(true)
})
test('userHasRole(): no match (multiple roles)', () => {
expect(userHasRole(multiRoleUser, 'administrator')).toBe(false)
})