From 31b62bbf830380f625043c935a259c1ca0a659e8 Mon Sep 17 00:00:00 2001 From: ghost <49853598+JSONbored@users.noreply.github.com> Date: Fri, 26 Jun 2026 13:40:13 -0700 Subject: [PATCH] fix(api): include blacklist label in settings preview --- src/signals/settings-preview.ts | 2 ++ test/unit/settings-preview.test.ts | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/signals/settings-preview.ts b/src/signals/settings-preview.ts index 32347b5ce0..7c434d5aa0 100644 --- a/src/signals/settings-preview.ts +++ b/src/signals/settings-preview.ts @@ -195,6 +195,7 @@ export type RepoSettingsPreview = { slopGateMinScore?: number | null | undefined; autoLabelEnabled: boolean; gittensorLabel: string; + blacklistLabel: string; createMissingLabel: boolean; includeMaintainerAuthors: boolean; requireLinkedIssue: boolean; @@ -318,6 +319,7 @@ export function buildRepoSettingsPreview(args: { slopGateMinScore: settings.slopGateMinScore ?? null, autoLabelEnabled: settings.autoLabelEnabled, gittensorLabel: settings.gittensorLabel, + blacklistLabel: settings.blacklistLabel ?? "slop", createMissingLabel: settings.createMissingLabel, includeMaintainerAuthors: settings.includeMaintainerAuthors, requireLinkedIssue: settings.requireLinkedIssue, diff --git a/test/unit/settings-preview.test.ts b/test/unit/settings-preview.test.ts index 23d23bfb6c..c022586c54 100644 --- a/test/unit/settings-preview.test.ts +++ b/test/unit/settings-preview.test.ts @@ -1,6 +1,7 @@ import { describe, expect, it } from "vitest"; import { buildRepoSettingsPreview, decidePublicSurface, type InstallationHealthSummary } from "../../src/signals/settings-preview"; import { REQUIRED_INSTALLATION_PERMISSIONS } from "../../src/github/backfill"; +import { RepoSettingsPreviewSchema } from "../../src/openapi/schemas"; import type { IssueRecord, PullRequestRecord, RepositoryRecord, RepositorySettings } from "../../src/types"; const FORBIDDEN_INSTALL_PREVIEW_PUBLIC_LANGUAGE = @@ -120,6 +121,8 @@ describe("buildRepoSettingsPreview", () => { const preview = buildRepoSettingsPreview({ ...base, settings: settings(), installation: healthyInstall, sample: { authorLogin: "miner", minerStatus: "confirmed" } }); expect(preview.decision.willComment).toBe(true); expect(preview.appliedLabel).toBe("gittensor"); + expect(preview.settings.blacklistLabel).toBe("slop"); + expect(() => RepoSettingsPreviewSchema.parse(preview)).not.toThrow(); expect(preview.previewComment).toContain(""); expect(preview.previewComment).toContain("Gittensory"); expect(preview.previewComment).toContain("Confirmed Gittensor contributor"); @@ -154,6 +157,18 @@ describe("buildRepoSettingsPreview", () => { ).not.toMatch(FORBIDDEN_INSTALL_PREVIEW_PUBLIC_LANGUAGE); }); + it("includes the configured blacklist label required by the OpenAPI contract", () => { + const preview = buildRepoSettingsPreview({ + ...base, + settings: settings({ blacklistLabel: "abuse" }), + installation: healthyInstall, + sample: { authorLogin: "miner", minerStatus: "confirmed" }, + }); + + expect(preview.settings.blacklistLabel).toBe("abuse"); + expect(() => RepoSettingsPreviewSchema.parse(preview)).not.toThrow(); + }); + it("uses safe defaults for an empty sample preview", () => { const preview = buildRepoSettingsPreview({ ...base, settings: settings(), installation: healthyInstall, sample: {} }); expect(preview.sample).toMatchObject({ authorLogin: "sample-contributor", authorType: "User", authorAssociation: "NONE", minerStatus: "confirmed", title: "Sample pull request" });