-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathworkspace-name.test.tsx
78 lines (65 loc) · 2.46 KB
/
workspace-name.test.tsx
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import { test, expect } from 'vitest'
import { FormWorkspaceName } from '../form-workspace-name'
import { render, waitFor } from '@/lib/test-utils'
import userEvent from '@testing-library/user-event'
import { server } from '@/mocks/msw/node'
import { http, HttpResponse } from 'msw'
import { mswEndpoint } from '@/test/msw-endpoint'
test('can rename workspace', async () => {
const { getByRole, getByText } = render(
<FormWorkspaceName workspaceName="foo-bar" isArchived={false} />
)
const input = getByRole('textbox', { name: /workspace name/i })
await userEvent.clear(input)
await userEvent.type(input, 'baz-qux')
expect(input).toHaveValue('baz-qux')
await userEvent.click(getByRole('button', { name: /save/i }))
await waitFor(() => {
expect(getByText(/renamed workspace to "baz-qux"/i)).toBeVisible()
})
})
test("can't rename archived workspace", async () => {
const { getByRole } = render(
<FormWorkspaceName workspaceName="foo" isArchived={true} />
)
expect(getByRole('textbox', { name: /workspace name/i })).toBeDisabled()
expect(getByRole('button', { name: /save/i })).toBeDisabled()
})
test("can't rename active workspace", async () => {
server.use(
http.get(mswEndpoint('/api/v1/workspaces/active'), () =>
HttpResponse.json({
workspaces: [
{
name: 'foo',
is_active: true,
last_updated: new Date(Date.now()).toISOString(),
},
],
})
)
)
const { getByRole } = render(
<FormWorkspaceName workspaceName="foo" isArchived={true} />
)
expect(getByRole('textbox', { name: /workspace name/i })).toBeDisabled()
expect(getByRole('button', { name: /save/i })).toBeDisabled()
})
test("can't rename archived workspace", async () => {
const { getByRole, queryByText } = render(
<FormWorkspaceName workspaceName="foo" isArchived={true} />
)
expect(getByRole('textbox', { name: /workspace name/i })).toBeDisabled()
expect(getByRole('button', { name: /save/i })).toBeDisabled()
expect(
queryByText(/cannot rename the default workspace/i)
).not.toBeInTheDocument()
})
test("can't rename default workspace", async () => {
const { getByRole, getByText } = render(
<FormWorkspaceName workspaceName="default" isArchived={false} />
)
expect(getByRole('textbox', { name: /workspace name/i })).toBeDisabled()
expect(getByRole('button', { name: /save/i })).toBeDisabled()
expect(getByText(/cannot rename the default workspace/i)).toBeVisible()
})