diff --git a/CHANGELOG.md b/CHANGELOG.md index 2fd7af31e6..1282474ae2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +## [4.11.7](https://github.com/ionic-team/ionic/compare/v4.11.6...v4.11.7) (2019-12-12) + + +### Bug Fixes + +* **react:** fire lifecycle events on initial render, fixes [#20071](https://github.com/ionic-team/ionic/issues/20071) ([9ea75eb](https://github.com/ionic-team/ionic/commit/9ea75ebec7b1367fc0e319fe61c1f42516357e10)) + + + ## [4.11.6](https://github.com/ionic-team/ionic/compare/v4.11.5...v4.11.6) (2019-12-11) diff --git a/angular/package.json b/angular/package.json index b25c1b09eb..f65aa3eee5 100644 --- a/angular/package.json +++ b/angular/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/angular", - "version": "4.11.6", + "version": "4.11.7", "description": "Angular specific wrappers for @ionic/core", "keywords": [ "ionic", @@ -49,7 +49,7 @@ "css/" ], "dependencies": { - "@ionic/core": "4.11.6", + "@ionic/core": "4.11.7", "tslib": "^1.9.3" }, "peerDependencies": { diff --git a/core/package.json b/core/package.json index 33d48a6d9f..52f40eaba0 100644 --- a/core/package.json +++ b/core/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/core", - "version": "4.11.6", + "version": "4.11.7", "description": "Base components for Ionic", "keywords": [ "ionic", diff --git a/docs/package.json b/docs/package.json index 944a495068..7814a72d58 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/docs", - "version": "4.11.6", + "version": "4.11.7", "description": "Pre-packaged API documentation for the Ionic docs.", "main": "core.json", "types": "core.d.ts", diff --git a/packages/react-router/empty-module.js b/packages/react-router/empty-module.js new file mode 100644 index 0000000000..f06d152fff --- /dev/null +++ b/packages/react-router/empty-module.js @@ -0,0 +1 @@ +module.exports = '' \ No newline at end of file diff --git a/packages/react-router/jest.setup.js b/packages/react-router/jest.setup.js deleted file mode 100644 index bda1cbdb37..0000000000 --- a/packages/react-router/jest.setup.js +++ /dev/null @@ -1,7 +0,0 @@ -window.matchMedia = window.matchMedia || function() { - return { - matches : false, - addListener : function() {}, - removeListener: function() {} - }; -}; diff --git a/packages/react-router/package.json b/packages/react-router/package.json index 130ff72404..9bebe95819 100644 --- a/packages/react-router/package.json +++ b/packages/react-router/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react-router", - "version": "4.11.6", + "version": "4.11.7", "description": "React Router wrapper for @ionic/react", "keywords": [ "ionic", @@ -39,30 +39,32 @@ "tslib": "*" }, "peerDependencies": { - "@ionic/core": "4.11.6", - "@ionic/react": "4.11.6", + "@ionic/core": "4.11.7", + "@ionic/react": "4.11.7", "react": "^16.8.6", "react-dom": "^16.8.6", "react-router": "^5.0.1", "react-router-dom": "^5.0.1" }, "devDependencies": { - "@ionic/core": "4.11.6", - "@ionic/react": "4.11.6", - "@types/jest": "^23.3.9", + "@ionic/core": "4.11.7", + "@ionic/react": "4.11.7", + "@testing-library/jest-dom": "^4.2.4", + "@testing-library/react": "^9.3.2", + "@testing-library/user-event": "^7.1.2", + "@types/jest": "^24.0.23", "@types/node": "^12.12.14", "@types/react": "^16.9.2", "@types/react-dom": "^16.9.0", "@types/react-router": "^5.0.3", "@types/react-router-dom": "^4.3.1", - "jest": "^24.8.0", - "jest-dom": "^3.4.0", + "jest": "^24.9.0", + "jest-dom": "^4.0.0", "np": "^5.0.1", "react": "^16.9.0", "react-dom": "^16.9.0", "react-router": "^5.0.1", "react-router-dom": "^5.0.1", - "react-testing-library": "^7.0.0", "rollup": "^1.18.0", "rollup-plugin-node-resolve": "^5.2.0", "rollup-plugin-sourcemaps": "^0.4.2", @@ -75,15 +77,23 @@ "jest": { "preset": "ts-jest", "setupFilesAfterEnv": [ - "/jest.setup.js" + "/setupTests.ts" ], "testPathIgnorePatterns": [ "node_modules", "dist-transpiled", "dist" ], + "globals": { + "ts-jest": { + "diagnostics": false + } + }, "modulePaths": [ "" - ] + ], + "moduleNameMapper": { + "\\.(css|jpg|png|svg)$": "/empty-module.js" + } } } diff --git a/packages/react-router/setupTests.ts b/packages/react-router/setupTests.ts new file mode 100644 index 0000000000..e799271140 --- /dev/null +++ b/packages/react-router/setupTests.ts @@ -0,0 +1,9 @@ +import '@testing-library/jest-dom/extend-expect'; + +window.matchMedia = window.matchMedia || function() { + return { + matches: false, + addListener() { }, + removeListener() { } + }; +} as any; diff --git a/packages/react-router/src/ReactRouter/Router.tsx b/packages/react-router/src/ReactRouter/Router.tsx index 78ce6ab44b..164165a389 100644 --- a/packages/react-router/src/ReactRouter/Router.tsx +++ b/packages/react-router/src/ReactRouter/Router.tsx @@ -396,6 +396,8 @@ class RouteManager extends React.Component { + + + describe('on first page render', () => { + + let IonTestApp: React.ComponentType; + + beforeEach(() => { + IonTestApp = ({ Page }) => { + return ( + + + + + + + + ); + }; + }); + + it('should be visible', () => { + + const MyPage = () => { + return ( + +
hello
+
+ ); + }; + + const { container } = render(); + const page = container.getElementsByClassName('ion-page')[0]; + expect(page).not.toHaveClass('ion-page-invisible'); + expect(page).toHaveStyle('z-index: 101') + + }); + + it('should fire initial lifecycle events', () => { + const ionViewWillEnterListener = jest.fn(); + const ionViewDidEnterListener = jest.fn(); + + const MyPage = () => { + const ref = useRef(); + + useEffect(() => { + ref.current.addEventListener('ionViewWillEnter', ionViewWillEnterListener); + ref.current.addEventListener('ionViewDidEnter', ionViewDidEnterListener); + }, []); + + return ( + +
hello
+
+ ); + }; + + + render(); + expect(ionViewWillEnterListener).toHaveBeenCalledTimes(1); + expect(ionViewDidEnterListener).toHaveBeenCalledTimes(1); + + }); + + }); + + +});; \ No newline at end of file diff --git a/packages/react/package.json b/packages/react/package.json index 27011ff9e5..22a5c9e823 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/react", - "version": "4.11.6", + "version": "4.11.7", "description": "React specific wrapper for @ionic/core", "keywords": [ "ionic", @@ -39,7 +39,7 @@ "css/" ], "dependencies": { - "@ionic/core": "4.11.6", + "@ionic/core": "4.11.7", "tslib": "*" }, "peerDependencies": {