mirror of
				https://github.com/aleleba/create-react-ssr.git
				synced 2025-10-30 13:40:45 -06:00 
			
		
		
		
	PR-753737: Agregando Jest y Testing Library para testing.
This commit is contained in:
		| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|     "presets": [ | ||||
|         "@babel/preset-env", | ||||
|         ["@babel/preset-env", {"targets": {"node": "current"}}], | ||||
|         "@babel/preset-react", | ||||
|         "@babel/preset-typescript" | ||||
|     ] | ||||
|   | ||||
							
								
								
									
										8
									
								
								client/jest.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								client/jest.config.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| module.exports = { | ||||
|   setupFilesAfterEnv: ['<rootDir>/setupTest.js'], | ||||
|   "testEnvironment": "jsdom", | ||||
|   moduleNameMapper: { | ||||
|     "\\.(jpg|ico|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/src/__mocks__/fileMock.js", | ||||
|     "\\.(css|sass|less)$": "identity-obj-proxy" | ||||
|   }, | ||||
| }; | ||||
							
								
								
									
										8224
									
								
								client/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8224
									
								
								client/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -9,7 +9,8 @@ | ||||
|     "build": "webpack-cli --config webpack.config.js", | ||||
|     "lint": "eslint ./ --ext .js --ext .ts --ext .jsx --ext .tsx", | ||||
|     "lint:fix": "eslint ./ --ext .js --ext .ts --ext .jsx --ext .tsx --fix", | ||||
|     "test": "echo \"Error: no test specified\" && exit 1" | ||||
|     "test": "jest", | ||||
|     "test:watch": "jest --watch" | ||||
|   }, | ||||
|   "repository": { | ||||
|     "type": "git", | ||||
| @@ -60,12 +61,17 @@ | ||||
|     "@babel/preset-react": "^7.16.7", | ||||
|     "@babel/preset-typescript": "^7.16.7", | ||||
|     "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", | ||||
|     "@testing-library/jest-dom": "^5.16.4", | ||||
|     "@testing-library/react": "^13.1.1", | ||||
|     "@testing-library/user-event": "^14.1.1", | ||||
|     "@types/jest": "^27.4.1", | ||||
|     "@types/node": "^17.0.25", | ||||
|     "@types/react": "^18.0.5", | ||||
|     "@types/react-dom": "^18.0.1", | ||||
|     "@types/webpack-hot-middleware": "^2.25.6", | ||||
|     "@typescript-eslint/eslint-plugin": "^5.20.0", | ||||
|     "@typescript-eslint/parser": "^5.20.0", | ||||
|     "babel-jest": "^28.0.2", | ||||
|     "babel-loader": "^8.2.4", | ||||
|     "clean-webpack-plugin": "^4.0.0", | ||||
|     "compression-webpack-plugin": "^9.2.0", | ||||
| @@ -76,6 +82,9 @@ | ||||
|     "eslint-plugin-react": "^7.29.4", | ||||
|     "eslint-webpack-plugin": "^3.1.1", | ||||
|     "file-loader": "^6.2.0", | ||||
|     "identity-obj-proxy": "^3.0.0", | ||||
|     "jest": "^27.5.1", | ||||
|     "jest-fetch-mock": "^3.0.3", | ||||
|     "mini-css-extract-plugin": "^2.6.0", | ||||
|     "react-refresh": "^0.12.0", | ||||
|     "redux-devtools-extension": "^2.13.9", | ||||
|   | ||||
							
								
								
									
										20
									
								
								client/setupTest.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								client/setupTest.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| // jest-dom adds custom jest matchers for asserting on DOM nodes. | ||||
| // allows you to do things like: | ||||
| // expect(element).toHaveTextContent(/react/i) | ||||
| // learn more: https://github.com/testing-library/jest-dom | ||||
| import '@testing-library/jest-dom'; | ||||
|  | ||||
| //import fetch Mock | ||||
| import fetchMock from "jest-fetch-mock"; | ||||
| fetchMock.enableMocks(); | ||||
|  | ||||
| //Fixing Pollyfill for react-slick | ||||
| window.matchMedia = | ||||
| window.matchMedia || | ||||
| function() { | ||||
|     return { | ||||
|         matches: false, | ||||
|         addListener: function() {}, | ||||
|         removeListener: function() {} | ||||
|     }; | ||||
| }; | ||||
							
								
								
									
										27
									
								
								client/src/__mocks__/ProviderMock.jsx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								client/src/__mocks__/ProviderMock.jsx
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| import React from 'react'; | ||||
| import { Provider } from 'react-redux'; | ||||
| import { Router } from 'react-router-dom'; | ||||
| import { createMemoryHistory } from 'history'; | ||||
| import initialStateReducer from '../frontend/reducers/initialState'; | ||||
| import setStore from '../frontend/setStore'; | ||||
|  | ||||
| const ProviderMock = ({ children, initialState }) => { | ||||
|     let initialStateMock = initialStateReducer | ||||
|  | ||||
|     if(initialState !== undefined){ | ||||
|         initialStateMock = initialState | ||||
|     } | ||||
|  | ||||
|     const history = createMemoryHistory(); | ||||
|     const store = setStore({ initialState: initialStateMock }); | ||||
|  | ||||
|     return( | ||||
|         <Provider store={store}> | ||||
|             <Router location={history.location} navigator={history}> | ||||
|                 {children} | ||||
|             </Router> | ||||
|         </Provider> | ||||
|     ) | ||||
| } | ||||
|  | ||||
| export default ProviderMock; | ||||
							
								
								
									
										1
									
								
								client/src/__mocks__/fileMock.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								client/src/__mocks__/fileMock.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| module.exports = '';  | ||||
							
								
								
									
										23
									
								
								client/src/frontend/components/__tests__/App.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								client/src/frontend/components/__tests__/App.test.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| import React from 'react'; | ||||
| import { render } from '@testing-library/react'; | ||||
| import ProviderMock from '../../../__mocks__/ProviderMock'; | ||||
| import App from '../App'; | ||||
|  | ||||
| describe('<App/> Component', () => { | ||||
|     beforeEach(() => { | ||||
|         fetch.resetMocks(); | ||||
|     }); | ||||
|  | ||||
|     test('Should render root <App /> Component', async () => { | ||||
|         fetch.mockResponseOnce(JSON.stringify({ | ||||
|             //First Data Fetch | ||||
|             data: 'data' | ||||
|         })); | ||||
|  | ||||
|         render( | ||||
|             <ProviderMock> | ||||
|                 <App /> | ||||
|             </ProviderMock> | ||||
|         ) | ||||
|     }) | ||||
| }) | ||||
| @@ -4,7 +4,7 @@ import { hydrateRoot } from 'react-dom/client'; | ||||
| import { BrowserRouter as Router } from 'react-router-dom'; | ||||
| // Redux | ||||
| import { Provider } from 'react-redux'; | ||||
| import { IInitialState } from './reducers/index.js'; | ||||
| import { IInitialState } from './reducers/index'; | ||||
| import setStore from './setStore.js'; | ||||
| import { config } from '../../config'; | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,7 @@ require('ignore-styles'); | ||||
|  | ||||
| require('@babel/register')({ | ||||
| 	'presets': [ | ||||
| 		'@babel/preset-env', | ||||
| 		['@babel/preset-env', {'targets': {'node': 'current'}}], | ||||
| 		'@babel/preset-react', | ||||
| 		'@babel/preset-typescript', | ||||
| 	] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user