mirror of
https://github.com/inaturalist/iNaturalistReactNative.git
synced 2026-01-01 18:38:42 -05:00
* Don't require TS extensions in imports * Resolve all import extension errors * Remove file extension from import paths used in mocks * Remove .d of type definition file paths * Remove .d of type definition file and import as type --------- Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
53 lines
1.8 KiB
JavaScript
53 lines
1.8 KiB
JavaScript
import { fireEvent, screen } from "@testing-library/react-native";
|
|
import LanguageSetting from "components/Settings/LanguageSetting";
|
|
import i18n from "i18next";
|
|
import inatjs from "inaturalistjs";
|
|
import React from "react";
|
|
import useStore from "stores/useStore";
|
|
import { makeResponse } from "tests/factory";
|
|
import { renderComponent } from "tests/helpers/render";
|
|
|
|
const initialStoreState = useStore.getState( );
|
|
|
|
beforeAll( async ( ) => {
|
|
useStore.setState( initialStoreState, true );
|
|
// userEvent recommends fake timers
|
|
jest.useFakeTimers( );
|
|
} );
|
|
|
|
beforeEach( ( ) => {
|
|
// reset the picker for each test
|
|
i18n.changeLanguage( "en" );
|
|
} );
|
|
|
|
describe( "LanguageSetting", ( ) => {
|
|
it( "should display and allow user to change locales from web list", async ( ) => {
|
|
inatjs.translations.locales.mockResolvedValue( makeResponse( [{
|
|
language_in_locale: "Slovenský",
|
|
locale: "sk"
|
|
}, {
|
|
language_in_locale: "Español (Colombia)",
|
|
locale: "es-CO"
|
|
}] ) );
|
|
|
|
renderComponent( <LanguageSetting onChange={jest.fn( )} /> );
|
|
|
|
expect( i18n.language ).toEqual( "en" );
|
|
const changeLanguageButton = await screen.findByText( /CHANGE APP LANGUAGE/ );
|
|
expect( changeLanguageButton ).toBeVisible( );
|
|
fireEvent.press( changeLanguageButton );
|
|
|
|
const picker = await screen.findByTestId( "ReactNativePicker" );
|
|
expect( picker ).toBeVisible( );
|
|
|
|
expect( picker.props.selectedIndex ).toStrictEqual( 0 );
|
|
// trigger a change to the UI, selecting the second element
|
|
fireEvent( picker, "onValueChange", "es-CO" );
|
|
expect( picker.props.selectedIndex ).toStrictEqual( 1 );
|
|
const confirmText = await screen.findByText( "CONFIRM" );
|
|
expect( confirmText ).toBeVisible( );
|
|
fireEvent.press( confirmText );
|
|
expect( i18n.language ).toEqual( "es-CO" );
|
|
} );
|
|
} );
|