155058f92SEvan Baconimport { 255058f92SEvan Bacon A, 355058f92SEvan Bacon Article, 455058f92SEvan Bacon B, 555058f92SEvan Bacon BlockQuote, 655058f92SEvan Bacon BR, 755058f92SEvan Bacon Caption, 855058f92SEvan Bacon Code, 955058f92SEvan Bacon Del, 1055058f92SEvan Bacon EM, 1155058f92SEvan Bacon Footer, 1255058f92SEvan Bacon H1, 1355058f92SEvan Bacon H2, 1455058f92SEvan Bacon H3, 1555058f92SEvan Bacon H4, 1655058f92SEvan Bacon H5, 1755058f92SEvan Bacon H6, 1855058f92SEvan Bacon Header, 1955058f92SEvan Bacon HR, 2055058f92SEvan Bacon I, 2155058f92SEvan Bacon LI, 2255058f92SEvan Bacon Main, 2355058f92SEvan Bacon Mark, 2455058f92SEvan Bacon Nav, 2555058f92SEvan Bacon P, 2655058f92SEvan Bacon Pre, 2755058f92SEvan Bacon Q, 2855058f92SEvan Bacon S, 2955058f92SEvan Bacon Section, 3055058f92SEvan Bacon Strong, 3155058f92SEvan Bacon Table, 3255058f92SEvan Bacon TBody, 3355058f92SEvan Bacon TD, 3455058f92SEvan Bacon TFoot, 3555058f92SEvan Bacon TH, 3655058f92SEvan Bacon THead, 3755058f92SEvan Bacon Time, 3855058f92SEvan Bacon TR, 3955058f92SEvan Bacon UL, 4055058f92SEvan Bacon} from '@expo/html-elements'; 4155058f92SEvan Baconimport React from 'react'; 42*999ead72SEvan Baconimport { View, Text } from 'react-native'; 4355058f92SEvan Bacon 4455058f92SEvan Baconimport { mountAndWaitFor as originalMountAndWaitFor } from './helpers'; 4555058f92SEvan Bacon 4655058f92SEvan Baconexport const name = 'html-elements'; 4755058f92SEvan Bacon 4855058f92SEvan Baconconst textElements = { 4955058f92SEvan Bacon H1, 5055058f92SEvan Bacon H2, 5155058f92SEvan Bacon H3, 5255058f92SEvan Bacon H4, 5355058f92SEvan Bacon H5, 5455058f92SEvan Bacon H6, 5555058f92SEvan Bacon A, 5655058f92SEvan Bacon P, 5755058f92SEvan Bacon B, 5855058f92SEvan Bacon S, 5955058f92SEvan Bacon Pre, 6055058f92SEvan Bacon Del, 6155058f92SEvan Bacon Strong, 6255058f92SEvan Bacon I, 6355058f92SEvan Bacon EM, 6455058f92SEvan Bacon Mark, 6555058f92SEvan Bacon Code, 6655058f92SEvan Bacon LI, 6755058f92SEvan Bacon Q, 6855058f92SEvan Bacon Time, 69fc1510b0SEric Samelson BR, 7055058f92SEvan Bacon}; 7155058f92SEvan Bacon 7255058f92SEvan Baconconst viewElements = { 7355058f92SEvan Bacon Article, 7455058f92SEvan Bacon Header, 7555058f92SEvan Bacon Main, 7655058f92SEvan Bacon Section, 7755058f92SEvan Bacon Nav, 7855058f92SEvan Bacon Footer, 7955058f92SEvan Bacon UL, 8055058f92SEvan Bacon LI, 8155058f92SEvan Bacon BlockQuote, 8255058f92SEvan Bacon Pre, 8355058f92SEvan Bacon}; 8455058f92SEvan Bacon 8555058f92SEvan Baconexport async function test( 8655058f92SEvan Bacon { it, describe, beforeAll, jasmine, afterAll, expect, afterEach, beforeEach }, 8755058f92SEvan Bacon { setPortalChild, cleanupPortal } 8855058f92SEvan Bacon) { 8955058f92SEvan Bacon afterEach(async () => { 9055058f92SEvan Bacon await cleanupPortal(); 9155058f92SEvan Bacon }); 9255058f92SEvan Bacon 9355058f92SEvan Bacon const mountAndWaitFor = (child, propName = 'onLayout') => 9455058f92SEvan Bacon originalMountAndWaitFor(child, propName, setPortalChild); 9555058f92SEvan Bacon 9655058f92SEvan Bacon describe(name, () => { 9755058f92SEvan Bacon describe('Text', () => { 9855058f92SEvan Bacon for (const elementName of Object.keys(textElements)) { 9955058f92SEvan Bacon it(`renders text element ${elementName}`, async () => { 10055058f92SEvan Bacon const Element = textElements[elementName]; 10155058f92SEvan Bacon await mountAndWaitFor(<Element>Test contents</Element>); 10255058f92SEvan Bacon }); 10355058f92SEvan Bacon } 10455058f92SEvan Bacon }); 10555058f92SEvan Bacon describe('Views', () => { 10655058f92SEvan Bacon for (const elementName of Object.keys(viewElements)) { 10755058f92SEvan Bacon it(`renders view elements ${elementName}`, async () => { 10855058f92SEvan Bacon const Element = viewElements[elementName]; 10955058f92SEvan Bacon await mountAndWaitFor( 11055058f92SEvan Bacon <Element> 111*999ead72SEvan Bacon <Text>Hello</Text> 11255058f92SEvan Bacon </Element> 11355058f92SEvan Bacon ); 11455058f92SEvan Bacon }); 11555058f92SEvan Bacon } 11655058f92SEvan Bacon }); 117*999ead72SEvan Bacon 118*999ead72SEvan Bacon it(`renders a horizontal rule`, async () => { 119*999ead72SEvan Bacon await mountAndWaitFor( 120*999ead72SEvan Bacon <View> 121*999ead72SEvan Bacon <HR /> 122*999ead72SEvan Bacon </View> 123*999ead72SEvan Bacon ); 124*999ead72SEvan Bacon }); 125*999ead72SEvan Bacon it(`renders a table`, async () => { 126*999ead72SEvan Bacon await mountAndWaitFor( 127*999ead72SEvan Bacon <Table> 128*999ead72SEvan Bacon <Caption>Caption</Caption> 129*999ead72SEvan Bacon <THead> 130*999ead72SEvan Bacon <TR> 131*999ead72SEvan Bacon <TH colSpan={2}>The table header</TH> 132*999ead72SEvan Bacon </TR> 133*999ead72SEvan Bacon </THead> 134*999ead72SEvan Bacon <TBody> 135*999ead72SEvan Bacon <TR> 136*999ead72SEvan Bacon <TD>The table body</TD> 137*999ead72SEvan Bacon <TD>with two columns</TD> 138*999ead72SEvan Bacon </TR> 139*999ead72SEvan Bacon <TR> 140*999ead72SEvan Bacon <TD>Row two</TD> 141*999ead72SEvan Bacon <TD>Column two</TD> 142*999ead72SEvan Bacon </TR> 143*999ead72SEvan Bacon </TBody> 144*999ead72SEvan Bacon <TFoot> 145*999ead72SEvan Bacon <TR> 146*999ead72SEvan Bacon <TH colSpan={2}>The table footer</TH> 147*999ead72SEvan Bacon </TR> 148*999ead72SEvan Bacon </TFoot> 149*999ead72SEvan Bacon </Table> 150*999ead72SEvan Bacon ); 151*999ead72SEvan Bacon }); 152*999ead72SEvan Bacon it(`renders a table`, async () => { 153*999ead72SEvan Bacon await mountAndWaitFor( 154*999ead72SEvan Bacon <Table> 155*999ead72SEvan Bacon <Caption>Caption</Caption> 156*999ead72SEvan Bacon <THead> 157*999ead72SEvan Bacon <TR> 158*999ead72SEvan Bacon <TH colSpan={2}>The table header</TH> 159*999ead72SEvan Bacon </TR> 160*999ead72SEvan Bacon </THead> 161*999ead72SEvan Bacon <TBody> 162*999ead72SEvan Bacon <TR> 163*999ead72SEvan Bacon <TD>The table body</TD> 164*999ead72SEvan Bacon <TD>with two columns</TD> 165*999ead72SEvan Bacon </TR> 166*999ead72SEvan Bacon <TR> 167*999ead72SEvan Bacon <TD>Row two</TD> 168*999ead72SEvan Bacon <TD>Column two</TD> 169*999ead72SEvan Bacon </TR> 170*999ead72SEvan Bacon </TBody> 171*999ead72SEvan Bacon <TFoot> 172*999ead72SEvan Bacon <TR> 173*999ead72SEvan Bacon <TH colSpan={2}>The table footer</TH> 174*999ead72SEvan Bacon </TR> 175*999ead72SEvan Bacon </TFoot> 176*999ead72SEvan Bacon </Table> 177*999ead72SEvan Bacon ); 178*999ead72SEvan Bacon }); 17955058f92SEvan Bacon }); 18055058f92SEvan Bacon} 181