1818 */
1919
2020import React from 'react' ;
21- import { render , mount } from 'enzyme' ;
21+ import { wait } from '@testing-library/dom' ;
22+ import { render , cleanup } from '@testing-library/react/pure' ;
2223import { MarkdownVisWrapper } from './markdown_vis_controller' ;
2324
25+ afterEach ( cleanup ) ;
26+
2427describe ( 'markdown vis controller' , ( ) => {
25- it ( 'should set html from markdown params' , ( ) => {
28+ it ( 'should set html from markdown params' , async ( ) => {
2629 const vis = {
2730 params : {
2831 openLinksInNewTab : false ,
@@ -32,13 +35,22 @@ describe('markdown vis controller', () => {
3235 } ,
3336 } ;
3437
35- const wrapper = render (
38+ const { getByTestId , getByText } = render (
3639 < MarkdownVisWrapper visParams = { vis . params } renderComplete = { jest . fn ( ) } fireEvent = { jest . fn ( ) } />
3740 ) ;
38- expect ( wrapper . find ( 'a' ) . text ( ) ) . toBe ( 'markdown' ) ;
41+
42+ await wait ( ( ) => getByTestId ( 'markdownBody' ) ) ;
43+
44+ expect ( getByText ( 'markdown' ) ) . toMatchInlineSnapshot ( `
45+ <a
46+ href="http://daringfireball.net/projects/markdown"
47+ >
48+ markdown
49+ </a>
50+ ` ) ;
3951 } ) ;
4052
41- it ( 'should not render the html' , ( ) => {
53+ it ( 'should not render the html' , async ( ) => {
4254 const vis = {
4355 params : {
4456 openLinksInNewTab : false ,
@@ -47,13 +59,20 @@ describe('markdown vis controller', () => {
4759 } ,
4860 } ;
4961
50- const wrapper = render (
62+ const { getByTestId , getByText } = render (
5163 < MarkdownVisWrapper visParams = { vis . params } renderComplete = { jest . fn ( ) } fireEvent = { jest . fn ( ) } />
5264 ) ;
53- expect ( wrapper . text ( ) ) . toBe ( 'Testing <a>html</a>\n' ) ;
65+
66+ await wait ( ( ) => getByTestId ( 'markdownBody' ) ) ;
67+
68+ expect ( getByText ( / t e s t i n g / i) ) . toMatchInlineSnapshot ( `
69+ <p>
70+ Testing <a>html</a>
71+ </p>
72+ ` ) ;
5473 } ) ;
5574
56- it ( 'should update the HTML when render again with changed params' , ( ) => {
75+ it ( 'should update the HTML when render again with changed params' , async ( ) => {
5776 const vis = {
5877 params : {
5978 openLinksInNewTab : false ,
@@ -62,13 +81,20 @@ describe('markdown vis controller', () => {
6281 } ,
6382 } ;
6483
65- const wrapper = mount (
84+ const { getByTestId , getByText , rerender } = render (
6685 < MarkdownVisWrapper visParams = { vis . params } renderComplete = { jest . fn ( ) } fireEvent = { jest . fn ( ) } />
6786 ) ;
68- expect ( wrapper . text ( ) . trim ( ) ) . toBe ( 'Initial' ) ;
87+
88+ await wait ( ( ) => getByTestId ( 'markdownBody' ) ) ;
89+
90+ expect ( getByText ( / i n i t i a l / i) ) . toBeInTheDocument ( ) ;
91+
6992 vis . params . markdown = 'Updated' ;
70- wrapper . setProps ( { vis } ) ;
71- expect ( wrapper . text ( ) . trim ( ) ) . toBe ( 'Updated' ) ;
93+ rerender (
94+ < MarkdownVisWrapper visParams = { vis . params } renderComplete = { jest . fn ( ) } fireEvent = { jest . fn ( ) } />
95+ ) ;
96+
97+ expect ( getByText ( / U p d a t e d / i) ) . toBeInTheDocument ( ) ;
7298 } ) ;
7399
74100 describe ( 'renderComplete' , ( ) => {
@@ -86,56 +112,71 @@ describe('markdown vis controller', () => {
86112 renderComplete . mockClear ( ) ;
87113 } ) ;
88114
89- it ( 'should be called on initial rendering' , ( ) => {
90- mount (
115+ it ( 'should be called on initial rendering' , async ( ) => {
116+ const { getByTestId } = render (
91117 < MarkdownVisWrapper
92118 visParams = { vis . params }
93119 renderComplete = { renderComplete }
94120 fireEvent = { jest . fn ( ) }
95121 />
96122 ) ;
97- expect ( renderComplete . mock . calls . length ) . toBe ( 1 ) ;
123+
124+ await wait ( ( ) => getByTestId ( 'markdownBody' ) ) ;
125+
126+ expect ( renderComplete ) . toHaveBeenCalledTimes ( 1 ) ;
98127 } ) ;
99128
100- it ( 'should be called on successive render when params change' , ( ) => {
101- mount (
129+ it ( 'should be called on successive render when params change' , async ( ) => {
130+ const { getByTestId , rerender } = render (
102131 < MarkdownVisWrapper
103132 visParams = { vis . params }
104133 renderComplete = { renderComplete }
105134 fireEvent = { jest . fn ( ) }
106135 />
107136 ) ;
108- expect ( renderComplete . mock . calls . length ) . toBe ( 1 ) ;
137+
138+ await wait ( ( ) => getByTestId ( 'markdownBody' ) ) ;
139+
140+ expect ( renderComplete ) . toHaveBeenCalledTimes ( 1 ) ;
141+
109142 renderComplete . mockClear ( ) ;
110143 vis . params . markdown = 'changed' ;
111- mount (
144+
145+ rerender (
112146 < MarkdownVisWrapper
113147 visParams = { vis . params }
114148 renderComplete = { renderComplete }
115149 fireEvent = { jest . fn ( ) }
116150 />
117151 ) ;
118- expect ( renderComplete . mock . calls . length ) . toBe ( 1 ) ;
152+
153+ expect ( renderComplete ) . toHaveBeenCalledTimes ( 1 ) ;
119154 } ) ;
120155
121- it ( 'should be called on successive render even without data change' , ( ) => {
122- mount (
156+ it ( 'should be called on successive render even without data change' , async ( ) => {
157+ const { getByTestId , rerender } = render (
123158 < MarkdownVisWrapper
124159 visParams = { vis . params }
125160 renderComplete = { renderComplete }
126161 fireEvent = { jest . fn ( ) }
127162 />
128163 ) ;
129- expect ( renderComplete . mock . calls . length ) . toBe ( 1 ) ;
164+
165+ await wait ( ( ) => getByTestId ( 'markdownBody' ) ) ;
166+
167+ expect ( renderComplete ) . toHaveBeenCalledTimes ( 1 ) ;
168+
130169 renderComplete . mockClear ( ) ;
131- mount (
170+
171+ rerender (
132172 < MarkdownVisWrapper
133173 visParams = { vis . params }
134174 renderComplete = { renderComplete }
135175 fireEvent = { jest . fn ( ) }
136176 />
137177 ) ;
138- expect ( renderComplete . mock . calls . length ) . toBe ( 1 ) ;
178+
179+ expect ( renderComplete ) . toHaveBeenCalledTimes ( 1 ) ;
139180 } ) ;
140181 } ) ;
141182} ) ;
0 commit comments