@prisma/language-server
Version:
Prisma Language Server
545 lines • 21.3 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const vitest_1 = require("vitest");
const MessageHandler_1 = require("../../lib/MessageHandler");
const Schema_1 = require("../../lib/Schema");
const helper_1 = require("../helper");
function assertRename(expected, document, newName, position) {
const params = {
textDocument: document,
newName: newName,
position: position,
};
const renameResult = (0, MessageHandler_1.handleRenameRequest)(Schema_1.PrismaSchema.singleFile(document), document, params);
(0, vitest_1.expect)(renameResult).not.toBeUndefined();
(0, vitest_1.expect)(renameResult).toStrictEqual(expected);
}
(0, vitest_1.describe)('Rename', () => {
const renameModelPath = './rename/renameModel.prisma';
const renameFieldPath = './rename/renameFields.prisma';
const renameEnumPath = './rename/renameEnum.prisma';
const renameViewPath = './rename/renameView.prisma';
const renameTypePath = './rename/renameType.prisma';
const renameFieldLargeSchemaPath = './rename/renameFieldLargeSchema.prisma';
const renameModelWithJsonDefaultPath = './rename/renameModelWithJsonDefault.prisma';
const renameMultipleModelsPath = './rename/renameMultipleModels.prisma';
const renameModelBugPath = './rename/renameModelBug.prisma';
const renameModel = (0, helper_1.getTextDocument)(renameModelPath);
const renameField = (0, helper_1.getTextDocument)(renameFieldPath);
const renameEnum = (0, helper_1.getTextDocument)(renameEnumPath);
const renameView = (0, helper_1.getTextDocument)(renameViewPath);
const renameType = (0, helper_1.getTextDocument)(renameTypePath);
const renameModelWithJsonDefault = (0, helper_1.getTextDocument)(renameModelWithJsonDefaultPath);
const renameFieldLargeSchema = (0, helper_1.getTextDocument)(renameFieldLargeSchemaPath);
const renameMultipleModels = (0, helper_1.getTextDocument)(renameMultipleModelsPath);
const renameModelBug = (0, helper_1.getTextDocument)(renameModelBugPath);
const newModelName = 'Customer';
const newModelName2 = 'Posts';
const newModelName3 = 'ArticleNew';
const newFieldName = 'publisherId';
const newFieldName2 = 'headline';
const newFieldName3 = 'humanoidId';
const newFieldName4 = 'AlbumFoo';
const newEnumName = 'Function';
const newEnumValue = 'A_VARIANT_WITHOUT_UNDERSCORES';
const newViewName = 'Pane';
const newTypeName = 'Pane';
(0, vitest_1.test)('Model', () => {
assertRename({
changes: {
[renameModel.uri]: [
{
newText: newModelName,
range: {
start: { line: 17, character: 6 },
end: { line: 17, character: 10 },
},
},
{
newText: '\t@@map("User")\n}',
range: {
start: { line: 23, character: 0 },
end: { line: 23, character: 1 },
},
},
{
newText: newModelName,
range: {
start: { line: 13, character: 12 },
end: { line: 13, character: 16 },
},
},
],
},
}, renameModel, newModelName, { line: 17, character: 10 });
assertRename({
changes: {
[renameModel.uri]: [
{
newText: newModelName,
range: {
start: { line: 17, character: 6 },
end: { line: 17, character: 10 },
},
},
{
newText: '\t@@map("User")\n}',
range: {
start: { line: 23, character: 0 },
end: { line: 23, character: 1 },
},
},
{
newText: newModelName,
range: {
start: { line: 13, character: 12 },
end: { line: 13, character: 16 },
},
},
],
},
}, renameModel, newModelName, { line: 17, character: 9 });
assertRename({
changes: {
[renameModel.uri]: [
{
newText: newModelName,
range: {
start: { line: 17, character: 6 },
end: { line: 17, character: 10 },
},
},
{
newText: '\t@@map("User")\n}',
range: {
start: { line: 23, character: 0 },
end: { line: 23, character: 1 },
},
},
{
newText: newModelName,
range: {
start: { line: 13, character: 12 },
end: { line: 13, character: 16 },
},
},
],
},
}, renameModel, newModelName, { line: 17, character: 8 });
assertRename({
changes: {
[renameModel.uri]: [
{
newText: newModelName,
range: {
start: { line: 17, character: 6 },
end: { line: 17, character: 10 },
},
},
{
newText: '\t@@map("User")\n}',
range: {
start: { line: 23, character: 0 },
end: { line: 23, character: 1 },
},
},
{
newText: newModelName,
range: {
start: { line: 13, character: 12 },
end: { line: 13, character: 16 },
},
},
],
},
}, renameModel, newModelName, { line: 17, character: 6 });
assertRename({
changes: {
[renameModel.uri]: [
{
newText: newModelName2,
range: {
start: { line: 9, character: 6 },
end: { line: 9, character: 10 },
},
},
{
newText: '\t@@map("Post")\n}',
range: {
start: { line: 15, character: 0 },
end: { line: 15, character: 1 },
},
},
{
newText: newModelName2,
range: {
start: { line: 21, character: 8 },
end: { line: 21, character: 12 },
},
},
],
},
}, renameModel, newModelName2, { line: 9, character: 10 });
assertRename({
changes: {
[renameMultipleModels.uri]: [
{
newText: newModelName3,
range: {
start: { line: 6, character: 6 },
end: { line: 6, character: 13 },
},
},
{
newText: '\t@@map("Article")\n}',
range: {
start: { line: 17, character: 0 },
end: { line: 17, character: 1 },
},
},
{
newText: newModelName3,
range: {
start: { line: 2, character: 19 },
end: { line: 2, character: 26 },
},
},
{
newText: newModelName3,
range: {
start: { line: 3, character: 19 },
end: { line: 3, character: 26 },
},
},
],
},
}, renameMultipleModels, newModelName3, { line: 6, character: 11 });
assertRename({
changes: {
[renameModelBug.uri]: [
{
newText: newModelName,
range: {
start: { line: 6, character: 6 },
end: { line: 6, character: 12 },
},
},
{
newText: '\t@@map("zaknos")\n}',
range: {
start: { line: 9, character: 0 },
end: { line: 9, character: 1 },
},
},
],
},
}, renameModelBug, newModelName, { line: 6, character: 12 });
});
(0, vitest_1.test)('Model where it is used as type', () => {
assertRename({
changes: {
[renameModel.uri]: [
{
newText: newModelName2,
range: {
start: { line: 9, character: 6 },
end: { line: 9, character: 10 },
},
},
{
newText: '\t@@map("Post")\n}',
range: {
start: { line: 15, character: 0 },
end: { line: 15, character: 1 },
},
},
{
newText: newModelName2,
range: {
start: { line: 21, character: 8 },
end: { line: 21, character: 12 },
},
},
],
},
}, renameModel, newModelName2, { line: 21, character: 12 });
});
(0, vitest_1.test)('Model with Json default attribute', () => {
assertRename({
changes: {
[renameModelWithJsonDefault.uri]: [
{
newText: newModelName,
range: {
start: { line: 17, character: 6 },
end: { line: 17, character: 10 },
},
},
{
newText: '\t@@map("User")\n}',
range: {
start: { line: 24, character: 0 },
end: { line: 24, character: 1 },
},
},
{
newText: newModelName,
range: {
start: { line: 13, character: 12 },
end: { line: 13, character: 16 },
},
},
],
},
}, renameModelWithJsonDefault, newModelName, { line: 17, character: 10 });
});
(0, vitest_1.test)('Field not referenced in index block', () => {
assertRename({
changes: {
[renameFieldLargeSchema.uri]: [
{
newText: newFieldName4,
range: {
start: { line: 136, character: 2 },
end: { line: 136, character: 7 },
},
},
{
newText: ' @map("Album")',
range: {
start: { line: 136, character: 34 },
end: { line: 136, character: 34 },
},
},
],
},
}, renameFieldLargeSchema, newFieldName4, { line: 136, character: 7 });
});
(0, vitest_1.test)('Field rename on relation field does not add @map', () => {
assertRename({
changes: {
[renameFieldLargeSchema.uri]: [
{
newText: newFieldName,
range: {
start: { line: 137, character: 2 },
end: { line: 137, character: 7 },
},
},
],
},
}, renameFieldLargeSchema, newFieldName, { line: 137, character: 7 });
});
(0, vitest_1.test)('Field referenced in @@id and @relation attributes', () => {
assertRename({
changes: {
[renameField.uri]: [
{
newText: newFieldName,
range: {
start: { line: 4, character: 4 },
end: { line: 4, character: 12 },
},
},
{
newText: ' @map("authorId")',
range: {
start: { line: 4, character: 17 },
end: { line: 4, character: 17 },
},
},
{
newText: newFieldName,
range: {
start: { line: 3, character: 41 },
end: { line: 3, character: 49 },
},
},
{
newText: newFieldName,
range: {
start: { line: 5, character: 10 },
end: { line: 5, character: 18 },
},
},
],
},
}, renameField, newFieldName, { line: 4, character: 12 });
});
// TODO?
(0, vitest_1.test)('Field referenced in @@index attribute', () => {
assertRename({
changes: {
[renameField.uri]: [
{
newText: newFieldName2,
range: {
start: { line: 17, character: 2 },
end: { line: 17, character: 7 },
},
},
{
newText: ' @map("title")',
range: {
start: { line: 17, character: 17 },
end: { line: 17, character: 17 },
},
},
{
newText: newFieldName2,
range: {
start: { line: 19, character: 11 },
end: { line: 19, character: 16 },
},
},
],
},
}, renameField, newFieldName2, { line: 17, character: 7 });
});
(0, vitest_1.test)('Field referenced in @@unique attribute and @relation attribute', () => {
assertRename({
changes: {
[renameField.uri]: [
{
newText: newFieldName3,
range: {
start: { line: 25, character: 2 },
end: { line: 25, character: 9 },
},
},
{
newText: ' @map("humanId")',
range: {
start: { line: 25, character: 14 },
end: { line: 25, character: 14 },
},
},
{
newText: newFieldName3,
range: {
start: { line: 24, character: 39 },
end: { line: 24, character: 46 },
},
},
{
newText: newFieldName3,
range: {
start: { line: 28, character: 12 },
end: { line: 28, character: 19 },
},
},
],
},
}, renameField, newFieldName3, { line: 25, character: 9 });
});
(0, vitest_1.test)('Enums', () => {
assertRename({
changes: {
[renameEnum.uri]: [
{
newText: newEnumName,
range: {
start: { line: 5, character: 5 },
end: { line: 5, character: 9 },
},
},
{
newText: '\t@@map("Role")\n}',
range: {
start: { line: 9, character: 0 },
end: { line: 9, character: 1 },
},
},
{
newText: newEnumName,
range: {
start: { line: 2, character: 7 },
end: { line: 2, character: 11 },
},
},
],
},
}, renameEnum, newEnumName, { line: 5, character: 9 });
});
(0, vitest_1.test)('Enum Values', () => {
assertRename({
changes: {
[renameEnum.uri]: [
{
newText: newEnumValue,
range: {
start: { line: 8, character: 2 },
end: { line: 8, character: 28 },
},
},
{
newText: ' @map("A_VARIANT_WITH_UNDERSCORES")',
range: {
start: { line: 8, character: 28 },
end: { line: 8, character: 28 },
},
},
{
newText: `@default(${newEnumValue})`,
range: {
start: { line: 2, character: 12 },
end: { line: 2, character: 48 },
},
},
],
},
}, renameEnum, newEnumValue, { line: 8, character: 28 });
});
(0, vitest_1.test)('Views', () => {
assertRename({
changes: {
[renameView.uri]: [
{
newText: newViewName,
range: {
start: { line: 10, character: 5 },
end: { line: 10, character: 11 },
},
},
{
newText: '\t@@map("Window")\n}',
range: {
start: { line: 13, character: 0 },
end: { line: 13, character: 1 },
},
},
{
newText: newViewName,
range: {
start: { line: 17, character: 13 },
end: { line: 17, character: 19 },
},
},
],
},
}, renameView, newViewName, { line: 10, character: 9 });
});
(0, vitest_1.test)('Types', () => {
assertRename({
changes: {
[renameType.uri]: [
{
newText: newTypeName,
range: {
start: { line: 10, character: 5 },
end: { line: 10, character: 11 },
},
},
{
newText: newTypeName,
range: {
start: { line: 17, character: 10 },
end: { line: 17, character: 16 },
},
},
],
},
}, renameType, newTypeName, { line: 10, character: 9 });
});
});
//# sourceMappingURL=single-file.test.js.map