Skip to content

Commit

Permalink
Merge pull request #32 from entria/test/relayModern
Browse files Browse the repository at this point in the history
feat(relay): add tests using react-native-testing-library
  • Loading branch information
sibelius committed Oct 30, 2018
2 parents 843035e + 8724d82 commit fd84354
Show file tree
Hide file tree
Showing 6 changed files with 145 additions and 9 deletions.
2 changes: 1 addition & 1 deletion jest.config.js
Expand Up @@ -6,7 +6,7 @@ module.exports = {
'^.+\\.js$': '<rootDir>/node_modules/react-native/jest/preprocessor.js',
},
moduleNameMapper: {
'styled-components': '<rootDir>/node_modules/styled-components/dist/styled-components.native.cjs.js',
'styled-components': '<rootDir>/node_modules/styled-components/native/dist/styled-components.native.cjs.js',
},
setupFiles: ['<rootDir>/test/setupFiles.js'],
testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.(j|t)s?$',
Expand Down
3 changes: 3 additions & 0 deletions package.json
Expand Up @@ -29,12 +29,15 @@
"eslint-plugin-react": "^7.11.1",
"eslint-plugin-react-native": "^3.5.0",
"graphql": "^14.0.2",
"graphql-query-test-mock": "^0.9.0",
"isomorphic-fetch": "^2.2.1",
"jest": "23.6.0",
"lint-staged": "^7.3.0",
"metro-react-native-babel-preset": "0.47.1",
"nock": "^10.0.1",
"prettier": "^1.14.3",
"react-devtools": "^3.4.2",
"react-native-testing-library": "^1.3.0",
"react-test-renderer": "16.5.2",
"relay-compiler": "1.6.2",
"relay-devtools": "^1.4.0"
Expand Down
8 changes: 3 additions & 5 deletions src/UserList.js
Expand Up @@ -15,7 +15,7 @@ import {
} from 'react-relay';
import { createQueryRendererModern } from './relay';

import { type UserList_query } from './__generated__/UserList_query.graphql';
import type { UserList_query } from './__generated__/UserList_query.graphql';

type Props = {
query: UserList_query,
Expand Down Expand Up @@ -157,8 +157,7 @@ const UserListPaginationContainer = createPaginationContainer(
);


export default withNavigation(
createQueryRendererModern(
export default createQueryRendererModern(
UserListPaginationContainer,
UserList,
{
Expand All @@ -172,8 +171,7 @@ export default withNavigation(
`,
variables: {cursor: null, count: 1},
},
)
);
);

const styles = StyleSheet.create({
container: {
Expand Down
50 changes: 50 additions & 0 deletions src/__tests__/UserList.spec.js
@@ -0,0 +1,50 @@
import * as React from 'react';
import { waitForElement } from 'react-native-testing-library';

import { render, queryMock } from '../../test/testUtils';
import { GRAPHQL_URL } from '../relay/fetchQuery';

import UserList from '../UserList';

queryMock.setup(GRAPHQL_URL);

const data = {
users: {
pageInfo: {
hasNextPage: false,
endCursor: 'bW9uZ286MA==',
},
edges: [
{
cursor: 'bW9uZ286MA==',
node: {
__typename: 'User',
id: 'VXNlcjo1YmNmNDgxZTk0ZTg2MDA3ZWM5MTUxN2Q=',
name: 'username',
},
},
],
},
};

beforeEach(() => {
queryMock.reset();
});

it('render UserList', async () => {
try {

queryMock.mockQuery({
name: 'UserListQuery',
data,
});

const r = render(<UserList/>);

await waitForElement(() => r.getByText('username'));

expect(r.getByText('username')).toBe(null);
} catch (err) {
console.log('err: ', err);
}
});
2 changes: 2 additions & 0 deletions test/testUtils.js
Expand Up @@ -18,3 +18,5 @@ export { customRender as render };

const queryMock = new QueryMock();
queryMock.setup(GRAPHQL_URL);

export { queryMock };
89 changes: 86 additions & 3 deletions yarn.lock
Expand Up @@ -1029,6 +1029,11 @@ assert-plus@1.0.0, assert-plus@^1.0.0:
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=

assertion-error@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==

assign-symbols@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
Expand Down Expand Up @@ -1890,6 +1895,18 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=

chai@^4.1.2:
version "4.2.0"
resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5"
integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==
dependencies:
assertion-error "^1.1.0"
check-error "^1.0.2"
deep-eql "^3.0.1"
get-func-name "^2.0.0"
pathval "^1.1.0"
type-detect "^4.0.5"

chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
Expand Down Expand Up @@ -1920,6 +1937,11 @@ chardet@^0.7.0:
resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==

check-error@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=

chownr@^1.0.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494"
Expand Down Expand Up @@ -2287,7 +2309,7 @@ debug@^3.1.0:
dependencies:
ms "^2.1.1"

debug@^4.0.1:
debug@^4.0.1, debug@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87"
integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg==
Expand All @@ -2309,6 +2331,18 @@ dedent@^0.7.0:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=

deep-eql@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==
dependencies:
type-detect "^4.0.0"

deep-equal@^1.0.0, deep-equal@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=

deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
Expand Down Expand Up @@ -3266,6 +3300,11 @@ get-caller-file@^1.0.1:
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==

get-func-name@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=

get-own-enumerable-property-symbols@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203"
Expand Down Expand Up @@ -3401,6 +3440,13 @@ graphql-compiler@1.6.2:
fb-watchman "^2.0.0"
immutable "~3.7.6"

graphql-query-test-mock@^0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/graphql-query-test-mock/-/graphql-query-test-mock-0.9.0.tgz#a511acebec597be745448c7a1ce4f0bf15f6efa8"
integrity sha512-spHVjUecZ86enhbsQGGn/Zuh1+/09A70N7w48MG/aleUVEAa/byPXiliRNXioT35d0ncIGVoZpRWhAalTe99CQ==
dependencies:
deep-equal "^1.0.1"

graphql@^14.0.2:
version "14.0.2"
resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.0.2.tgz#7dded337a4c3fd2d075692323384034b357f5650"
Expand Down Expand Up @@ -4552,7 +4598,7 @@ json-stable-stringify@^1.0.1:
dependencies:
jsonify "~0.0.0"

json-stringify-safe@~5.0.1:
json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
Expand Down Expand Up @@ -5360,6 +5406,21 @@ nice-try@^1.0.4:
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==

nock@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/nock/-/nock-10.0.1.tgz#71eeb580c2995878e582b3e32420daead9eb44f7"
integrity sha512-M0aL9IDbUFURmokoXqejZQybZk8EtlYjUBjaoICVbW62uOlyPRsnEsceyOlUik4spCOt50ptwM4BTPt20ITtcQ==
dependencies:
chai "^4.1.2"
debug "^4.1.0"
deep-equal "^1.0.0"
json-stringify-safe "^5.0.1"
lodash "^4.17.5"
mkdirp "^0.5.0"
propagate "^1.0.0"
qs "^6.5.1"
semver "^5.5.0"

node-fetch@^1.0.1:
version "1.7.3"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef"
Expand Down Expand Up @@ -5805,6 +5866,11 @@ path-type@^2.0.0:
dependencies:
pify "^2.0.0"

pathval@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0"
integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA=

pegjs@^0.10.0:
version "0.10.0"
resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd"
Expand Down Expand Up @@ -6011,6 +6077,11 @@ prop-types@^15.5.4, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1,
loose-envify "^1.3.1"
object-assign "^4.1.1"

propagate@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/propagate/-/propagate-1.0.0.tgz#00c2daeedda20e87e3782b344adba1cddd6ad709"
integrity sha1-AMLa7t2iDofjeCs0Stuhzd1q1wk=

pseudomap@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
Expand All @@ -6031,7 +6102,7 @@ punycode@^2.1.0:
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==

qs@~6.5.2:
qs@^6.5.1, qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
Expand Down Expand Up @@ -6153,6 +6224,13 @@ react-native-tab-view@^1.0.0:
dependencies:
prop-types "^15.6.1"

react-native-testing-library@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/react-native-testing-library/-/react-native-testing-library-1.3.0.tgz#57414c5300a893195a8a3cc54ad902580485ce2a"
integrity sha512-ButwgsYWmHLEIUD0DgJtB62K+60KtNPskn9xoAC2mon3hZPDfuOF0+7cvNYAgvsQmLzbS07avjXbmailh/hdXw==
dependencies:
pretty-format "^23.6.0"

react-native@0.57.3:
version "0.57.3"
resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.57.3.tgz#ba395bc139f13430caa41614ac6197f8446e106e"
Expand Down Expand Up @@ -7448,6 +7526,11 @@ type-check@~0.3.2:
dependencies:
prelude-ls "~1.1.2"

type-detect@^4.0.0, type-detect@^4.0.5:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==

typedarray@^0.0.6:
version "0.0.6"
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
Expand Down

0 comments on commit fd84354

Please sign in to comment.