Esri / arcgis-experience-builder-sdk-resources

ArcGIS Experience Builder samples
https://developers.arcgis.com/experience-builder/
Apache License 2.0
125 stars 115 forks source link

ArcGIS Experience Builder widget with Link component fails to run Jest tests #183

Closed ArchismanRoy closed 5 months ago

ArchismanRoy commented 5 months ago

Cannot add the Link component from the jimu-ui package and then be able to write tests.

For example, if this is added to the simple-widget.test.tsx file:

render( <Link onClick={function dummyfunc() {}} title="custom title" to="?a=1"> Link to Click </Link> );

Getting the below error while running the test:

Exception has occurred: TypeError: Cannot read properties of null (reading 'dialogs') at C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\dist\jimu-ui\index.js:3186:1694 at C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\dist\jimu-core\index.js:46:168640 at e (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\dist\jimu-core\index.js:46:132667) at C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\dist\jimu-core\index.js:46:132872 at mountSyncExternalStore (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:16799:20) at Object.useSyncExternalStore (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:17727:14) at useSyncExternalStore (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react\cjs\react.development.js:1676:21) at t.useSyncExternalStoreWithSelector (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\dist\jimu-core\index.js:46:132942) at Module.<anonymous> (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\dist\jimu-core\index.js:46:168666) at C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\dist\jimu-ui\index.js:3186:1666 at renderWithHooks (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:16305:18) at updateForwardRef (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:19226:20) at beginWork (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:21636:16) at HTMLUnknownElement.callCallback (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:4164:14) at HTMLUnknownElement.callTheUserObjectsOperation (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\jsdom\lib\jsdom\living\generated\EventListener.js:26:30) at innerInvokeEventListeners (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\jsdom\lib\jsdom\living\events\EventTarget-impl.js:350:25) at invokeEventListeners (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\jsdom\lib\jsdom\living\events\EventTarget-impl.js:286:3) at HTMLUnknownElementImpl._dispatch (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\jsdom\lib\jsdom\living\events\EventTarget-impl.js:233:9) at HTMLUnknownElementImpl.dispatchEvent (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\jsdom\lib\jsdom\living\events\EventTarget-impl.js:104:17) at HTMLUnknownElement.dispatchEvent (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\jsdom\lib\jsdom\living\generated\EventTarget.js:241:34) at Object.invokeGuardedCallbackDev (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:4213:16) at invokeGuardedCallback (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:4277:31) at beginWork$1 (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:27451:7) at performUnitOfWork (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:26560:12) at workLoopSync (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:26466:5) at renderRootSync (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:26434:7) at performConcurrentWorkOnRoot (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react-dom\cjs\react-dom.development.js:25738:74) at flushActQueue (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react\cjs\react.development.js:2667:24) at recursivelyFlushAsyncActWork (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react\cjs\react.development.js:2633:9) at Immediate._onImmediate (C:\ESRI\arcgis-experience-builder\arcgis-experience-builder\client\node_modules\react\cjs\react.development.js:2641:13) at processImmediate (node:internal/timers:478:21) at process.callbackTrampoline (node:internal/async_hooks:130:17)

qlqllu commented 5 months ago

Hi @ArchismanRoy This is caused by the Link component requires some app config properties to be there. We'll create a default app config in the state to fix this issue in future releases. Thanks for your feedback!

ming8525 commented 5 months ago

Hi @ArchismanRoy This is caused by the Link component requires some app config properties to be there. We'll create a default app config in the state to fix this issue in future releases. Thanks for your feedback!

By the way, you can temporarily solve this problem by calling "initStore" (import { initStore } from 'jimu-for-test') before testing.

ArchismanRoy commented 5 months ago

Thank you for your quick response, the issue got resolved with calling initStore();