UNPKG

@prisma/language-server

Version:
97 lines 4.77 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const vitest_1 = require("vitest"); const vscode_languageserver_1 = require("vscode-languageserver"); const MessageHandler_1 = require("../../lib/MessageHandler"); const Schema_1 = require("../../lib/Schema"); const constants_1 = require("../../lib/constants"); const listAllAvailablePreviewFeatures_1 = __importDefault(require("../../lib/prisma-schema-wasm/listAllAvailablePreviewFeatures")); const helper_1 = require("../helper"); function assertLinting(expected, fixturePath) { const document = (0, helper_1.getTextDocument)(fixturePath); const diagnosticsResults = (0, MessageHandler_1.handleDiagnosticsRequest)(Schema_1.PrismaSchema.singleFile(document)).get(document.uri); (0, vitest_1.expect)(diagnosticsResults.length).toBeGreaterThan(0); expected.forEach((expectedDiagnostic, i) => { const actualDiagnostic = diagnosticsResults[i]; (0, vitest_1.expect)(actualDiagnostic.message).toStrictEqual(expectedDiagnostic.message); (0, vitest_1.expect)(actualDiagnostic.range).toStrictEqual(expectedDiagnostic.range); (0, vitest_1.expect)(actualDiagnostic.severity).toStrictEqual(expectedDiagnostic.severity); (0, vitest_1.expect)(actualDiagnostic.tags).toStrictEqual(expectedDiagnostic.tags); }); } (0, vitest_1.describe)('Linting', () => { const getFixturePath = (testName) => `./linting/${testName}.prisma`; (0, vitest_1.test)('Missing argument', () => { const fixturePath = getFixturePath('missingArgument'); assertLinting([ { message: 'Argument "provider" is missing in data source block "db".', range: { start: { line: 0, character: 0 }, end: { line: 2, character: 1 }, }, severity: vscode_languageserver_1.DiagnosticSeverity.Error, }, ], fixturePath); }); (0, vitest_1.test)('Wrong type', () => { const fixturePath = getFixturePath('wrongType'); assertLinting([ { message: 'Type "Use" is neither a built-in type, nor refers to another model, composite type, or enum.', range: { start: { line: 14, character: 12 }, end: { line: 14, character: 15 }, }, severity: vscode_languageserver_1.DiagnosticSeverity.Error, }, ], fixturePath); }); (0, vitest_1.test)('@ignore : Field', () => { const fixturePath = getFixturePath('@ignore'); assertLinting([ { range: { start: { line: 12, character: 0 }, end: { line: 12, character: constants_1.MAX_SAFE_VALUE_i32 }, }, message: '@ignore: When using Prisma Migrate, this field will be kept in sync with the database schema, however, it will not be exposed in Prisma Client.', tags: [vscode_languageserver_1.DiagnosticTag.Unnecessary], severity: vscode_languageserver_1.DiagnosticSeverity.Hint, }, ], fixturePath); }); (0, vitest_1.test)('@@ignore : Model', () => { const fixturePath = getFixturePath('@@ignore'); assertLinting([ { range: { start: { line: 9, character: 0 }, end: { line: 17, character: 1 }, }, message: '@@ignore: When using Prisma Migrate, this model will be kept in sync with the database schema, however, it will not be exposed in Prisma Client.', tags: [vscode_languageserver_1.DiagnosticTag.Unnecessary], severity: vscode_languageserver_1.DiagnosticSeverity.Hint, }, ], fixturePath); }); (0, vitest_1.test)('Unknown previewFeature', () => { const fixturePath = getFixturePath('unknownPreview'); const previewFeatures = (0, listAllAvailablePreviewFeatures_1.default)(); assertLinting([ { message: `The preview feature "huh" is not known. Expected one of: ${previewFeatures.join(', ')}. If this is unexpected, it might be due to your editor's Prisma Extension being out of date.`, range: { start: { line: 2, character: 22 }, end: { line: 2, character: 29 }, }, severity: vscode_languageserver_1.DiagnosticSeverity.Error, }, ], fixturePath); }); }); //# sourceMappingURL=single-file.test.js.map