* add testing lib * remove coverage folder from git * finished basic test setup * fix tests typescript and import paths * add first snapshot * testing utils * rename test files; update script flags; ++tests * testing utils functions * testing downloadAndResize wip * remove download test * specify unwanted coverage paths; remove update snapshots flag * fix strings tests * testing downloadAndResize method * increasing testing * fixing snapshots wip * fixed shell mobile snapshot * adding snapshots for the screens * fix onboard snapshot * fix typescript issues * fix TabsSelector snapshot * Account for testing device's locale in ago() tests * Remove platform detection on regex * mocking store state wip * mocking store state * increasing test coverage * increasing test coverage * increasing test coverage on src/screens * src/screens (except for profile) above 80% cov * testing profile screen wip * increase coverage on Menu and TabsSelector * mocking profile ui state wip * mocking profile ui state wip * fixing mobileshell tests wip * snapshots using testing-library * fixing profile tests wip * removing mobile shell tests * src/view/com tests wip * remove unnecessary patch-package * fixed profile test error * clear mocks after every test * fix base mocked store values (getters) * fix base mocked store values (hasLoaded, nonReplyFeed) * profile screen above 80% coverage * testing custom hooks * improving composer coverage * fix tests after merge * finishing composer coverage * improving src/com/discover coverage * improve src/view/com/login coverage fix SuggestedFollows tests adding some comments * fix SuggestedFollows tests * improve src/view/com/profile coverage extra minor fixes * improve src/view/com/notifications coverage * update coverage ignore patterns * rename errorMessageTryAgainButton increase SuggestedFollows converage * improve src/view/com/posts coverage * improve src/view/com/onboard coverage * update snapshot * improve src/view/com/post coverage * improve src/view/com/post-thread coverage rename ErrorMessage tests test Debug and Log components * init testing state * testing root-store * updating comments * small fixes * removed extra console logs * improve src/state/models coverage refactor rootStore rename some spies * adding cleanup method after tests * improve src/state/models coverage * improve src/state/models coverage * improve src/state/models coverage * improve src/state/models coverage * test setInterval in setupState * Clean up tests and update Home screen state management * Remove some tests we dont need * Remove snapshot tests * Remove any tests that dont demonstrate clear value * Cleanup Co-authored-by: Paul Frazee <pfrazee@gmail.com>
128 lines
4.1 KiB
TypeScript
128 lines
4.1 KiB
TypeScript
import React from 'react'
|
|
import {Signin} from '../../../../src/view/com/login/Signin'
|
|
import {cleanup, fireEvent, render} from '../../../../jest/test-utils'
|
|
import {SessionServiceClient, sessionClient as AtpApi} from '@atproto/api'
|
|
import {
|
|
mockedLogStore,
|
|
mockedRootStore,
|
|
mockedSessionStore,
|
|
mockedShellStore,
|
|
} from '../../../../__mocks__/state-mock'
|
|
import {Keyboard} from 'react-native'
|
|
|
|
describe('Signin', () => {
|
|
const requestPasswordResetMock = jest.fn()
|
|
const resetPasswordMock = jest.fn()
|
|
jest.spyOn(AtpApi, 'service').mockReturnValue({
|
|
com: {
|
|
atproto: {
|
|
account: {
|
|
requestPasswordReset: requestPasswordResetMock,
|
|
resetPassword: resetPasswordMock,
|
|
},
|
|
},
|
|
},
|
|
} as unknown as SessionServiceClient)
|
|
const mockedProps = {
|
|
onPressBack: jest.fn(),
|
|
}
|
|
afterAll(() => {
|
|
jest.clearAllMocks()
|
|
cleanup()
|
|
})
|
|
|
|
it('renders logs in form', async () => {
|
|
const {findByTestId} = render(<Signin {...mockedProps} />)
|
|
|
|
const loginFormView = await findByTestId('loginFormView')
|
|
expect(loginFormView).toBeTruthy()
|
|
|
|
const loginUsernameInput = await findByTestId('loginUsernameInput')
|
|
expect(loginUsernameInput).toBeTruthy()
|
|
|
|
fireEvent.changeText(loginUsernameInput, 'testusername')
|
|
|
|
const loginPasswordInput = await findByTestId('loginPasswordInput')
|
|
expect(loginPasswordInput).toBeTruthy()
|
|
|
|
fireEvent.changeText(loginPasswordInput, 'test pass')
|
|
|
|
const loginNextButton = await findByTestId('loginNextButton')
|
|
expect(loginNextButton).toBeTruthy()
|
|
|
|
fireEvent.press(loginNextButton)
|
|
|
|
expect(mockedSessionStore.login).toHaveBeenCalled()
|
|
})
|
|
|
|
it('renders selects service from login form', async () => {
|
|
const keyboardSpy = jest.spyOn(Keyboard, 'dismiss')
|
|
const {findByTestId} = render(<Signin {...mockedProps} />)
|
|
|
|
const loginSelectServiceButton = await findByTestId(
|
|
'loginSelectServiceButton',
|
|
)
|
|
expect(loginSelectServiceButton).toBeTruthy()
|
|
|
|
fireEvent.press(loginSelectServiceButton)
|
|
|
|
expect(mockedShellStore.openModal).toHaveBeenCalled()
|
|
expect(keyboardSpy).toHaveBeenCalled()
|
|
})
|
|
|
|
it('renders new password form', async () => {
|
|
const {findByTestId} = render(<Signin {...mockedProps} />)
|
|
|
|
const forgotPasswordButton = await findByTestId('forgotPasswordButton')
|
|
expect(forgotPasswordButton).toBeTruthy()
|
|
|
|
fireEvent.press(forgotPasswordButton)
|
|
const forgotPasswordView = await findByTestId('forgotPasswordView')
|
|
expect(forgotPasswordView).toBeTruthy()
|
|
|
|
const forgotPasswordEmail = await findByTestId('forgotPasswordEmail')
|
|
expect(forgotPasswordEmail).toBeTruthy()
|
|
fireEvent.changeText(forgotPasswordEmail, 'test@email.com')
|
|
|
|
const newPasswordButton = await findByTestId('newPasswordButton')
|
|
expect(newPasswordButton).toBeTruthy()
|
|
fireEvent.press(newPasswordButton)
|
|
|
|
expect(requestPasswordResetMock).toHaveBeenCalled()
|
|
|
|
const newPasswordView = await findByTestId('newPasswordView')
|
|
expect(newPasswordView).toBeTruthy()
|
|
|
|
const newPasswordInput = await findByTestId('newPasswordInput')
|
|
expect(newPasswordInput).toBeTruthy()
|
|
const resetCodeInput = await findByTestId('resetCodeInput')
|
|
expect(resetCodeInput).toBeTruthy()
|
|
|
|
fireEvent.changeText(newPasswordInput, 'test pass')
|
|
fireEvent.changeText(resetCodeInput, 'test reset code')
|
|
|
|
const setNewPasswordButton = await findByTestId('setNewPasswordButton')
|
|
expect(setNewPasswordButton).toBeTruthy()
|
|
|
|
fireEvent.press(setNewPasswordButton)
|
|
|
|
expect(resetPasswordMock).toHaveBeenCalled()
|
|
})
|
|
|
|
it('renders forgot password form', async () => {
|
|
const {findByTestId} = render(<Signin {...mockedProps} />)
|
|
|
|
const forgotPasswordButton = await findByTestId('forgotPasswordButton')
|
|
expect(forgotPasswordButton).toBeTruthy()
|
|
|
|
fireEvent.press(forgotPasswordButton)
|
|
const forgotPasswordSelectServiceButton = await findByTestId(
|
|
'forgotPasswordSelectServiceButton',
|
|
)
|
|
expect(forgotPasswordSelectServiceButton).toBeTruthy()
|
|
|
|
fireEvent.press(forgotPasswordSelectServiceButton)
|
|
|
|
expect(mockedShellStore.openModal).toHaveBeenCalled()
|
|
})
|
|
})
|