Tests from redwoodblog tutorial are failing without any changes/modification.
I was getting this on 6.4.0. Upgraded to 6.5.1 and same issue.
It is only the *Page.test.tsx files that render a Cell. For example, ContactPage and ArticlePage both faile but AboutPage does not.
● ContactPage › renders successfully
expect(received).not.toThrow()
Error name: "Error"
Error message: "You must register a useMutation hook via the `GraphQLHooksProvider`"
30 | const ContactPage = () => {
31 | const formMethods = useForm({mode: 'onBlur'})
> 32 | const [create, {loading, error}] = useMutation<
| ^
33 | CreateContactMutation,
34 | CreateContactMutationVariables
35 | >(CREATE_CONTACT, {
at Object.useMutation (node_modules/@redwoodjs/web/dist/components/GraphQLHooksProvider.js:19:11)
at useMutation (node_modules/@redwoodjs/web/dist/components/GraphQLHooksProvider.js:53:57)
at ContactPage (web/src/pages/ContactPage/ContactPage.tsx:32:49)
at renderWithHooks (node_modules/react-dom/cjs/react-dom.development.js:16305:18)
at mountIndeterminateComponent (node_modules/react-dom/cjs/react-dom.development.js:20074:13)
at beginWork (node_modules/react-dom/cjs/react-dom.development.js:21587:16)
at beginWork$1 (node_modules/react-dom/cjs/react-dom.development.js:27426:14)
at performUnitOfWork (node_modules/react-dom/cjs/react-dom.development.js:26560:12)
at workLoopSync (node_modules/react-dom/cjs/react-dom.development.js:26466:5)
at renderRootSync (node_modules/react-dom/cjs/react-dom.development.js:26434:7)
at recoverFromConcurrentError (node_modules/react-dom/cjs/react-dom.development.js:25850:20)
at performConcurrentWorkOnRoot (node_modules/react-dom/cjs/react-dom.development.js:25750:22)
at flushActQueue (node_modules/react/cjs/react.development.js:2667:24)
at act (node_modules/react/cjs/react.development.js:2582:11)
at node_modules/@redwoodjs/testing/node_modules/@testing-library/react/dist/act-compat.js:46:25
at renderRoot (node_modules/@redwoodjs/testing/node_modules/@testing-library/react/dist/pure.js:161:26)
at render (node_modules/@redwoodjs/testing/node_modules/@testing-library/react/dist/pure.js:247:10)
at customRender (node_modules/@redwoodjs/testing/dist/web/customRender.js:14:29)
at web/src/pages/ContactPage/ContactPage.test.tsx:11:13
at Object.<anonymous> (node_modules/expect/build/toThrowMatchers.js:74:11)
at Object.throwingMatcher [as toThrow] (node_modules/expect/build/index.js:320:21)
at Object.toThrow (web/src/pages/ContactPage/ContactPage.test.tsx:12:12)
10 | expect(() => {
11 | render(<ContactPage />)
> 12 | }).not.toThrow()
| ^
13 | })
14 | })
15 |
at Object.toThrow (web/src/pages/ContactPage/ContactPage.test.tsx:12:12)
An individual on my team was able to fix this using the following (Thanks Weronika!) :
import { RedwoodApolloProvider } from '@redwoodjs/web/apollo'
import ArticlePage from './ArticlePage'
import React from "react";
// Improve this test with help from the Redwood Testing Doc:
// https://redwoodjs.com/docs/testing#testing-pages-layouts
function componentWrappedInRedwoodProviders(children: string | number | boolean | React.JSX.Element | Iterable<React.ReactNode>) {
return (
<RedwoodApolloProvider>{children}</RedwoodApolloProvider>
)
}
describe('ArticlePage', () => {
it('renders successfully', () => {
expect(() => {
render(componentWrappedInRedwoodProviders(<ArticlePage />))
}).not.toThrow()
})
})
Is there a way to avoid this?
I’ll add that the docs do discuss mocking cells, but it doesn’t mention that you have to.