require('dotenv').config({ path: `${process.cwd()}/${process.env.ENV_FILE}` }); import * as fileSchema from '../schema/file-schema.graphql'; import * as textfileSchema from '../schema/textfile-schema.graphql'; import { fileResolver, textfileResolver } from '../resolvers'; import { makeExecutableSchema, addMockFunctionsToSchema } from 'graphql-tools'; import { logger } from '@cdm-logger/server'; import { ApolloServerBase as ApolloServer } from 'apollo-server-core'; import { createTestClient } from 'apollo-server-testing'; import { Schemas } from '@vscode-alt/monaco-editor/esm/vs/base/common/network'; import { DisposableStore } from '@vscode-alt/monaco-editor/esm/vs/base/common/lifecycle'; import * as rootSchemaDef from '../../../../../../servers/backend-server/src/api/root-schema.graphqls'; import { URI } from '@vscode-alt/monaco-editor/esm/vs/base/common/uri'; import { TestDiskFileSystemProvider } from '../../../../../../packages/files-server-core/src/services/__tests__/disk-file-service.test'; import gql from 'graphql-tag'; import 'jest'; import { FileService } from '@files-stack/server-core'; const schema = makeExecutableSchema({ typeDefs: [rootSchemaDef].concat(fileSchema, textfileSchema) as any, resolvers: [fileResolver({ logger, pubsub: '' }), textfileResolver({ logger, pubsub: '' })], }); describe('Files Schema', () => { let fileService: FileService; let fileProvider: TestDiskFileSystemProvider; let testProvider: TestDiskFileSystemProvider; let server: ApolloServer; const disposables = new DisposableStore(); beforeEach(async () => { const logService = logger; fileService = new FileService(logService); disposables.add(fileService); fileProvider = new TestDiskFileSystemProvider(logService); disposables.add(fileService.registerProvider(Schemas.file, fileProvider)); disposables.add(fileProvider); server = new ApolloServer({ schema, context: () => ({ fileService, }), }); }); afterEach(async () => { disposables.clear(); }); test('test schema', async (done) => { const SampleQuery = gql` query FileStat_WS($resource: URI!) { resolveFile(resource: $resource) { resource name isDirectory isSymbolicLink isReadonly size mtime etag } } `; const { query } = createTestClient(server); const resource = URI.parse(`file://${process.env.FILE_ROOT_PATH}`); const res = await query({ query: SampleQuery, variables: { resource }}); logger.info('res, [%j]', res); done(); }); });