@@ -88,7 +88,7 @@ describe('Markdown', () => {
8888 expect ( getByText ( 'Hyp' ) . tagName ) . toBe ( 'A' )
8989 } )
9090
91- it ( 'renders multiple links in one line' , ( ) => {
91+ it ( 'multiple links in one line' , ( ) => {
9292 const text = 'Check out [Hyp](https://hyperparam.app) on [GitHub](https://github.com/hyparam).'
9393 const { getAllByRole, getByText } = render ( < Markdown text = { text } /> )
9494 expect ( getByText ( 'Hyp' ) ) . toBeDefined ( )
@@ -103,18 +103,27 @@ describe('Markdown', () => {
103103 const { getByText } = render ( < Markdown text = { text } /> )
104104 expect ( getByText ( 'This is a blockquote.' ) ) . toBeDefined ( )
105105 } )
106+ } )
106107
108+ describe ( 'Markdown horizontal rules' , ( ) => {
107109 it ( 'renders a horizontal rule' , ( ) => {
108110 const text = 'First paragraph\n---\nSecond paragraph'
109- const { container } = render ( < Markdown text = { text } /> )
111+ const { container, getByText , queryByRole } = render ( < Markdown text = { text } /> )
110112
111- const paragraphs = container . querySelectorAll ( 'p' )
112- expect ( paragraphs . length ) . toBe ( 2 )
113- expect ( paragraphs [ 0 ] ?. textContent ) . toBe ( 'First paragraph' )
114- expect ( paragraphs [ 1 ] ?. textContent ) . toBe ( 'Second paragraph' )
113+ expect ( container . querySelector ( 'hr' ) ) . toBeDefined ( )
114+ expect ( queryByRole ( 'separator' ) ) . toBeDefined ( )
115+ expect ( getByText ( 'First paragraph' ) ) . toBeDefined ( )
116+ expect ( getByText ( 'Second paragraph' ) ) . toBeDefined ( )
117+ } )
115118
116- const hr = container . querySelector ( 'hr' )
117- expect ( hr ) . toBeDefined ( )
119+ it ( 'horizontal rule must be entire line' , ( ) => {
120+ const text = 'First paragraph\n\n--- dashes\n\nSecond paragraph'
121+ const { container, getByText, queryByRole } = render ( < Markdown text = { text } /> )
122+ expect ( container . querySelector ( 'hr' ) ) . toBeNull ( )
123+ expect ( queryByRole ( 'separator' ) ) . toBeNull ( )
124+ expect ( getByText ( 'First paragraph' ) ) . toBeDefined ( )
125+ expect ( getByText ( '--- dashes' ) ) . toBeDefined ( )
126+ expect ( getByText ( 'Second paragraph' ) ) . toBeDefined ( )
118127 } )
119128} )
120129
@@ -453,4 +462,20 @@ describe('Markdown with tables', () => {
453462 expect ( queryByRole ( 'table' ) ) . toBeNull ( ) // no table
454463 expect ( getByText ( 'not | a | table' ) ) . toBeDefined ( )
455464 } )
465+
466+ it ( 'single column table' , ( ) => {
467+ const text = '| Only Header |\n|-------------|\n| Single cell |'
468+ const { getByText, getByRole } = render ( < Markdown text = { text } /> )
469+ expect ( getByRole ( 'table' ) ) . toBeDefined ( )
470+ expect ( getByText ( 'Only Header' ) ) . toBeDefined ( )
471+ expect ( getByText ( 'Single cell' ) ) . toBeDefined ( )
472+ } )
473+
474+ it ( 'table with no leading or trailing pipes' , ( ) => {
475+ const text = 'Header1 | Header2\n------- | -------\nData1 | Data2'
476+ const { getByText, getByRole } = render ( < Markdown text = { text } /> )
477+ expect ( getByRole ( 'table' ) ) . toBeDefined ( )
478+ expect ( getByText ( 'Header1' ) ) . toBeDefined ( )
479+ expect ( getByText ( 'Data2' ) ) . toBeDefined ( )
480+ } )
456481} )
0 commit comments