@@ -60,11 +60,24 @@ public function testCreateAdministratorWithValidDataReturnsCreated(): void
6060 'loginName ' => 'new.admin ' ,
6161 'password ' => 'NewPassword123! ' ,
6262 'email ' => 'new.admin@example.com ' ,
63+ 'privileges ' => [
64+ 'subscribers ' => true ,
65+ 'campaigns ' => false ,
66+ 'statistics ' => true ,
67+ 'settings ' => false ,
68+ ],
6369 ]));
6470
6571 $ this ->assertHttpCreated ();
6672 $ data = $ this ->getDecodedJsonResponseContent ();
6773 self ::assertSame ('new.admin ' , $ data ['login_name ' ]);
74+
75+ $ administrator = $ this ->administratorRepository ->findOneBy (['loginName ' => 'new.admin ' ]);
76+ $ privileges = $ administrator ->getPrivileges ()->all ();
77+ self ::assertTrue ($ privileges ['subscribers ' ]);
78+ self ::assertFalse ($ privileges ['campaigns ' ]);
79+ self ::assertTrue ($ privileges ['statistics ' ]);
80+ self ::assertFalse ($ privileges ['settings ' ]);
6881 }
6982
7083 public function testUpdateAdministratorReturnsOk (): void
@@ -73,11 +86,24 @@ public function testUpdateAdministratorReturnsOk(): void
7386
7487 $ this ->authenticatedJsonRequest ('put ' , '/api/v2/administrators/1 ' , [], [], [], json_encode ([
7588 'email ' => 'updated@example.com ' ,
89+ 'privileges ' => [
90+ 'subscribers ' => false ,
91+ 'campaigns ' => true ,
92+ 'statistics ' => false ,
93+ 'settings ' => true ,
94+ ],
7695 ]));
7796
7897 $ this ->assertHttpOkay ();
7998 $ data = $ this ->getDecodedJsonResponseContent ();
8099 self ::assertSame ('updated@example.com ' , $ data ['email ' ]);
100+
101+ $ administrator = $ this ->administratorRepository ->find (1 );
102+ $ privileges = $ administrator ->getPrivileges ()->all ();
103+ self ::assertFalse ($ privileges ['subscribers ' ]);
104+ self ::assertTrue ($ privileges ['campaigns ' ]);
105+ self ::assertFalse ($ privileges ['statistics ' ]);
106+ self ::assertTrue ($ privileges ['settings ' ]);
81107 }
82108
83109 public function testDeleteAdministratorReturnsNoContent (): void
@@ -116,4 +142,32 @@ public function testPutAdministratorWithInvalidIdReturns404(): void
116142
117143 $ this ->assertHttpNotFound ();
118144 }
145+
146+ public function testUpdateAdministratorPrivilegesOnly (): void
147+ {
148+ $ this ->loadFixtures ([AdministratorFixture::class]);
149+
150+ $ originalAdmin = $ this ->administratorRepository ->find (1 );
151+ $ originalEmail = $ originalAdmin ->getEmail ();
152+
153+ $ this ->authenticatedJsonRequest ('put ' , '/api/v2/administrators/1 ' , [], [], [], json_encode ([
154+ 'privileges ' => [
155+ 'subscribers ' => true ,
156+ 'campaigns ' => true ,
157+ 'statistics ' => true ,
158+ 'settings ' => true ,
159+ ],
160+ ]));
161+
162+ $ this ->assertHttpOkay ();
163+
164+ $ updatedAdmin = $ this ->administratorRepository ->find (1 );
165+ self ::assertSame ($ originalEmail , $ updatedAdmin ->getEmail ());
166+
167+ $ privileges = $ updatedAdmin ->getPrivileges ()->all ();
168+ self ::assertTrue ($ privileges ['subscribers ' ]);
169+ self ::assertTrue ($ privileges ['campaigns ' ]);
170+ self ::assertTrue ($ privileges ['statistics ' ]);
171+ self ::assertTrue ($ privileges ['settings ' ]);
172+ }
119173}
0 commit comments