import React from 'react'; import { render, RenderResult } from '@testing-library/react'; import Code from '../Code/Code'; import { CodeProps } from '../Code/Code.types'; import { Panel } from '../Panel'; import { PanelProps } from '../Panel/Panel.types'; import { Language } from '../types'; import { getTestUtils } from './getTestUtils'; import type { TestUtilsReturnType } from './getTestUtils.types'; const codeSnippet = ` import datetime from './'; const myVar = 42; var myObj = { someProp: ['arr', 'ay'], regex: /([A-Z])w+/ } export default class myClass { constructor(){ // access properties this.myProp = false } } function greeting(entity) { return \`Hello, \${entity}! Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper.\`; } console.log(greeting('World'));`; export const languageOptions = [ { displayName: 'JavaScript', language: Language.JavaScript, }, { displayName: 'Python', language: Language.Python, }, { displayName: 'macOS', language: Language.Shell, }, ]; export const renderCode = ( props: Partial = {}, ): RenderResult & TestUtilsReturnType => { const renderResults = render( {codeSnippet} , ); const testUtils = getTestUtils(); return { ...renderResults, ...testUtils, }; }; export const renderCodeWithLanguageSwitcher = ({ props = {}, isLoading = false, }: { props?: Partial; isLoading?: boolean; }): RenderResult & TestUtilsReturnType => { const renderResults = render( {}} {...props} languageOptions={languageOptions} /> } > {codeSnippet} , ); const testUtils = getTestUtils(); return { ...renderResults, ...testUtils, }; }; export const renderMultipleCodes = (): RenderResult => { const renderResults = render( <> {}} languageOptions={languageOptions} />} > {codeSnippet} {}} languageOptions={languageOptions} />} > {codeSnippet} , ); return { ...renderResults, }; };