Add basic tests for dataProvider
Change-Id: Ib399cbb4e927ab18f714371e07606df83170df52
This commit is contained in:
		
							parent
							
								
									bbbca0c57c
								
							
						
					
					
						commit
						1f56bac356
					
				| @ -29,3 +29,8 @@ Steps for 2): | |||||||
| ## Screenshots | ## Screenshots | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | 
 | ||||||
|  | ## Development | ||||||
|  | 
 | ||||||
|  | - Use `yarn test` to run all style, lint and unit tests | ||||||
|  | - Use `yarn fix` to fix the coding style | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ | |||||||
|     "eslint": "^6.8.0", |     "eslint": "^6.8.0", | ||||||
|     "eslint-config-prettier": "^6.10.1", |     "eslint-config-prettier": "^6.10.1", | ||||||
|     "eslint-plugin-prettier": "^3.1.2", |     "eslint-plugin-prettier": "^3.1.2", | ||||||
|  |     "jest-fetch-mock": "^3.0.3", | ||||||
|     "prettier": "^2.0.0" |     "prettier": "^2.0.0" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  | |||||||
| @ -1,4 +1,6 @@ | |||||||
| import { configure } from "enzyme"; | import { configure } from "enzyme"; | ||||||
| import Adapter from "enzyme-adapter-react-16"; | import Adapter from "enzyme-adapter-react-16"; | ||||||
|  | import fetchMock from "jest-fetch-mock"; | ||||||
| 
 | 
 | ||||||
| configure({ adapter: new Adapter() }); | configure({ adapter: new Adapter() }); | ||||||
|  | fetchMock.enableMocks(); | ||||||
|  | |||||||
							
								
								
									
										78
									
								
								src/synapse/dataProvider.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								src/synapse/dataProvider.test.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,78 @@ | |||||||
|  | import dataProvider from "./dataProvider"; | ||||||
|  | 
 | ||||||
|  | beforeEach(() => { | ||||||
|  |   fetch.resetMocks(); | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | describe("dataProvider", () => { | ||||||
|  |   localStorage.setItem("base_url", "http://localhost"); | ||||||
|  |   localStorage.setItem("access_token", "access_token"); | ||||||
|  | 
 | ||||||
|  |   it("fetches all users", async () => { | ||||||
|  |     fetch.mockResponseOnce( | ||||||
|  |       JSON.stringify({ | ||||||
|  |         users: [ | ||||||
|  |           { | ||||||
|  |             name: "user_id1", | ||||||
|  |             password_hash: "password_hash1", | ||||||
|  |             is_guest: 0, | ||||||
|  |             admin: 0, | ||||||
|  |             user_type: null, | ||||||
|  |             deactivated: 0, | ||||||
|  |             displayname: "User One", | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             name: "user_id2", | ||||||
|  |             password_hash: "password_hash2", | ||||||
|  |             is_guest: 0, | ||||||
|  |             admin: 1, | ||||||
|  |             user_type: null, | ||||||
|  |             deactivated: 0, | ||||||
|  |             displayname: "User Two", | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         next_token: "100", | ||||||
|  |         total: 200, | ||||||
|  |       }) | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     const users = await dataProvider.getList("users", { | ||||||
|  |       pagination: { page: 1, perPage: 5 }, | ||||||
|  |       sort: { field: "title", order: "ASC" }, | ||||||
|  |       filter: { author_id: 12 }, | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     expect(users["data"][0]["id"]).toEqual("user_id1"); | ||||||
|  |     expect(users["total"]).toEqual(200); | ||||||
|  |     expect(fetch).toHaveBeenCalledTimes(1); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   it("fetches one user", async () => { | ||||||
|  |     fetch.mockResponseOnce( | ||||||
|  |       JSON.stringify({ | ||||||
|  |         name: "user_id1", | ||||||
|  |         password: "user_password", | ||||||
|  |         displayname: "User", | ||||||
|  |         threepids: [ | ||||||
|  |           { | ||||||
|  |             medium: "email", | ||||||
|  |             address: "user@mail_1.com", | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             medium: "email", | ||||||
|  |             address: "user@mail_2.com", | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |         avatar_url: "mxc://localhost/user1", | ||||||
|  |         admin: false, | ||||||
|  |         deactivated: false, | ||||||
|  |       }) | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     const user = await dataProvider.getOne("users", { id: "user_id1" }); | ||||||
|  | 
 | ||||||
|  |     expect(user["data"]["id"]).toEqual("user_id1"); | ||||||
|  |     expect(user["data"]["displayname"]).toEqual("User"); | ||||||
|  |     expect(fetch).toHaveBeenCalledTimes(1); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
							
								
								
									
										25
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								yarn.lock
									
									
									
									
									
								
							| @ -3502,6 +3502,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: | |||||||
|     safe-buffer "^5.0.1" |     safe-buffer "^5.0.1" | ||||||
|     sha.js "^2.4.8" |     sha.js "^2.4.8" | ||||||
| 
 | 
 | ||||||
|  | cross-fetch@^3.0.4: | ||||||
|  |   version "3.0.5" | ||||||
|  |   resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.5.tgz#2739d2981892e7ab488a7ad03b92df2816e03f4c" | ||||||
|  |   integrity sha512-FFLcLtraisj5eteosnX1gf01qYDCOc4fDy0+euOt8Kn9YBY2NtXL/pCoYPavw24NIQkQqm5ZOLsGD5Zzj0gyew== | ||||||
|  |   dependencies: | ||||||
|  |     node-fetch "2.6.0" | ||||||
|  | 
 | ||||||
| cross-spawn@7.0.1: | cross-spawn@7.0.1: | ||||||
|   version "7.0.1" |   version "7.0.1" | ||||||
|   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" |   resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" | ||||||
| @ -6447,6 +6454,14 @@ jest-environment-node@^24.9.0: | |||||||
|     jest-mock "^24.9.0" |     jest-mock "^24.9.0" | ||||||
|     jest-util "^24.9.0" |     jest-util "^24.9.0" | ||||||
| 
 | 
 | ||||||
|  | jest-fetch-mock@^3.0.3: | ||||||
|  |   version "3.0.3" | ||||||
|  |   resolved "https://registry.yarnpkg.com/jest-fetch-mock/-/jest-fetch-mock-3.0.3.tgz#31749c456ae27b8919d69824f1c2bd85fe0a1f3b" | ||||||
|  |   integrity sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw== | ||||||
|  |   dependencies: | ||||||
|  |     cross-fetch "^3.0.4" | ||||||
|  |     promise-polyfill "^8.1.3" | ||||||
|  | 
 | ||||||
| jest-get-type@^24.9.0: | jest-get-type@^24.9.0: | ||||||
|   version "24.9.0" |   version "24.9.0" | ||||||
|   resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" |   resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" | ||||||
| @ -7650,6 +7665,11 @@ no-case@^3.0.3: | |||||||
|     lower-case "^2.0.1" |     lower-case "^2.0.1" | ||||||
|     tslib "^1.10.0" |     tslib "^1.10.0" | ||||||
| 
 | 
 | ||||||
|  | node-fetch@2.6.0: | ||||||
|  |   version "2.6.0" | ||||||
|  |   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" | ||||||
|  |   integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== | ||||||
|  | 
 | ||||||
| node-fetch@^1.0.1: | node-fetch@^1.0.1: | ||||||
|   version "1.7.3" |   version "1.7.3" | ||||||
|   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" |   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" | ||||||
| @ -9131,6 +9151,11 @@ promise-inflight@^1.0.1: | |||||||
|   resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" |   resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" | ||||||
|   integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= |   integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= | ||||||
| 
 | 
 | ||||||
|  | promise-polyfill@^8.1.3: | ||||||
|  |   version "8.1.3" | ||||||
|  |   resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116" | ||||||
|  |   integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g== | ||||||
|  | 
 | ||||||
| promise@^7.1.1: | promise@^7.1.1: | ||||||
|   version "7.3.1" |   version "7.3.1" | ||||||
|   resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" |   resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Manuel Stahl
						Manuel Stahl