@@ -9,7 +9,13 @@ import type { Relationship } from './payload-types.js'
99
1010import { initPayloadInt } from '../__helpers/shared/initPayloadInt.js'
1111import { devUser } from '../credentials.js'
12- import { multiTenantPostsSlug , relationshipsSlug , tenantsSlug , usersSlug } from './shared.js'
12+ import {
13+ menuSlug ,
14+ multiTenantPostsSlug ,
15+ relationshipsSlug ,
16+ tenantsSlug ,
17+ usersSlug ,
18+ } from './shared.js'
1319
1420let payload : Payload
1521let restClient : NextRESTClient
@@ -293,6 +299,31 @@ describe('@payloadcms/plugin-multi-tenant', () => {
293299 } )
294300 } )
295301
302+ describe ( 'tenant cleanup on delete' , ( ) => {
303+ it ( 'should delete a tenant that has a global collection document without hanging' , async ( ) => {
304+ const tenant = await payload . create ( {
305+ collection : tenantsSlug ,
306+ data : { name : 'Cleanup Tenant' , domain : 'cleanup-tenant.test' } ,
307+ } )
308+
309+ await payload . create ( {
310+ collection : menuSlug ,
311+ data : { tenant : tenant . id , title : 'Cleanup Menu' } ,
312+ } )
313+
314+ const deletedTenant = await payload . delete ( { id : tenant . id , collection : tenantsSlug } )
315+
316+ expect ( deletedTenant . id ) . toBe ( tenant . id )
317+
318+ const remainingTenants = await payload . find ( {
319+ collection : tenantsSlug ,
320+ where : { id : { equals : tenant . id } } ,
321+ } )
322+
323+ expect ( remainingTenants . docs ) . toHaveLength ( 0 )
324+ } , 20000 )
325+ } )
326+
296327 describe ( 'hasMany tenant field filtering' , ( ) => {
297328 it ( 'should not double-wrap tenant arrays in filterOptions' , async ( ) => {
298329 const tenant1 = await payload . create ( {
0 commit comments