Skip to content

Commit 13da1dd

Browse files
authored
Merge pull request #50 from desko27/test/add-removes-only-specific-target-tests
Add removes only specific target tests
2 parents eeda45f + ad23a9d commit 13da1dd

File tree

1 file changed

+111
-2
lines changed

1 file changed

+111
-2
lines changed

tests/src/end.test.tsx

Lines changed: 111 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { Confirm } from './shared/Confirm'
44

55
describe('end()', () => {
66
describe('inside', () => {
7-
test('removes target', async () => {
7+
test('removes one', async () => {
88
const screen = render(<Confirm.Root />)
99
Confirm.call({ message: 'foo' })
1010
await screen.getByRole('button', { name: /no/i }).click()
@@ -22,9 +22,68 @@ describe('end()', () => {
2222
)
2323
await expect.element(screen.getByRole('dialog')).not.toBeInTheDocument()
2424
})
25+
describe('removes only specific target', () => {
26+
test('first one', async () => {
27+
const screen = render(<Confirm.Root />)
28+
Confirm.call({ message: 'first one' })
29+
Confirm.call({ message: 'middle one' })
30+
Confirm.call({ message: 'last one' })
31+
await screen
32+
.getByRole('dialog', { name: /first one/i })
33+
.getByRole('button', { name: /no/i })
34+
.click()
35+
await expect
36+
.element(screen.getByRole('dialog', { name: /first one/i }))
37+
.not.toBeInTheDocument()
38+
await expect
39+
.element(screen.getByRole('dialog', { name: /middle one/i }))
40+
.toBeInTheDocument()
41+
await expect
42+
.element(screen.getByRole('dialog', { name: /last one/i }))
43+
.toBeInTheDocument()
44+
})
45+
test('middle one', async () => {
46+
const screen = render(<Confirm.Root />)
47+
Confirm.call({ message: 'first one' })
48+
Confirm.call({ message: 'middle one' })
49+
Confirm.call({ message: 'last one' })
50+
await screen
51+
.getByRole('dialog', { name: /middle one/i })
52+
.getByRole('button', { name: /no/i })
53+
.click()
54+
await expect
55+
.element(screen.getByRole('dialog', { name: /first one/i }))
56+
.toBeInTheDocument()
57+
await expect
58+
.element(screen.getByRole('dialog', { name: /middle one/i }))
59+
.not.toBeInTheDocument()
60+
await expect
61+
.element(screen.getByRole('dialog', { name: /last one/i }))
62+
.toBeInTheDocument()
63+
})
64+
test('last one', async () => {
65+
const screen = render(<Confirm.Root />)
66+
Confirm.call({ message: 'first one' })
67+
Confirm.call({ message: 'middle one' })
68+
Confirm.call({ message: 'last one' })
69+
await screen
70+
.getByRole('dialog', { name: /last one/i })
71+
.getByRole('button', { name: /no/i })
72+
.click()
73+
await expect
74+
.element(screen.getByRole('dialog', { name: /first one/i }))
75+
.toBeInTheDocument()
76+
await expect
77+
.element(screen.getByRole('dialog', { name: /middle one/i }))
78+
.toBeInTheDocument()
79+
await expect
80+
.element(screen.getByRole('dialog', { name: /last one/i }))
81+
.not.toBeInTheDocument()
82+
})
83+
})
2584
})
2685
describe('outside', () => {
27-
test('removes target', async () => {
86+
test('removes one', async () => {
2887
const screen = render(<Confirm.Root />)
2988
const promise = Confirm.call({ message: 'foo' })
3089
Confirm.end(promise, false)
@@ -37,5 +96,55 @@ describe('end()', () => {
3796
Confirm.end(false)
3897
await expect.element(screen.getByRole('dialog')).not.toBeInTheDocument()
3998
})
99+
describe('removes only specific target', () => {
100+
test('first one', async () => {
101+
const screen = render(<Confirm.Root />)
102+
const firstPromise = Confirm.call({ message: 'first one' })
103+
Confirm.call({ message: 'middle one' })
104+
Confirm.call({ message: 'last one' })
105+
Confirm.end(firstPromise, false)
106+
await expect
107+
.element(screen.getByRole('dialog', { name: /first one/i }))
108+
.not.toBeInTheDocument()
109+
await expect
110+
.element(screen.getByRole('dialog', { name: /middle one/i }))
111+
.toBeInTheDocument()
112+
await expect
113+
.element(screen.getByRole('dialog', { name: /last one/i }))
114+
.toBeInTheDocument()
115+
})
116+
test('middle one', async () => {
117+
const screen = render(<Confirm.Root />)
118+
Confirm.call({ message: 'first one' })
119+
const middlePromise = Confirm.call({ message: 'middle one' })
120+
Confirm.call({ message: 'last one' })
121+
Confirm.end(middlePromise, false)
122+
await expect
123+
.element(screen.getByRole('dialog', { name: /first one/i }))
124+
.toBeInTheDocument()
125+
await expect
126+
.element(screen.getByRole('dialog', { name: /middle one/i }))
127+
.not.toBeInTheDocument()
128+
await expect
129+
.element(screen.getByRole('dialog', { name: /last one/i }))
130+
.toBeInTheDocument()
131+
})
132+
test('last one', async () => {
133+
const screen = render(<Confirm.Root />)
134+
Confirm.call({ message: 'first one' })
135+
Confirm.call({ message: 'middle one' })
136+
const lastPromise = Confirm.call({ message: 'last one' })
137+
Confirm.end(lastPromise, false)
138+
await expect
139+
.element(screen.getByRole('dialog', { name: /first one/i }))
140+
.toBeInTheDocument()
141+
await expect
142+
.element(screen.getByRole('dialog', { name: /middle one/i }))
143+
.toBeInTheDocument()
144+
await expect
145+
.element(screen.getByRole('dialog', { name: /last one/i }))
146+
.not.toBeInTheDocument()
147+
})
148+
})
40149
})
41150
})

0 commit comments

Comments
 (0)