import React from "react"; import RN from "react-native"; import { renderWithProviders } from "@applicaster/zapp-react-native-utils/testUtils"; const mockUseIsRTL = jest.fn(() => true); const mockGetIsRTL = jest.fn(() => true); const mockUseLocalizedStrings = jest.fn(() => ({})); const mockGetUILanguage = jest.fn(() => "he-HE"); jest.mock("@applicaster/zapp-react-native-utils/localizationUtils", () => ({ useIsRTL: mockUseIsRTL, getIsRTL: mockGetIsRTL, useLocalizedStrings: mockUseLocalizedStrings, getUILanguage: mockGetUILanguage, })); const CustomText = require("../Text").default; const defaultProps = { entry: {}, style: {}, transformText: "default", }; const getRenderedText = (label: string, storeConfig: any) => { const props = { ...{ ...defaultProps, label } }; const { UNSAFE_getByType } = renderWithProviders( , storeConfig ); return UNSAFE_getByType(RN.Text).props.children; }; describe("RTL app: Hebrew text contains english word", () => { const textWithFirstEnglishWord = "Word השיר של נועה נועה קירל באירוויזיון"; const textWithNotFirstEnglishWord = "השיר של נועה נועה קירל באירוויזיון Word"; const textWithoutEnglishWord = "השיר של נועה נועה קירל באירוויזיון"; const storeConfig = { remoteConfigurations: { localizations: { he: {} } }, appData: { languageCode: "he", countryCode: "IL", }, }; it("Hebrew text contains first english word", () => { const renderedText = getRenderedText(textWithFirstEnglishWord, storeConfig); const desiredText = "\u200fWord\u202c השיר של נועה נועה קירל באירוויזיון"; expect(renderedText).toEqual(desiredText); }); it("Hebrew text contains not first english word", () => { const renderedText = getRenderedText( textWithNotFirstEnglishWord, storeConfig ); expect(renderedText).toEqual(textWithNotFirstEnglishWord); }); it("Hebrew text doesn't contain english word", () => { const renderedText = getRenderedText(textWithoutEnglishWord, storeConfig); expect(renderedText).toEqual(textWithoutEnglishWord); }); }); describe("LTR app: English text", () => { beforeAll(() => { mockUseIsRTL.mockReturnValue(false); mockGetIsRTL.mockReturnValue(false); mockGetUILanguage.mockReturnValue("en-US"); }); const englishText = "Test sentence"; const storeConfig = { remoteConfigurations: { localizations: { en: {} } }, appData: { languageCode: "en", countryCode: "US", }, }; it("English text", () => { const renderedText = getRenderedText(englishText, storeConfig); expect(renderedText).toEqual(englishText); }); });