@@ -21,6 +21,7 @@ import (
21
21
"github.com/coder/coder/v2/coderd/database"
22
22
"github.com/coder/coder/v2/coderd/database/db2sdk"
23
23
"github.com/coder/coder/v2/coderd/database/dbauthz"
24
+ "github.com/coder/coder/v2/coderd/database/dbfake"
24
25
"github.com/coder/coder/v2/coderd/database/dbgen"
25
26
"github.com/coder/coder/v2/coderd/database/dbtestutil"
26
27
"github.com/coder/coder/v2/coderd/database/dbtime"
@@ -2916,6 +2917,38 @@ func TestGetUserStatusCounts(t *testing.T) {
2916
2917
}
2917
2918
}
2918
2919
2920
+ func TestOrganizationDeleteTrigger (t * testing.T ) {
2921
+ t .Parallel ()
2922
+
2923
+ if ! dbtestutil .WillUsePostgres () {
2924
+ t .SkipNow ()
2925
+ }
2926
+
2927
+ t .Run ("WorkspaceExists" , func (t * testing.T ) {
2928
+ db , _ := dbtestutil .NewDB (t )
2929
+
2930
+ orgA := dbfake .Organization (t , db ).Do ()
2931
+
2932
+ user := dbgen .User (t , db , database.User {})
2933
+
2934
+ dbfake .WorkspaceBuild (t , db , database.WorkspaceTable {
2935
+ OrganizationID : orgA .Org .ID ,
2936
+ OwnerID : user .ID ,
2937
+ }).Do ()
2938
+
2939
+ ctx := testutil .Context (t , testutil .WaitShort )
2940
+ err := db .UpdateOrganizationDeletedByID (ctx , database.UpdateOrganizationDeletedByIDParams {
2941
+ UpdatedAt : dbtime .Now (),
2942
+ ID : orgA .Org .ID ,
2943
+ })
2944
+ require .Error (t , err )
2945
+ // cannot delete organization: organization has 1 workspaces and 1 templates that must be deleted first
2946
+ require .ErrorContains (t , err , "cannot delete organization" )
2947
+ require .ErrorContains (t , err , "has 1 workspaces" )
2948
+ require .ErrorContains (t , err , "1 templates" )
2949
+ })
2950
+ }
2951
+
2919
2952
func requireUsersMatch (t testing.TB , expected []database.User , found []database.GetUsersRow , msg string ) {
2920
2953
t .Helper ()
2921
2954
require .ElementsMatch (t , expected , database .ConvertUserRows (found ), msg )
0 commit comments