Просмотр исходного кода

Maintenance: Generate mock function for each graphql operation

Vladimir Sheremet 1 год назад
Родитель
Сommit
87cc2c92fb

+ 1 - 1
.eslintignore

@@ -1,7 +1,7 @@
 **/*{.,-}min.js
 
 # Skip auto generated files.
-app/frontend/**/graphql/**/*.api.ts
+app/frontend/**/graphql/**/*.ts
 app/frontend/shared/graphql/types.ts
 app/frontend/shared/types/config.ts
 

+ 2 - 0
.eslintrc.js

@@ -47,6 +47,8 @@ module.exports = {
     'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
     'consistent-return': 'off', // allow implicit return
 
+    'class-methods-use-this': 'off',
+
     'prefer-destructuring': [
       'error',
       {

+ 72 - 0
.graphql_code_generator.js

@@ -0,0 +1,72 @@
+// @ts-check
+
+/** @type {import('@graphql-codegen/cli').CodegenConfig['generates'][string]} */
+const mockerPreset = {
+  documents:
+    ['app/frontend/**/{queries,mutations,subscriptions}/**/*.graphql'],
+  preset: 'near-operation-file',
+  presetConfig: {
+    baseTypesPath: '~#shared/graphql/types.ts',
+    importTypesNamespace: '',
+    extension: '.mocks.ts',
+  },
+  plugins: [
+    './app/frontend/build/mocksGraphqlPlugin.js',
+  ],
+  config: {
+    importOperationTypesFrom: 'Types',
+    skipDocumentsValidation: {
+      skipValidationAgainstSchema: true,
+    },
+  },
+}
+
+/** @type {import('@graphql-codegen/cli').CodegenConfig} */
+const config = {
+  overwrite: true,
+  schema: 'app/graphql/graphql_introspection.json',
+  config: {
+    vueCompositionApiImportFrom: 'vue',
+    addDocBlocks: false,
+  },
+  generates: {
+    './app/frontend/shared/graphql/types.ts': {
+      documents:
+        ['app/frontend/shared/**/*.graphql', 'app/frontend/apps/**/*.graphql'],
+      config: {
+        scalars: {
+          BinaryString: 'string',
+          NonEmptyString: 'string',
+          FormId: 'string',
+          ISO8601Date: 'string',
+          ISO8601DateTime: 'string',
+        },
+      },
+      plugins: [
+        'typescript',
+        'typescript-operations',
+      ]
+    },
+    './app/frontend/': {
+      documents:
+        ['app/frontend/shared/**/*.graphql', 'app/frontend/apps/**/*.graphql'],
+      preset: 'near-operation-file',
+      presetConfig: {
+        baseTypesPath: '~#shared/graphql/types.ts',
+        importTypesNamespace: '',
+        extension: '.api.ts',
+      },
+      plugins: [
+        'typescript-vue-apollo',
+      ],
+      config: {
+        importOperationTypesFrom: 'Types'
+      }
+    },
+    // generate mocks
+    './app/frontend/apps/': mockerPreset,
+    './app/frontend/shared/': mockerPreset,
+  },
+}
+
+module.exports = config

+ 0 - 29
.graphql_code_generator.yml

@@ -1,29 +0,0 @@
-overwrite: true
-schema: app/graphql/graphql_introspection.json
-config:
-  vueCompositionApiImportFrom: vue
-  addDocBlocks: false
-documents:
-  ['app/frontend/shared/**/*.graphql', 'app/frontend/apps/**/*.graphql']
-generates:
-  ./app/frontend/shared/graphql/types.ts:
-    config:
-      scalars:
-        BinaryString: string
-        NonEmptyString: string
-        FormId: string
-        ISO8601Date: string
-        ISO8601DateTime: string
-    plugins:
-      - typescript
-      - typescript-operations
-  ./app/frontend/:
-    preset: near-operation-file
-    presetConfig:
-      baseTypesPath: 'shared/graphql/types.ts'
-      importTypesNamespace: ''
-      extension: .api.ts
-    plugins:
-      - typescript-vue-apollo
-    config:
-      importOperationTypesFrom: Types

+ 1 - 1
app/frontend/apps/desktop/pages/login/graphql/mutations/adminPasswordAuthSend.api.ts

@@ -1,4 +1,4 @@
-import * as Types from '../../../../../../shared/graphql/types';
+import * as Types from '#shared/graphql/types.ts';
 
 import gql from 'graphql-tag';
 import { ErrorsFragmentDoc } from '../../../../../../shared/graphql/fragments/errors.api';

+ 12 - 0
app/frontend/apps/desktop/pages/login/graphql/mutations/adminPasswordAuthSend.mocks.ts

@@ -0,0 +1,12 @@
+import * as Types from '#shared/graphql/types.ts';
+
+import * as Mocks from '#tests/graphql/builders/mocks.ts'
+import * as Operations from './adminPasswordAuthSend.api.ts'
+
+export function mockAdminPasswordAuthSendMutation(defaults: Mocks.MockDefaultsValue<Types.AdminPasswordAuthSendMutation, Types.AdminPasswordAuthSendMutationVariables>) {
+  return Mocks.mockGraphQLResult(Operations.AdminPasswordAuthSendDocument, defaults)
+}
+
+export function waitForAdminPasswordAuthSendMutationCalls() {
+  return Mocks.waitForGraphQLMockCalls<Types.AdminPasswordAuthSendMutation>(Operations.AdminPasswordAuthSendDocument)
+}

+ 1 - 1
app/frontend/apps/desktop/pages/login/graphql/mutations/adminPasswordAuthVerify.api.ts

@@ -1,4 +1,4 @@
-import * as Types from '../../../../../../shared/graphql/types';
+import * as Types from '#shared/graphql/types.ts';
 
 import gql from 'graphql-tag';
 import { ErrorsFragmentDoc } from '../../../../../../shared/graphql/fragments/errors.api';

+ 12 - 0
app/frontend/apps/desktop/pages/login/graphql/mutations/adminPasswordAuthVerify.mocks.ts

@@ -0,0 +1,12 @@
+import * as Types from '#shared/graphql/types.ts';
+
+import * as Mocks from '#tests/graphql/builders/mocks.ts'
+import * as Operations from './adminPasswordAuthVerify.api.ts'
+
+export function mockAdminPasswordAuthVerifyMutation(defaults: Mocks.MockDefaultsValue<Types.AdminPasswordAuthVerifyMutation, Types.AdminPasswordAuthVerifyMutationVariables>) {
+  return Mocks.mockGraphQLResult(Operations.AdminPasswordAuthVerifyDocument, defaults)
+}
+
+export function waitForAdminPasswordAuthVerifyMutationCalls() {
+  return Mocks.waitForGraphQLMockCalls<Types.AdminPasswordAuthVerifyMutation>(Operations.AdminPasswordAuthVerifyDocument)
+}

+ 1 - 1
app/frontend/apps/mobile/components/Form/fields/FieldFile/graphql/mutations/uploadCache/add.api.ts

@@ -1,4 +1,4 @@
-import * as Types from '../../../../../../../../../shared/graphql/types';
+import * as Types from '#shared/graphql/types.ts';
 
 import gql from 'graphql-tag';
 import * as VueApolloComposable from '@vue/apollo-composable';

+ 12 - 0
app/frontend/apps/mobile/components/Form/fields/FieldFile/graphql/mutations/uploadCache/add.mocks.ts

@@ -0,0 +1,12 @@
+import * as Types from '#shared/graphql/types.ts';
+
+import * as Mocks from '#tests/graphql/builders/mocks.ts'
+import * as Operations from './add.api.ts'
+
+export function mockFormUploadCacheAddMutation(defaults: Mocks.MockDefaultsValue<Types.FormUploadCacheAddMutation, Types.FormUploadCacheAddMutationVariables>) {
+  return Mocks.mockGraphQLResult(Operations.FormUploadCacheAddDocument, defaults)
+}
+
+export function waitForFormUploadCacheAddMutationCalls() {
+  return Mocks.waitForGraphQLMockCalls<Types.FormUploadCacheAddMutation>(Operations.FormUploadCacheAddDocument)
+}

Некоторые файлы не были показаны из-за большого количества измененных файлов