@@ -106,6 +106,72 @@ public function shouldShowUser(): void
106106        $ this  ->assertEquals ($ expectedArray , $ api ->show (1 ));
107107    }
108108
109+     protected  function  getUsersMembershipsData ()
110+     {
111+         return  [
112+             [
113+                 'source_id '  => 1 ,
114+                 'source_name '  => 'Project one ' ,
115+                 'source_type '  => 'Project ' ,
116+                 'access_level '  => '20 ' ,
117+             ],
118+             [
119+                 'source_id '  => 3 ,
120+                 'source_name '  => 'Group three ' ,
121+                 'source_type '  => 'Namespace ' ,
122+                 'access_level '  => '20 ' ,
123+             ],
124+         ];
125+     }
126+ 
127+     protected  function  getUsersMembershipsRequestMock ($ path , $ expectedArray  = [], $ expectedParameters  = [])
128+     {
129+         $ api  = $ this  ->getApiMock ();
130+         $ api ->expects ($ this  ->once ())
131+             ->method ('get ' )
132+             ->with ($ path , $ expectedParameters )
133+             ->will ($ this  ->returnValue ($ expectedArray ))
134+         ;
135+ 
136+         return  $ api ;
137+     }
138+ 
139+     /** 
140+      * @test 
141+      */ 
142+     public  function  shouldShowUsersMemberships (): void 
143+     {
144+         $ expectedArray  = $ this  ->getUsersMembershipsData ();
145+ 
146+         $ api  = $ this  ->getUsersMembershipsRequestMock ('users/1/memberships ' , $ expectedArray );
147+ 
148+         $ this  ->assertEquals ($ expectedArray , $ api ->usersMemberships (1 ));
149+     }
150+ 
151+     /** 
152+      * @test 
153+      */ 
154+     public  function  shouldShowUsersMembershipsWithTypeProject (): void 
155+     {
156+         $ expectedArray  = [$ this  ->getUsersMembershipsData ()[0 ]];
157+ 
158+         $ api  = $ this  ->getUsersMembershipsRequestMock ('users/1/memberships ' , $ expectedArray , ['type '  => 'Project ' ]);
159+ 
160+         $ this  ->assertEquals ($ expectedArray , $ api ->usersMemberships (1 , ['type '  => 'Project ' ]));
161+     }
162+ 
163+     /** 
164+      * @test 
165+      */ 
166+     public  function  shouldShowUsersMembershipsWithTypeNamespace (): void 
167+     {
168+         $ expectedArray  = [$ this  ->getUsersMembershipsData ()[1 ]];
169+ 
170+         $ api  = $ this  ->getUsersMembershipsRequestMock ('users/1/memberships ' , $ expectedArray , ['type '  => 'Namespace ' ]);
171+ 
172+         $ this  ->assertEquals ($ expectedArray , $ api ->usersMemberships (1 , ['type '  => 'Namespace ' ]));
173+     }
174+ 
109175    protected  function  getUsersProjectsData ()
110176    {
111177        return  [
0 commit comments