mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-09-07 08:26:51 +00:00
feat: add WorkspaceTaskVisibility type for organization cloud settings (#10020)
* feat: add WorkspaceTaskVisibility type and workspaceTaskVisibility property to OrganizationCloudSettings * refactor: create workspaceTaskVisibilitySchema and derive WorkspaceTaskVisibility type from it --------- Co-authored-by: Roo Code <roomote@roocode.com>
This commit is contained in:
parent
0f8fac9eb5
commit
8da4d3d8d8
2 changed files with 93 additions and 0 deletions
|
|
@ -1,10 +1,13 @@
|
|||
// npx vitest run src/__tests__/cloud.test.ts
|
||||
|
||||
import {
|
||||
organizationCloudSettingsSchema,
|
||||
organizationFeaturesSchema,
|
||||
organizationSettingsSchema,
|
||||
type OrganizationCloudSettings,
|
||||
type OrganizationFeatures,
|
||||
type OrganizationSettings,
|
||||
type WorkspaceTaskVisibility,
|
||||
} from "../cloud.js"
|
||||
|
||||
describe("organizationFeaturesSchema", () => {
|
||||
|
|
@ -171,3 +174,84 @@ describe("organizationSettingsSchema with features", () => {
|
|||
expect(result.data).toEqual(input)
|
||||
})
|
||||
})
|
||||
|
||||
describe("organizationCloudSettingsSchema with workspaceTaskVisibility", () => {
|
||||
it("should validate without workspaceTaskVisibility property", () => {
|
||||
const input = {
|
||||
recordTaskMessages: true,
|
||||
enableTaskSharing: true,
|
||||
}
|
||||
const result = organizationCloudSettingsSchema.safeParse(input)
|
||||
expect(result.success).toBe(true)
|
||||
expect(result.data?.workspaceTaskVisibility).toBeUndefined()
|
||||
})
|
||||
|
||||
it("should validate with workspaceTaskVisibility as 'all'", () => {
|
||||
const input = {
|
||||
recordTaskMessages: true,
|
||||
workspaceTaskVisibility: "all" as WorkspaceTaskVisibility,
|
||||
}
|
||||
const result = organizationCloudSettingsSchema.safeParse(input)
|
||||
expect(result.success).toBe(true)
|
||||
expect(result.data?.workspaceTaskVisibility).toBe("all")
|
||||
})
|
||||
|
||||
it("should validate with workspaceTaskVisibility as 'list-only'", () => {
|
||||
const input = {
|
||||
workspaceTaskVisibility: "list-only" as WorkspaceTaskVisibility,
|
||||
}
|
||||
const result = organizationCloudSettingsSchema.safeParse(input)
|
||||
expect(result.success).toBe(true)
|
||||
expect(result.data?.workspaceTaskVisibility).toBe("list-only")
|
||||
})
|
||||
|
||||
it("should validate with workspaceTaskVisibility as 'full-lockdown'", () => {
|
||||
const input = {
|
||||
workspaceTaskVisibility: "full-lockdown" as WorkspaceTaskVisibility,
|
||||
}
|
||||
const result = organizationCloudSettingsSchema.safeParse(input)
|
||||
expect(result.success).toBe(true)
|
||||
expect(result.data?.workspaceTaskVisibility).toBe("full-lockdown")
|
||||
})
|
||||
|
||||
it("should reject invalid workspaceTaskVisibility value", () => {
|
||||
const input = {
|
||||
workspaceTaskVisibility: "invalid-value",
|
||||
}
|
||||
const result = organizationCloudSettingsSchema.safeParse(input)
|
||||
expect(result.success).toBe(false)
|
||||
})
|
||||
|
||||
it("should have correct TypeScript type", () => {
|
||||
// Type-only test to ensure TypeScript compilation
|
||||
const settings: OrganizationCloudSettings = {
|
||||
recordTaskMessages: true,
|
||||
workspaceTaskVisibility: "all",
|
||||
}
|
||||
expect(settings.workspaceTaskVisibility).toBe("all")
|
||||
|
||||
const settingsWithoutVisibility: OrganizationCloudSettings = {
|
||||
recordTaskMessages: false,
|
||||
}
|
||||
expect(settingsWithoutVisibility.workspaceTaskVisibility).toBeUndefined()
|
||||
})
|
||||
|
||||
it("should validate in organizationSettingsSchema with workspaceTaskVisibility", () => {
|
||||
const input = {
|
||||
version: 1,
|
||||
cloudSettings: {
|
||||
recordTaskMessages: true,
|
||||
enableTaskSharing: true,
|
||||
workspaceTaskVisibility: "list-only" as WorkspaceTaskVisibility,
|
||||
},
|
||||
defaultSettings: {},
|
||||
allowList: {
|
||||
allowAll: true,
|
||||
providers: {},
|
||||
},
|
||||
}
|
||||
const result = organizationSettingsSchema.safeParse(input)
|
||||
expect(result.success).toBe(true)
|
||||
expect(result.data?.cloudSettings?.workspaceTaskVisibility).toBe("list-only")
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -120,6 +120,14 @@ export const organizationDefaultSettingsSchema = globalSettingsSchema
|
|||
|
||||
export type OrganizationDefaultSettings = z.infer<typeof organizationDefaultSettingsSchema>
|
||||
|
||||
/**
|
||||
* WorkspaceTaskVisibility
|
||||
*/
|
||||
|
||||
const workspaceTaskVisibilitySchema = z.enum(["all", "list-only", "full-lockdown"])
|
||||
|
||||
export type WorkspaceTaskVisibility = z.infer<typeof workspaceTaskVisibilitySchema>
|
||||
|
||||
/**
|
||||
* OrganizationCloudSettings
|
||||
*/
|
||||
|
|
@ -129,6 +137,7 @@ export const organizationCloudSettingsSchema = z.object({
|
|||
enableTaskSharing: z.boolean().optional(),
|
||||
taskShareExpirationDays: z.number().int().positive().optional(),
|
||||
allowMembersViewAllTasks: z.boolean().optional(),
|
||||
workspaceTaskVisibility: workspaceTaskVisibilitySchema.optional(),
|
||||
})
|
||||
|
||||
export type OrganizationCloudSettings = z.infer<typeof organizationCloudSettingsSchema>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue