|
1 | 1 | import { act } from '@testing-library/react'; |
2 | | -import { describe, expect, it } from 'vitest'; |
| 2 | +import { describe, expect, it, vi } from 'vitest'; |
3 | 3 |
|
4 | 4 | import { bindCreateFixtures } from '@/test/create-fixtures'; |
5 | 5 | import { render, screen } from '@/test/utils'; |
@@ -335,5 +335,39 @@ describe('PhoneSection', () => { |
335 | 335 | }); |
336 | 336 | }); |
337 | 337 |
|
338 | | - it.todo('Test for verification of added phone number'); |
| 338 | + describe('Add phone with attribute disabled for sign-up but used for sign-in', () => { |
| 339 | + const disabledForSignUpConfig = createFixtures.config(f => { |
| 340 | + f.withPhoneNumber({ enabled: false, used_for_first_factor: true }); |
| 341 | + f.withUser({ email_addresses: ['test@clerk.com'] }); |
| 342 | + }); |
| 343 | + |
| 344 | + it('renders add phone screen', async () => { |
| 345 | + const { wrapper } = await createFixtures(disabledForSignUpConfig); |
| 346 | + |
| 347 | + const { getByRole, userEvent, getByLabelText, findByRole } = render(<PhoneSection />, { wrapper }); |
| 348 | + await userEvent.click(getByRole('button', { name: 'Add phone number' })); |
| 349 | + await findByRole('heading', { name: /Add phone number/i }); |
| 350 | + getByLabelText(/phone number/i); |
| 351 | + }); |
| 352 | + |
| 353 | + it('can add a phone and reach the verification screen', async () => { |
| 354 | + const { wrapper, fixtures } = await createFixtures(disabledForSignUpConfig); |
| 355 | + |
| 356 | + const { getByRole, userEvent, getByLabelText, findByRole } = render(<PhoneSection />, { wrapper }); |
| 357 | + await userEvent.click(getByRole('button', { name: 'Add phone number' })); |
| 358 | + await findByRole('heading', { name: /Add phone number/i }); |
| 359 | + |
| 360 | + fixtures.clerk.user?.createPhoneNumber.mockReturnValueOnce( |
| 361 | + Promise.resolve({ |
| 362 | + phoneNumber: '+16911111111', |
| 363 | + prepareVerification: vi.fn().mockReturnValueOnce(Promise.resolve({} as any)), |
| 364 | + } as any), |
| 365 | + ); |
| 366 | + |
| 367 | + await userEvent.type(getByLabelText(/phone number/i), '6911111111'); |
| 368 | + await userEvent.click(getByRole('button', { name: /add$/i })); |
| 369 | + expect(fixtures.clerk.user?.createPhoneNumber).toHaveBeenCalledWith({ phoneNumber: '+16911111111' }); |
| 370 | + await findByRole('heading', { name: /Verify phone number/i }); |
| 371 | + }); |
| 372 | + }); |
339 | 373 | }); |
0 commit comments