@@ -41,13 +41,19 @@ const mockMembers = [
4141 { id : 'member_2' , user : { name : null , email : 'bob@test.com' } } ,
4242] ;
4343
44+ // Owner permissions include organization:delete; admin does not
45+ const OWNER_PERMISSIONS = {
46+ ...ADMIN_PERMISSIONS ,
47+ organization : [ 'read' , 'update' , 'delete' ] ,
48+ } ;
49+
4450describe ( 'TransferOwnership permission gating' , ( ) => {
4551 beforeEach ( ( ) => {
4652 vi . clearAllMocks ( ) ;
4753 } ) ;
4854
4955 it ( 'renders nothing when user is not the owner' , ( ) => {
50- setMockPermissions ( ADMIN_PERMISSIONS ) ;
56+ setMockPermissions ( OWNER_PERMISSIONS ) ;
5157
5258 const { container } = render (
5359 < TransferOwnership members = { mockMembers } isOwner = { false } /> ,
@@ -56,7 +62,17 @@ describe('TransferOwnership permission gating', () => {
5662 expect ( container . innerHTML ) . toBe ( '' ) ;
5763 } ) ;
5864
59- it ( 'renders nothing when user lacks organization:delete permission' , ( ) => {
65+ it ( 'renders nothing when user lacks organization:delete permission (admin role)' , ( ) => {
66+ setMockPermissions ( ADMIN_PERMISSIONS ) ;
67+
68+ const { container } = render (
69+ < TransferOwnership members = { mockMembers } isOwner = { true } /> ,
70+ ) ;
71+
72+ expect ( container . innerHTML ) . toBe ( '' ) ;
73+ } ) ;
74+
75+ it ( 'renders nothing when user lacks organization:delete permission (auditor role)' , ( ) => {
6076 setMockPermissions ( AUDITOR_PERMISSIONS ) ;
6177
6278 const { container } = render (
@@ -77,15 +93,16 @@ describe('TransferOwnership permission gating', () => {
7793 } ) ;
7894
7995 it ( 'renders the transfer ownership card when user is owner with organization:delete permission' , ( ) => {
80- setMockPermissions ( ADMIN_PERMISSIONS ) ;
96+ setMockPermissions ( OWNER_PERMISSIONS ) ;
8197
8298 render ( < TransferOwnership members = { mockMembers } isOwner = { true } /> ) ;
8399
84- expect ( screen . getByText ( 'Transfer ownership' ) ) . toBeInTheDocument ( ) ;
100+ const elements = screen . getAllByText ( 'Transfer ownership' ) ;
101+ expect ( elements . length ) . toBeGreaterThanOrEqual ( 1 ) ;
85102 } ) ;
86103
87104 it ( 'shows the "no members" message when members array is empty and user has permission' , ( ) => {
88- setMockPermissions ( ADMIN_PERMISSIONS ) ;
105+ setMockPermissions ( OWNER_PERMISSIONS ) ;
89106
90107 render ( < TransferOwnership members = { [ ] } isOwner = { true } /> ) ;
91108
@@ -95,7 +112,7 @@ describe('TransferOwnership permission gating', () => {
95112 } ) ;
96113
97114 it ( 'renders the card content when owner has permission and members exist' , ( ) => {
98- setMockPermissions ( ADMIN_PERMISSIONS ) ;
115+ setMockPermissions ( OWNER_PERMISSIONS ) ;
99116
100117 render ( < TransferOwnership members = { mockMembers } isOwner = { true } /> ) ;
101118
0 commit comments