From 9648b137038356beb7c49067b89f80fd03fad071 Mon Sep 17 00:00:00 2001 From: gitstart-twenty <140154534+gitstart-twenty@users.noreply.github.com> Date: Mon, 27 Nov 2023 15:52:16 +0545 Subject: [PATCH] Fix Frontend pages tests (#2719) * Fix Frontend pages tests Co-authored-by: gitstart-twenty Co-authored-by: Mael FOSSO * Add SnackBarDecorator Co-authored-by: gitstart-twenty Co-authored-by: Mael FOSSO * Fix more tests Co-authored-by: gitstart-twenty Co-authored-by: Mael FOSSO * Fix more tests Co-authored-by: v1b3m Co-authored-by: gitstart-twenty Co-authored-by: Mael FOSSO --------- Co-authored-by: gitstart-twenty Co-authored-by: Mael FOSSO Co-authored-by: v1b3m --- front/src/__stories__/App.stories.tsx | 2 + .../__stories__/ApiKeyInput.stories.tsx | 3 +- .../profile/components/NameFields.tsx | 8 ++-- front/src/pages/auth/CreateProfile.tsx | 4 +- .../__stories__/NotFound.stories.tsx | 8 +++- front/src/pages/tasks/TasksEffect.tsx | 4 +- .../src/testing/decorators/PageDecorator.tsx | 43 +++++++++++-------- .../decorators/RelationPickerDecorator.tsx | 9 ++++ .../testing/decorators/SnackBarDecorator.tsx | 9 ++++ front/src/testing/mock-data/users.ts | 10 ++++- 10 files changed, 72 insertions(+), 28 deletions(-) create mode 100644 front/src/testing/decorators/RelationPickerDecorator.tsx create mode 100644 front/src/testing/decorators/SnackBarDecorator.tsx diff --git a/front/src/__stories__/App.stories.tsx b/front/src/__stories__/App.stories.tsx index 4fcce0a9b..979aece22 100644 --- a/front/src/__stories__/App.stories.tsx +++ b/front/src/__stories__/App.stories.tsx @@ -5,6 +5,7 @@ import { Meta, StoryObj } from '@storybook/react'; import { ClientConfigProvider } from '@/client-config/components/ClientConfigProvider'; import { UserProvider } from '@/users/components/UserProvider'; import { App } from '~/App'; +import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; import { FullHeightStorybookLayout } from '~/testing/FullHeightStorybookLayout'; import { graphqlMocks } from '~/testing/graphqlMocks'; @@ -12,6 +13,7 @@ const meta: Meta = { title: 'App/App', component: App, decorators: [ + SnackBarDecorator, (Story) => ( diff --git a/front/src/modules/settings/developers/components/__stories__/ApiKeyInput.stories.tsx b/front/src/modules/settings/developers/components/__stories__/ApiKeyInput.stories.tsx index f150e32a8..80b711eac 100644 --- a/front/src/modules/settings/developers/components/__stories__/ApiKeyInput.stories.tsx +++ b/front/src/modules/settings/developers/components/__stories__/ApiKeyInput.stories.tsx @@ -2,11 +2,12 @@ import { Meta, StoryObj } from '@storybook/react'; import { ApiKeyInput } from '@/settings/developers/components/ApiKeyInput'; import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator'; +import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; const meta: Meta = { title: 'Pages/Settings/Developers/ApiKeys/ApiKeyInput', component: ApiKeyInput, - decorators: [ComponentDecorator], + decorators: [ComponentDecorator, SnackBarDecorator], args: { apiKey: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0d2VudHktN2VkOWQyMTItMWMyNS00ZDAyLWJmMjUtNmFlY2NmN2VhNDE5IiwiaWF0IjoxNjk4MTQyODgyLCJleHAiOjE2OTk0MDE1OTksImp0aSI6ImMyMmFiNjQxLTVhOGYtNGQwMC1iMDkzLTk3MzUwYTM2YzZkOSJ9.JIe2TX5IXrdNl3n-kRFp3jyfNUE7unzXZLAzm2Gxl98', diff --git a/front/src/modules/settings/profile/components/NameFields.tsx b/front/src/modules/settings/profile/components/NameFields.tsx index 6570bc412..0a33d78ce 100644 --- a/front/src/modules/settings/profile/components/NameFields.tsx +++ b/front/src/modules/settings/profile/components/NameFields.tsx @@ -34,10 +34,10 @@ export const NameFields = ({ ); const [firstName, setFirstName] = useState( - currentWorkspaceMember?.name.firstName ?? '', + currentWorkspaceMember?.name?.firstName ?? '', ); const [lastName, setLastName] = useState( - currentWorkspaceMember?.name.lastName ?? '', + currentWorkspaceMember?.name?.lastName ?? '', ); const { updateOneObject, objectNotFoundInMetadata } = @@ -91,8 +91,8 @@ export const NameFields = ({ } if ( - currentWorkspaceMember.name.firstName !== firstName || - currentWorkspaceMember.name.lastName !== lastName + currentWorkspaceMember.name?.firstName !== firstName || + currentWorkspaceMember.name?.lastName !== lastName ) { debouncedUpdate(); } diff --git a/front/src/pages/auth/CreateProfile.tsx b/front/src/pages/auth/CreateProfile.tsx index 163e799d5..ecb2fc230 100644 --- a/front/src/pages/auth/CreateProfile.tsx +++ b/front/src/pages/auth/CreateProfile.tsx @@ -76,8 +76,8 @@ export const CreateProfile = () => { } = useForm
({ mode: 'onChange', defaultValues: { - firstName: currentWorkspaceMember?.name.firstName ?? '', - lastName: currentWorkspaceMember?.name.lastName ?? '', + firstName: currentWorkspaceMember?.name?.firstName ?? '', + lastName: currentWorkspaceMember?.name?.lastName ?? '', }, resolver: zodResolver(validationSchema), }); diff --git a/front/src/pages/not-found/__stories__/NotFound.stories.tsx b/front/src/pages/not-found/__stories__/NotFound.stories.tsx index 8f0751b93..9ec9fdfdd 100644 --- a/front/src/pages/not-found/__stories__/NotFound.stories.tsx +++ b/front/src/pages/not-found/__stories__/NotFound.stories.tsx @@ -3,13 +3,19 @@ import { within } from '@storybook/testing-library'; import { ComponentWithRouterDecorator } from '~/testing/decorators/ComponentWithRouterDecorator'; import { PageDecoratorArgs } from '~/testing/decorators/PageDecorator'; +import { RelationPickerDecorator } from '~/testing/decorators/RelationPickerDecorator'; +import { SnackBarDecorator } from '~/testing/decorators/SnackBarDecorator'; import { graphqlMocks } from '~/testing/graphqlMocks'; import { NotFound } from '../NotFound'; const meta: Meta = { title: 'Pages/NotFound/Default', component: NotFound, - decorators: [ComponentWithRouterDecorator], + decorators: [ + ComponentWithRouterDecorator, + SnackBarDecorator, + RelationPickerDecorator, + ], args: { routePath: 'toto-not-found', }, diff --git a/front/src/pages/tasks/TasksEffect.tsx b/front/src/pages/tasks/TasksEffect.tsx index b9e2824cd..0f0bee76d 100644 --- a/front/src/pages/tasks/TasksEffect.tsx +++ b/front/src/pages/tasks/TasksEffect.tsx @@ -22,9 +22,9 @@ export const TasksEffect = () => { value: currentWorkspaceMember.id, operand: ViewFilterOperand.Is, displayValue: - currentWorkspaceMember.name.firstName + + currentWorkspaceMember.name?.firstName + ' ' + - currentWorkspaceMember.name.lastName, + currentWorkspaceMember.name?.lastName, displayAvatarUrl: currentWorkspaceMember.avatarUrl ?? undefined, definition: tasksFilterDefinitions[0], }); diff --git a/front/src/testing/decorators/PageDecorator.tsx b/front/src/testing/decorators/PageDecorator.tsx index 4badb6e0b..c3b56d637 100644 --- a/front/src/testing/decorators/PageDecorator.tsx +++ b/front/src/testing/decorators/PageDecorator.tsx @@ -1,7 +1,10 @@ import { HelmetProvider } from 'react-helmet-async'; import { MemoryRouter, Route, Routes } from 'react-router-dom'; import { Decorator } from '@storybook/react'; +import { RecoilRoot } from 'recoil'; +import { SnackBarProviderScope } from '@/ui/feedback/snack-bar-manager/scopes/SnackBarProviderScope'; +import { RelationPickerScope } from '@/ui/input/components/internal/relation-picker/scopes/RelationPickerScope'; import { ClientConfigProvider } from '~/modules/client-config/components/ClientConfigProvider'; import { DefaultLayout } from '~/modules/ui/layout/page/DefaultLayout'; import { UserProvider } from '~/modules/users/components/UserProvider'; @@ -30,21 +33,27 @@ export const PageDecorator: Decorator<{ routePath: string; routeParams: RouteParams; }> = (Story, { args }) => ( - - - - - - - - } /> - - - - - - - + + + + + + + + + + + } /> + + + + + + + + + + ); diff --git a/front/src/testing/decorators/RelationPickerDecorator.tsx b/front/src/testing/decorators/RelationPickerDecorator.tsx new file mode 100644 index 000000000..8c9a019bc --- /dev/null +++ b/front/src/testing/decorators/RelationPickerDecorator.tsx @@ -0,0 +1,9 @@ +import { Decorator } from '@storybook/react'; + +import { RelationPickerScope } from '@/ui/input/components/internal/relation-picker/scopes/RelationPickerScope'; + +export const RelationPickerDecorator: Decorator = (Story) => ( + + + +); diff --git a/front/src/testing/decorators/SnackBarDecorator.tsx b/front/src/testing/decorators/SnackBarDecorator.tsx new file mode 100644 index 000000000..be3320cb4 --- /dev/null +++ b/front/src/testing/decorators/SnackBarDecorator.tsx @@ -0,0 +1,9 @@ +import { Decorator } from '@storybook/react'; + +import { SnackBarProviderScope } from '@/ui/feedback/snack-bar-manager/scopes/SnackBarProviderScope'; + +export const SnackBarDecorator: Decorator = (Story) => ( + + + +); diff --git a/front/src/testing/mock-data/users.ts b/front/src/testing/mock-data/users.ts index 467745a80..359557aec 100644 --- a/front/src/testing/mock-data/users.ts +++ b/front/src/testing/mock-data/users.ts @@ -34,8 +34,16 @@ export const mockedUsersData: Array = [ firstName: 'Charles', lastName: 'Test', canImpersonate: false, + defaultWorkspace: { + id: '20202020-1c25-4d02-bf25-6aeccf7ea419', + displayName: 'Apple', + logo: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAXNSR0IArs4c6QAAELpJREFUeF7tnXnwr3MVx1+WS5Hthoss1R0lNSTUKGQdt6EscVVCKVPKUqmUKcu0WJI2ppJUt0kNwmRN0dBCtolKpqIVIdl3qXnX8xs/1+937/d5vp/lnOc5n3++/zyfzznnfc77+zyf7ZxFiBYIBALTIrBIYBMIBALTIxAEiegIBBaAQBAkwiMQCIJEDIyJgP5IlwRmAreOOZar7vEGceWuYsrOBg4E5gKzgMlxMqiYGZSxxcLLnyDFwU7AF4A1FqL+osB//JnYTeMgSDfc+tLrhcBZwHotDFoMeLLF864fDYK4dl9n5XcBTm3mFW0HWRz4d9tOXp8Pgnj1XDe9d2+Ioc+kri3eIF2Ri35mEdgAuLzjG2N+o2IOYtbNoVhbBGYA1wPrtO24gOcH9dUxKGMTBomHofYE5iVWVKtX43yeJVYn/3BBkPwY15BwXcuVqVF1fBB4zqgP9+G5IEgfvPiUDSsAdwBaacrRrgY2zjGw1TGDIFY9016vjYCr2ndr1eMQ4NhWPZw/HARx7sBG/Z2BMwuY8nzgLwXkmBERBDHjis6KaG/je517t+s4uHgZnMHt4sH809sCFxXS8l5g+UKyzIgJgphxRWtFdI7qpta9unc4Ejiie3efPYMgPv2muxmPFFZdy7ta5h1UC4L4dPcDwNIFVX8YWKqgPDOigiBmXDGyIhcAc0Z+Os2D+wFfSTOUr1GCIL78tTXw4woqD+qA4mR8gyAVoq2jSAVpjXsY2l95Y0ed3XcLgvhx4S+BV1ZQdwng8QpyTYgMgphww0KVeDFw40KfSv/AD4Ad0w/rZ8QgiA9fPQQ8u4Kqg7o9OBW+QZAKUddSpLKNKLFC6XYocFRpodbkBUGseeSZ+uj7P9fx9ems1yZkjTeWOW8EQcy55GkKab9D+x6l2+rALaWFWpQXBLHolad0Kr1jLsknAAfYhqWcdkGQcli3lbQKcFvbTmM+fxew4phj9Kp7EMSuOy8Btiys3qD3PKbCOghSOAJbiCud//alwA0t9BvEo0EQm25+GfDrgqrtC5xcUJ4bUUEQm666ENiukGrK6P6+QrLciQmC2HTZE4B2sXO305saILnluB0/CGLPdSKGCJK7nQu8PrcQ7+MHQex5cENACdpytu8Cb8kpoC9jB0HsefI44OCMaul8lc5ZRRsBgSDICCAVfuQ3gJZcczQVzqlx8DGHLUXGDIIUgbmVEGUOSZ0gQSXTdL6q9M58K8MtPhwEsecVBXNKvyjTuwrolN54tIdsB41SOqKD+OgyBQIpA/kNwDmBcncEgiDdscvVMwVBzmuWcFOMlctOF+MGQey5aZyg/hWwGaBj8tESIBAESQBi4iG6EOQ0YO8K6UgTm25vuCCIPZ+MMkkXiZQGSBebcm8q2kOooEZBkIJgjyhKV11nNitZIoI+l/4O/Aw4A7gCeHTEscZ5TLExcRdeeihpXZe32zg6VO87ZILoctDzgPWbZdC1gdWAZRqv3An8Dris+bfWHkLfAkQEWA94E7A9oJIKz1pIVAoDJXX4M/DTZuNRNdhVP6R3bSgEUSAor+37m0ls1404ff4ogdvnmqpO3ibDKpugNKIfbXbrU/tfxPkRcHTzphNerltqgCyBMQs4vjnOnSttjv5N9S8q4l1ryfhJumgHXee7di10hH4yDDoVINnHACqh4K71jSAigv69dAGoxH2K+R3+W+Cdzb9nzWBYFfgqsEPiXflxbBJZDgJO8fSp2heCKCBUFmDdcTyYuO9PgL2aCXbioaccTnOHTzVBWOPPoY2Nyvk7t9BiQxu9nvGsd4JoUq3a4Pq12rT6oznLYRk+M0QEvbH0GaMSad6aVua2sUwUrwTRZPPKZgXGU1BoUi+iKDlb15ICqhOiVSeRbmVPxi9A1283b1tz5ngkyKebVRhzYLZUSGTRP/9nRzgaoiXpPZv5VV8Tu2nBQyuN+jQ10zwRRP+WWnvvY1JlBYdWwU5s5lLaU9ClKS02KLu7CDKUphMCm1iZyHshyOFDrNE9FEZMYafmbWtZSKBtnSDS7w/A7AEHy5BNf3OzIVsNA8sEWRZQMuVcm3zVQA/BrRComtjOKkFq1eRr5bl4uBgC1SrtWiTIps3xjWLohyAXCFQpKGqNIFtYW+ZzETrDUfIbwD4lzbVEkI2aXfGS9ocsfwh8oNkkLaK5FYLoXoYuBUULBEZBQH+m14zy4LjPWCCINsF0j8CCLuPiGf3LIaDDmdlvVloIyvudHrQrFwohaSoE7m6uJmdFpzZBdERd52+iBQJtECh2bqsmQXYEzm6DSjwbCDQ5ArTaWSQ/QC2CzAAeC3cHAi0R0N2Ri1v2GevxWgS5qcmgMZby0XkwCNwDKMdA8T/VGgSZA1wwGNeGoeMioDeG3hxVWg2CjJI5sAoYIdQcAp8EPl5Tq9IE+Vpzh7qmzSHbBwLKNTyvtqolCaINwewbO7UBDflJEFByO53grd5KEuRSYPPqFocC1hHYAzjVipKlCKJjAS4z61lx1ED00HxD8w4zrRRBLgS2M2N1KGIRgfObBNqmdCtBEOVx0iX8aIHAdAgUOVfVBf4SBImMJF08M6w+SgRYfBNwFIhLEOSJSomkR7E/nqmPwM6Wz+TlJojS9fyxvg9CA6MI3Gw9pVNugig58WuMOifUqo+AsmTqspzZlpsgRY4km0U3FFsQAqoT8g7rEOUkyDpNjT/rGIR+dRDQ6qb5P9CcBDnX4rp2nVgIqfMhoOpX7/aASk6CxOqVhwioo6PSybrYG8tFkDiYWCfwPEi9vim97UHXbKl2VDzyHBcIhJKlEVDe5d+XFtpVXq43iG6BbdVVqejXWwQ0Kdfk3E3LRRCtbev4QLRAYDICKq/m6o8zF0HML99F3FZBYGPg6iqSOwrNQZBlgPs66hPd+o2Ai72PyS7IQZAtgUv67eewrgMCOq3r7rM7B0FU2vjgDgBGl34j8HNAxZFctRwE0Tfmhq5QCGVLILB/U+a6hKxkMnIQRFnwlkumYQzUFwRe1FQsdmVPDoLoCIGrtW5XHvOrbJF6HqnhyUGQWOJN7aV+jJcj1rIjk0PpIEh2t7kUkCPWsgORWunFAJ3ijRYITEbA3RGTCeVTE0Tr3KavUEbcVkFACcv15+mupSZI7KK7C4EiCuurQkWT3LXUBFkJuMMdCqFwbgSCIA3CqwK35kY7xneHQHxiNS5bDbjFnftC4dwIxCS9QXgV4LbcaMf4LhFI/TlfBITUSsccpIjbXApxd9RdKKcmyLLAvS7dF0rnRsB8FsWpAEhNkCiUkzvM/I7vKlnDBMypCRI76X4DOLfm7wG+nFtI6vFTE0TjaUkvWiAwPwKXAa/1Bktqgsj+OKzoLQrK6KsKx/oEd9VyEERvkBzjugI2lJ0SAXcrWTkCOXJiBTumQ2Bdbxn/cxBEO+naUY8WCMyPwBnAbp5gyUGQSDvqKQLK6qrr2Mrs7qblIMhhwJFuEAhFSyOg0xb/LC20q7wcBNkcuLSrQtGv9wicDaiyrYuWgyDLAyoMHy0QmA6BHHGXBe0cisZmYRZX9WrQvYF5HizKQRDZHXshHrxfT0c3NwxzEUR3QnQ3JFogMB0CmodoPmK65SLIyR5qYJv2TP+Vc3ENNxdBYiWr/wGewsKjgENTDJRrjFwEifxYuTzWv3GXAh62alYugsjeONVr1eu29Lrd8nw1J0H+BqxuyxehjVEEjrB6+iInQQ4HZHi0QGAUBEzWD8lJkEgiN0pYxDMTCOiTXHPXxy1BkpMgMQ+x5Gkfumiyrkm7mZabIP8AZpmxNhTxgIA2mc3cJ8pNkA8Cn/HgldDRFAI3A7MtaJSbIJFIzoKXfeqgVdA1a6uemyCyL4p61vayX/m6NvHcmntqJQhyEbCtXx+F5pUR0Mlf3TF6sIYeJQjyEuCGGsaFzF4h8Grg8tIWlSBILPeW9mp/5emU+L4lzStFkGuBDUoaFrJ6i8ADzeS9yLXuUgTZCLiqty4Lw2ogcBLwrtyCSxEkPrNye3KY4+t4ylxACemytJIEUXbvzbJYEYMOHQGd3xJRkl/hLUmQFwDaIY0WCORCQG8UbU5rnpKklSSIFI5NwyRui0GmQSB5tpTSBDkOODjcGwhkQuD41PFVmiBLACqkEi0QyIFA8kKhpQkiUP4KrJEDnRhz0AhoX2RmagRqEOQVwDWpDYnxBo/ALsBZqVGoQRDZoMmUKuJGCwRSIZAllrMMOoLFHwaOGeG5eCQQGAWBC4HXjfJg22dqESQywLf1VDy/IARWAO7JAVEtgsiW07zVq8vhgBhzbAT+1VyqGnugqQaoSZBY8s3i0sENmvWeSE2CyJO/ADYZnEvD4FQIJN85n1+x2gRZOuW5mVSoxzhuEHgr8J2c2tYmiGy7Gtgwp5Exdi8R0MHERXNbZoEg8RbJ7eV+jr8/cGJu0ywQRDaqbLSK7kQLBEZBoMjbQ4pYIcgM4LFRkIlnAoGmvN8pJZCwQhDZKoPfXsLokOEagewrV5PRsUQQ6RVVqVzHbhHltwYuKSLJ0CfWhL17Ad8qZXzIcYdA1l3zqdCw9gaRjvcBy7hzXShcAgGVRVB5hGLNIkGiMlUx97sSpM8qfV4VbRYJIgB08WWnokiEMOsI6P7Qk6WVtEoQ4RAZUEpHg115ewCn1lDPMkEiXWmNiLAns2pJNssEkasuBray57PQqCACKuqp4p5VmnWCCJS4v14lNEwIPQA4oaYmHggSKUtrRkg92UoPtVY98f+X7IEg0lOVclUxN9pwEND5PH09VG1eCCKQ7gBWqopWCC+FwBbNCe9S8qaV44kgceK3ergUUeB8YPsikkYQ4okgMkf313WPPVo/EdBqlVatzDRvBBFw3wT2NoNgKJISgeWas3gpxxxrLI8EkcG3AyuPZXl0tobA7k2uNFN6eSWIzuWo7JZX/U0FgQFlTM07JuPhOcBif8RAZCdQQSlDlTrUZPNMEAGquYjmJNF8IqAbpEs2XwMmLfBOEIGqG4i6iRjNHwKzrRd27QNBFBbXAev5i49Ba7wr8H3rCPSFIML5TmBF64CHfv9D4CjgUA9Y9IkgskX1sU1tNHkIgsI6ng7MLSyzs7g+EUQgKFfrQ83ErzMo0TEbAlXulY9jTd8IMkGS++NNMk5YZOn7Q2BOlpEzDtpHgggu2XUrsEpG7HIMraQE+kzUfEqnlx9shCwLzGpOM6sWuDe/nQzsmwOw3GN6A7otHio3rbLTFpvyf50JnARcCzzaUkltru0AvBfYuEQpgJb6TTx+EPDFjn2rd+s7QQTw5wE5qXbT2+Ec4CPAjRmU0YabNk4/Yeic2vrA9RlsLTbkEAgiMF8FXFEM1acLOq/5vCiZEVCLFfs0fw6qv1K6/QlYu0ndVFp2UnlDIYhAU9Dok+vlSRGcerC7AJUHU/3u2k2fYvOaz7HcuujoyG4eNgBHBWJIBJnARK/9ywFNdlM23Z/+UrMB9kjKgROOtQ3wdWDNhGNODHUscEiGcasOOUSCTAC+aTMnWH4MD2hirYD7GHD3GOOU7iq/K8/tcc0Rna5xoIWG/WplPSwBWldgSuhWSoZ23j8EHAjMXIhQXQm9DDi+qVFRPetGIpA0T9EexdsA1R3XZ9lUsaFN2Csb+y+wkHUkkf3TDhMEeSY0izcBoqDRypM2HfVPqVzBQ2yKkcEWNgqCDDHkw+aREQiCjAxVPDhEBIIgQ/R62DwyAkGQkaGKB4eIwH8BiW3y2J/F45oAAAAASUVORK5CYII=', + inviteHash: 'apple.dev-invite-hash', + allowImpersonation: true, + }, workspaceMember: { id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b', + name: { firstName: 'Charles', lastName: 'Test' }, workspace: { __typename: 'Workspace', id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6b', @@ -50,7 +58,7 @@ export const mockedUsersData: Array = [ companies: [], comments: [], }, - }, + } as MockedUser, { id: '7dfbc3f7-6e5e-4128-957e-8d86808cdf6c', __typename: 'User',