@@ -96,6 +96,7 @@ describe('PackedItemService', () => {
9696 itemThumbnailService ,
9797 ) . createPackedItems (
9898 MOCK_DB ,
99+ actor ,
99100 items . map ( ( i ) => ( { ...resolveItemType ( i ) , creator : actor } ) ) ,
100101 resultOfMemberships ,
101102 ) ;
@@ -104,5 +105,62 @@ describe('PackedItemService', () => {
104105 // should return parent visibility, not item visibility
105106 expect ( packedItems [ 1 ] . hidden ! . id ) . toEqual ( itemVisibilities [ 1 ] . id ) ;
106107 } ) ;
108+
109+ it ( 'Return the permission for the current user' , async ( ) => {
110+ const MOCK_DB = { } as DBConnection ;
111+ const { actor, items, itemMemberships } = await seedFromJson ( {
112+ items : [
113+ {
114+ memberships : [
115+ { account : { name : 'toto' } , permission : 'admin' } ,
116+ { account : 'actor' , permission : 'read' } ,
117+ ] ,
118+ } ,
119+ ] ,
120+ } ) ;
121+ assertIsDefined ( actor ) ;
122+ assertIsMemberForTest ( actor ) ;
123+
124+ const itemVisibilityRepository = {
125+ getForManyItems : vi . fn ( ) ,
126+ } as unknown as ItemVisibilityRepository ;
127+ vi . spyOn ( itemVisibilityRepository , 'getForManyItems' ) . mockImplementation ( async ( ) => ( {
128+ data : {
129+ [ items [ 0 ] . id ] : [ ] ,
130+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
131+ } as any ,
132+ errors : [ ] ,
133+ } ) ) ;
134+
135+ const resultOfMemberships = {
136+ data : {
137+ [ items [ 0 ] . id ] : [ itemMemberships [ 0 ] , itemMemberships [ 1 ] ] ,
138+ } ,
139+ errors : [ ] ,
140+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
141+ } as any ;
142+ const itemMembershipRepository = {
143+ getForManyItems : vi . fn ( ) ,
144+ } as unknown as ItemMembershipRepository ;
145+ vi . spyOn ( itemMembershipRepository , 'getForManyItems' ) . mockImplementation (
146+ async ( ) => resultOfMemberships ,
147+ ) ;
148+
149+ const itemThumbnailService = { getUrlsByItems : vi . fn ( ) } as unknown as ItemThumbnailService ;
150+ vi . spyOn ( itemThumbnailService , 'getUrlsByItems' ) . mockImplementation ( async ( ) => ( { } ) ) ;
151+
152+ const packedItems = await new PackedItemService (
153+ itemVisibilityRepository ,
154+ itemMembershipRepository ,
155+ itemThumbnailService ,
156+ ) . createPackedItems (
157+ MOCK_DB ,
158+ actor ,
159+ items . map ( ( i ) => ( { ...resolveItemType ( i ) , creator : actor } ) ) ,
160+ resultOfMemberships ,
161+ ) ;
162+
163+ expect ( packedItems [ 0 ] . permission ) . toEqual ( 'read' ) ;
164+ } ) ;
107165 } ) ;
108166} ) ;
0 commit comments