Skip to content

Commit aca3133

Browse files
fix: [#1585] stop docs editor from writing both tests: and data_tests: (#1899)
1 parent e3cc250 commit aca3133

1 file changed

Lines changed: 31 additions & 3 deletions

File tree

src/webview_provider/docsEditPanel.ts

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,12 @@ export class DocsEditViewPanel implements WebviewViewProvider {
281281
await this.resolveWebviewView(this.panel!, this.context!, this.token!);
282282
};
283283

284-
private getTestDataByModel(message: any, modelName: string) {
284+
private getTestDataByModel(
285+
message: any,
286+
modelName: string,
287+
project?: DBTProject,
288+
existingModel?: any,
289+
) {
285290
const tests = message.updatedTests as undefined | TestMetaData[];
286291

287292
if (!tests?.length) {
@@ -320,7 +325,23 @@ export class DocsEditViewPanel implements WebviewViewProvider {
320325
})
321326
.filter((t) => Boolean(t));
322327
const filteredTests = this.dbtTestService.removeDuplicateTests(finalTests);
323-
return filteredTests.length ? filteredTests : undefined;
328+
if (!filteredTests.length) {
329+
return;
330+
}
331+
332+
// dbt >= 1.8 renamed model-level `tests:` to `data_tests:`. Mirror the
333+
// column-level selection logic: prefer `data_tests` on new dbt versions,
334+
// but preserve `tests` if the user's YAML already uses that key.
335+
const dbtVersion = project?.getDBTVersion();
336+
if (
337+
dbtVersion &&
338+
gte(dbtVersion.join("."), "1.8.0") &&
339+
existingModel?.tests === undefined
340+
) {
341+
return { data_tests: filteredTests };
342+
}
343+
344+
return { tests: filteredTests };
324345
}
325346

326347
private getTestMetadataKwArgs(
@@ -1001,8 +1022,15 @@ export class DocsEditViewPanel implements WebviewViewProvider {
10011022
const modelTests = this.getTestDataByModel(
10021023
message,
10031024
model.get("name") as string,
1025+
project,
1026+
model.toJSON(),
1027+
);
1028+
this.setOrDeleteInParsedDocument(model, "tests", modelTests?.tests);
1029+
this.setOrDeleteInParsedDocument(
1030+
model,
1031+
"data_tests",
1032+
modelTests?.data_tests,
10041033
);
1005-
this.setOrDeleteInParsedDocument(model, "tests", modelTests);
10061034
if (!model.get("columns")) {
10071035
model.set("columns", new YAMLSeq<DocumentationSchemaColumn>());
10081036
}

0 commit comments

Comments
 (0)