diff --git a/package.json b/package.json index 056038aaf6d4d517368d4e86db97e7ec0cda8ff5..e8a41224bc9eaa0f6fa6345cdb3d65d5bd551f5e 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,7 @@ "homepage": "https://forge.grandlyon.com/web-et-numerique/llle_project/ecolyo#readme", "devDependencies": { "@babel/preset-typescript": "^7.7.4", + "@testing-library/react-hooks": "^5.0.0", "@types/classnames": "^2.2.10", "@types/d3": "^5.7.2", "@types/enzyme": "^3.10.8", diff --git a/src/components/Hooks/useExploration.spec.tsx b/src/components/Hooks/useExploration.spec.tsx new file mode 100644 index 0000000000000000000000000000000000000000..57cbcac651cb817bde88cd3fc70b07198ef6a77c --- /dev/null +++ b/src/components/Hooks/useExploration.spec.tsx @@ -0,0 +1,23 @@ +import * as reactRedux from 'react-redux' +import { renderHook, act } from '@testing-library/react-hooks' +import useExploration from 'components/Hooks/useExploration' +import { UserExplorationID } from 'enum/userExploration.enum' +import { userChallengeData } from '../../../test/__mocks__/userChallengeData.mock' + +const dispatchMock = jest.fn() +const mockUseSelector = jest.spyOn(reactRedux, 'useSelector') +const mockUseDispatch = jest.spyOn(reactRedux, 'useDispatch') + +describe('useExploration Hooks', () => { + it('should return "EXPLORATION001"', () => { + mockUseDispatch.mockReturnValue(dispatchMock) + mockUseSelector.mockReturnValue(userChallengeData[0]) + + const { result } = renderHook(() => useExploration()) + + act(() => { + result.current[1](UserExplorationID.EXPLORATION001) + }) + expect(result.current[0]).toBe(UserExplorationID.EXPLORATION001) + }) +}) diff --git a/yarn.lock b/yarn.lock index 675c4cd667d5f5210c753f74b4d9fea658d0fe12..265fb4380844ff9e16f83a1eb4c2221c6ca30d69 100644 --- a/yarn.lock +++ b/yarn.lock @@ -828,7 +828,7 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/runtime@^7.12.1": +"@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== @@ -1318,6 +1318,18 @@ dom-accessibility-api "^0.5.1" pretty-format "^26.4.2" +"@testing-library/react-hooks@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-5.0.0.tgz#994af047a94c7ed04b34920f70b3fd017e9976cd" + integrity sha512-c/wvcz/Set+KOvbi07EQO7tujsUIp5HnNAygJoSpMTVkIDcp7JtSemhjRDg1WL6Qsw076inWobTKCepK3mgi8A== + dependencies: + "@babel/runtime" "^7.12.5" + "@types/react" ">=16.9.0" + "@types/react-dom" ">=16.9.0" + "@types/react-test-renderer" ">=16.9.0" + filter-console "^0.1.1" + react-error-boundary "^3.1.0" + "@testing-library/react@^10.4.9": version "10.4.9" resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-10.4.9.tgz#9faa29c6a1a217bf8bbb96a28bd29d7a847ca150" @@ -1713,6 +1725,13 @@ resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== +"@types/react-dom@>=16.9.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.0.tgz#b3b691eb956c4b3401777ee67b900cb28415d95a" + integrity sha512-lUqY7OlkF/RbNtD5nIq7ot8NquXrdFrjSOR6+w9a9RFQevGi1oZO1dcJbXMeONAPKtZ2UrZOEJ5UOCVsxbLk/g== + dependencies: + "@types/react" "*" + "@types/react-dom@^16.9.8": version "16.9.8" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423" @@ -1754,6 +1773,13 @@ "@types/history" "*" "@types/react" "*" +"@types/react-test-renderer@>=16.9.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-17.0.0.tgz#9be47b375eeb906fced37049e67284a438d56620" + integrity sha512-nvw+F81OmyzpyIE1S0xWpLonLUZCMewslPuA8BtjSKc5XEbn8zEQBXS7KuOLHTNnSOEM2Pum50gHOoZ62tqTRg== + dependencies: + "@types/react" "*" + "@types/react-transition-group@^2.0.8": version "2.9.2" resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-2.9.2.tgz#c48cf2a11977c8b4ff539a1c91d259eaa627028d" @@ -1768,6 +1794,14 @@ "@types/prop-types" "*" csstype "^2.2.0" +"@types/react@>=16.9.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.0.tgz#5af3eb7fad2807092f0046a1302b7823e27919b8" + integrity sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw== + dependencies: + "@types/prop-types" "*" + csstype "^3.0.2" + "@types/redux-mock-store@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@types/redux-mock-store/-/redux-mock-store-1.0.2.tgz#c27d5deadfb29d8514bdb0fc2cadae6feea1922d" @@ -4642,6 +4676,11 @@ csstype@^2.2.0, csstype@^2.5.7: resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.11.tgz#452f4d024149ecf260a852b025e36562a253ffc5" integrity sha512-l8YyEC9NBkSm783PFTvh0FmJy7s5pFKrDp49ZL7zBGX3fWkO+N4EEyan1qqp8cwPLDcD0OSdyY6hAMoxp34JFw== +csstype@^3.0.2: + version "3.0.6" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.6.tgz#865d0b5833d7d8d40f4e5b8a6d76aea3de4725ef" + integrity sha512-+ZAmfyWMT7TiIlzdqJgjMb7S4f1beorDbWbsocyK4RaiqA5RTX3K14bnBWmmA9QEM0gRdsjyyrEmcyga8Zsxmw== + csswring@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/csswring/-/csswring-7.0.0.tgz#a5873f727ecedbb33900a864ee5d8ea7413333e8" @@ -6455,6 +6494,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +filter-console@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/filter-console/-/filter-console-0.1.1.tgz#6242be28982bba7415bcc6db74a79f4a294fa67c" + integrity sha512-zrXoV1Uaz52DqPs+qEwNJWJFAWZpYJ47UNmpN9q4j+/EYsz85uV0DC9k8tRND5kYmoVzL0W+Y75q4Rg8sRJCdg== + final-form@4.18.5: version "4.18.5" resolved "https://registry.yarnpkg.com/final-form/-/final-form-4.18.5.tgz#e359cfaf2892ef135d92fcf22e06b475dda3a885" @@ -11563,6 +11607,13 @@ react-dom@16.12.0: prop-types "^15.6.2" scheduler "^0.18.0" +react-error-boundary@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.0.tgz#9487443df2f9ba1db90d8ab52351814907ea4af3" + integrity sha512-lmPrdi5SLRJR+AeJkqdkGlW/CRkAUvZnETahK58J4xb5wpbfDngasEGu+w0T1iXEhVrYBJZeW+c4V1hILCnMWQ== + dependencies: + "@babel/runtime" "^7.12.5" + react-event-listener@^0.6.0, react-event-listener@^0.6.2: version "0.6.6" resolved "https://registry.yarnpkg.com/react-event-listener/-/react-event-listener-0.6.6.tgz#758f7b991cad9086dd39fd29fad72127e1d8962a"