11import { describe , test , expect } from "vitest" ;
2- import { resolveCurrentWorkspace } from "./dashboard-utils" ;
2+ import {
3+ resolveCurrentWorkspace ,
4+ isDowngradedForMember ,
5+ } from "./dashboard-utils" ;
36import type { WorkspaceWithRelation } from "@webstudio-is/project" ;
47
58const createWorkspace = (
@@ -8,6 +11,7 @@ const createWorkspace = (
811 id : "ws-1" ,
912 name : "Workspace" ,
1013 isDefault : false ,
14+ isDeleted : false ,
1115 createdAt : "2024-01-01T00:00:00.000Z" ,
1216 userId : "user-1" ,
1317 workspaceRelation : "own" ,
@@ -98,3 +102,52 @@ describe("resolveCurrentWorkspace", () => {
98102 }
99103 } ) ;
100104} ) ;
105+
106+ describe ( "isDowngradedForMember" , ( ) => {
107+ test ( "returns false for undefined workspace" , ( ) => {
108+ expect ( isDowngradedForMember ( undefined ) ) . toBe ( false ) ;
109+ } ) ;
110+
111+ test ( "returns false for non-downgraded workspace" , ( ) => {
112+ expect (
113+ isDowngradedForMember (
114+ createWorkspace ( { isDowngraded : false , workspaceRelation : "editors" } )
115+ )
116+ ) . toBe ( false ) ;
117+ } ) ;
118+
119+ test ( "returns false for downgraded workspace owned by current user" , ( ) => {
120+ expect (
121+ isDowngradedForMember (
122+ createWorkspace ( { isDowngraded : true , workspaceRelation : "own" } )
123+ )
124+ ) . toBe ( false ) ;
125+ } ) ;
126+
127+ test ( "returns true for downgraded workspace where user is a member" , ( ) => {
128+ expect (
129+ isDowngradedForMember (
130+ createWorkspace ( { isDowngraded : true , workspaceRelation : "editors" } )
131+ )
132+ ) . toBe ( true ) ;
133+ } ) ;
134+
135+ test ( "returns true for downgraded workspace with viewer relation" , ( ) => {
136+ expect (
137+ isDowngradedForMember (
138+ createWorkspace ( { isDowngraded : true , workspaceRelation : "viewers" } )
139+ )
140+ ) . toBe ( true ) ;
141+ } ) ;
142+
143+ test ( "returns true for downgraded workspace with admin relation" , ( ) => {
144+ expect (
145+ isDowngradedForMember (
146+ createWorkspace ( {
147+ isDowngraded : true ,
148+ workspaceRelation : "administrators" ,
149+ } )
150+ )
151+ ) . toBe ( true ) ;
152+ } ) ;
153+ } ) ;
0 commit comments