@@ -34,9 +34,15 @@ describe('Logical Operators Without Spaces', () => {
3434 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
3535
3636 // Test various OR expressions without spaces
37- expect ( result . current . hasPermission ( 'properties.view-all||properties.view-own' ) ) . toBe ( true ) ;
38- expect ( result . current . hasPermission ( 'users.create||posts.view' ) ) . toBe ( false ) ; // Neither permission exists
39- expect ( result . current . hasPermission ( 'properties.view-all||users.create' ) ) . toBe ( true ) ; // One permission exists
37+ expect (
38+ result . current . hasPermission ( 'properties.view-all||properties.view-own' )
39+ ) . toBe ( true ) ;
40+ expect ( result . current . hasPermission ( 'users.create||posts.view' ) ) . toBe (
41+ false
42+ ) ; // Neither permission exists
43+ expect (
44+ result . current . hasPermission ( 'properties.view-all||users.create' )
45+ ) . toBe ( true ) ; // One permission exists
4046 } ) ;
4147
4248 it ( 'should handle single | without spaces around operators' , ( ) => {
@@ -45,9 +51,15 @@ describe('Logical Operators Without Spaces', () => {
4551 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
4652
4753 // Test single | expressions without spaces
48- expect ( result . current . hasPermission ( 'properties.view-all|properties.view-own' ) ) . toBe ( true ) ;
49- expect ( result . current . hasPermission ( 'properties.view-all|users.create' ) ) . toBe ( true ) ; // One permission exists
50- expect ( result . current . hasPermission ( 'users.create|posts.view' ) ) . toBe ( false ) ; // Neither permission exists
54+ expect (
55+ result . current . hasPermission ( 'properties.view-all|properties.view-own' )
56+ ) . toBe ( true ) ;
57+ expect (
58+ result . current . hasPermission ( 'properties.view-all|users.create' )
59+ ) . toBe ( true ) ; // One permission exists
60+ expect ( result . current . hasPermission ( 'users.create|posts.view' ) ) . toBe (
61+ false
62+ ) ; // Neither permission exists
5163 } ) ;
5264 } ) ;
5365
@@ -58,9 +70,15 @@ describe('Logical Operators Without Spaces', () => {
5870 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
5971
6072 // Test various AND expressions without spaces
61- expect ( result . current . hasPermission ( 'properties.view-all&&properties.view-own' ) ) . toBe ( true ) ;
62- expect ( result . current . hasPermission ( 'properties.view-all&&users.create' ) ) . toBe ( false ) ; // One permission missing
63- expect ( result . current . hasPermission ( 'users.create&&posts.view' ) ) . toBe ( false ) ; // Both permissions missing
73+ expect (
74+ result . current . hasPermission ( 'properties.view-all&&properties.view-own' )
75+ ) . toBe ( true ) ;
76+ expect (
77+ result . current . hasPermission ( 'properties.view-all&&users.create' )
78+ ) . toBe ( false ) ; // One permission missing
79+ expect ( result . current . hasPermission ( 'users.create&&posts.view' ) ) . toBe (
80+ false
81+ ) ; // Both permissions missing
6482 } ) ;
6583
6684 it ( 'should handle single & without spaces around operators' , ( ) => {
@@ -69,9 +87,15 @@ describe('Logical Operators Without Spaces', () => {
6987 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
7088
7189 // Test single & expressions without spaces
72- expect ( result . current . hasPermission ( 'properties.view-all&properties.view-own' ) ) . toBe ( true ) ;
73- expect ( result . current . hasPermission ( 'properties.view-all&users.create' ) ) . toBe ( false ) ; // One permission missing
74- expect ( result . current . hasPermission ( 'users.create&posts.view' ) ) . toBe ( false ) ; // Both permissions missing
90+ expect (
91+ result . current . hasPermission ( 'properties.view-all&properties.view-own' )
92+ ) . toBe ( true ) ;
93+ expect (
94+ result . current . hasPermission ( 'properties.view-all&users.create' )
95+ ) . toBe ( false ) ; // One permission missing
96+ expect ( result . current . hasPermission ( 'users.create&posts.view' ) ) . toBe (
97+ false
98+ ) ; // Both permissions missing
7599 } ) ;
76100 } ) ;
77101
@@ -82,9 +106,19 @@ describe('Logical Operators Without Spaces', () => {
82106 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
83107
84108 // Test complex expressions without spaces
85- expect ( result . current . hasPermission ( '(properties.view-all||users.create)&&admin.access' ) ) . toBe ( true ) ;
86- expect ( result . current . hasPermission ( '(properties.view-all||users.create)&&admin.delete' ) ) . toBe ( false ) ;
87- expect ( result . current . hasPermission ( '(users.create||posts.view)&&admin.access' ) ) . toBe ( false ) ;
109+ expect (
110+ result . current . hasPermission (
111+ '(properties.view-all||users.create)&&admin.access'
112+ )
113+ ) . toBe ( true ) ;
114+ expect (
115+ result . current . hasPermission (
116+ '(properties.view-all||users.create)&&admin.delete'
117+ )
118+ ) . toBe ( false ) ;
119+ expect (
120+ result . current . hasPermission ( '(users.create||posts.view)&&admin.access' )
121+ ) . toBe ( false ) ;
88122 } ) ;
89123
90124 it ( 'should handle mixed operators without spaces' , ( ) => {
@@ -93,34 +127,72 @@ describe('Logical Operators Without Spaces', () => {
93127 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
94128
95129 // Test mixed operators without spaces
96- expect ( result . current . hasPermission ( 'properties.view-all&&admin.access||reports.read' ) ) . toBe ( true ) ;
97- expect ( result . current . hasPermission ( 'properties.view-all&admin.access|reports.read' ) ) . toBe ( true ) ;
98- expect ( result . current . hasPermission ( 'users.create&&admin.access||reports.read' ) ) . toBe ( true ) ; // reports.read exists
130+ expect (
131+ result . current . hasPermission (
132+ 'properties.view-all&&admin.access||reports.read'
133+ )
134+ ) . toBe ( true ) ;
135+ expect (
136+ result . current . hasPermission (
137+ 'properties.view-all&admin.access|reports.read'
138+ )
139+ ) . toBe ( true ) ;
140+ expect (
141+ result . current . hasPermission ( 'users.create&&admin.access||reports.read' )
142+ ) . toBe ( true ) ; // reports.read exists
99143 } ) ;
100144 } ) ;
101145
102146 describe ( 'Permission names with hyphens' , ( ) => {
103147 it ( 'should handle permission names with hyphens in expressions without spaces' , ( ) => {
104- mockPageProps ( [ 'user-profile.edit' , 'api-access.read' , 'system-config.update' ] ) ;
148+ mockPageProps ( [
149+ 'user-profile.edit' ,
150+ 'api-access.read' ,
151+ 'system-config.update' ,
152+ ] ) ;
105153
106154 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
107155
108156 // Test hyphenated permission names without spaces
109- expect ( result . current . hasPermission ( 'user-profile.edit||api-access.read' ) ) . toBe ( true ) ;
110- expect ( result . current . hasPermission ( 'user-profile.edit&&api-access.read' ) ) . toBe ( true ) ;
111- expect ( result . current . hasPermission ( 'user-profile.edit&&system-config.update' ) ) . toBe ( true ) ;
112- expect ( result . current . hasPermission ( 'user-profile.edit&&users.create' ) ) . toBe ( false ) ; // users.create doesn't exist
157+ expect (
158+ result . current . hasPermission ( 'user-profile.edit||api-access.read' )
159+ ) . toBe ( true ) ;
160+ expect (
161+ result . current . hasPermission ( 'user-profile.edit&&api-access.read' )
162+ ) . toBe ( true ) ;
163+ expect (
164+ result . current . hasPermission ( 'user-profile.edit&&system-config.update' )
165+ ) . toBe ( true ) ;
166+ expect (
167+ result . current . hasPermission ( 'user-profile.edit&&users.create' )
168+ ) . toBe ( false ) ; // users.create doesn't exist
113169 } ) ;
114170
115171 it ( 'should handle complex hyphenated permission expressions' , ( ) => {
116- mockPageProps ( [ 'user-profile.edit' , 'api-access.read' , 'admin-panel.access' ] ) ;
172+ mockPageProps ( [
173+ 'user-profile.edit' ,
174+ 'api-access.read' ,
175+ 'admin-panel.access' ,
176+ ] ) ;
117177
118178 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
119179
120180 // Test complex expressions with hyphenated permissions
121- expect ( result . current . hasPermission ( '(user-profile.edit||api-access.read)&&admin-panel.access' ) ) . toBe ( true ) ;
122- expect ( result . current . hasPermission ( 'user-profile.edit&&(api-access.read||system-config.update)' ) ) . toBe ( true ) ;
123- expect ( result . current . hasPermission ( '(user-profile.edit||api-access.read)&&system-config.update' ) ) . toBe ( false ) ;
181+ expect (
182+ result . current . hasPermission (
183+ '(user-profile.edit||api-access.read)&&admin-panel.access'
184+ )
185+ ) . toBe ( true ) ;
186+ expect (
187+ result . current . hasPermission (
188+ 'user-profile.edit&&(api-access.read||system-config.update)'
189+ )
190+ ) . toBe ( true ) ;
191+ expect (
192+ result . current . hasPermission (
193+ '(user-profile.edit||api-access.read)&&system-config.update'
194+ )
195+ ) . toBe ( false ) ;
124196 } ) ;
125197 } ) ;
126198
@@ -131,12 +203,24 @@ describe('Logical Operators Without Spaces', () => {
131203 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
132204
133205 // Test boolean literals without spaces
134- expect ( result . current . hasPermission ( 'true||properties.view-all' ) ) . toBe ( true ) ;
135- expect ( result . current . hasPermission ( 'false||properties.view-all' ) ) . toBe ( true ) ;
136- expect ( result . current . hasPermission ( 'true&&properties.view-all' ) ) . toBe ( true ) ;
137- expect ( result . current . hasPermission ( 'false&&properties.view-all' ) ) . toBe ( false ) ;
138- expect ( result . current . hasPermission ( 'properties.view-all||true' ) ) . toBe ( true ) ;
139- expect ( result . current . hasPermission ( 'properties.view-all&&false' ) ) . toBe ( false ) ;
206+ expect ( result . current . hasPermission ( 'true||properties.view-all' ) ) . toBe (
207+ true
208+ ) ;
209+ expect ( result . current . hasPermission ( 'false||properties.view-all' ) ) . toBe (
210+ true
211+ ) ;
212+ expect ( result . current . hasPermission ( 'true&&properties.view-all' ) ) . toBe (
213+ true
214+ ) ;
215+ expect ( result . current . hasPermission ( 'false&&properties.view-all' ) ) . toBe (
216+ false
217+ ) ;
218+ expect ( result . current . hasPermission ( 'properties.view-all||true' ) ) . toBe (
219+ true
220+ ) ;
221+ expect ( result . current . hasPermission ( 'properties.view-all&&false' ) ) . toBe (
222+ false
223+ ) ;
140224 } ) ;
141225 } ) ;
142226
@@ -147,8 +231,16 @@ describe('Logical Operators Without Spaces', () => {
147231 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
148232
149233 // These should be handled gracefully (though they're not valid expressions)
150- expect ( result . current . hasPermission ( 'properties.view-all||||properties.view-own' ) ) . toBe ( false ) ; // Invalid
151- expect ( result . current . hasPermission ( 'properties.view-all&&&&properties.view-own' ) ) . toBe ( false ) ; // Invalid
234+ expect (
235+ result . current . hasPermission (
236+ 'properties.view-all||||properties.view-own'
237+ )
238+ ) . toBe ( false ) ; // Invalid
239+ expect (
240+ result . current . hasPermission (
241+ 'properties.view-all&&&&properties.view-own'
242+ )
243+ ) . toBe ( false ) ; // Invalid
152244 } ) ;
153245
154246 it ( 'should handle expressions starting or ending with operators' , ( ) => {
@@ -166,7 +258,11 @@ describe('Logical Operators Without Spaces', () => {
166258
167259 describe ( 'Comparison with spaced expressions' , ( ) => {
168260 it ( 'should produce the same results with and without spaces' , ( ) => {
169- mockPageProps ( [ 'properties.view-all' , 'properties.view-own' , 'admin.access' ] ) ;
261+ mockPageProps ( [
262+ 'properties.view-all' ,
263+ 'properties.view-own' ,
264+ 'admin.access' ,
265+ ] ) ;
170266
171267 const { result } = renderHook ( ( ) => usePermissions ( ) ) ;
172268
0 commit comments