getPermissionsToRemove( [ 'p1' => ['READ'], 'p2' => ['READ'], 'p3' => ['READ', 'WRITE', 'GRANT'], 'p4' => ['READ', 'WRITE', 'GRANT'], ], [ 'remove' => [ 'p2' => ['READ', 'WRITE'], 'p3' => ['READ'], 'p4' => ['WRITE'], ] ] ); $this->assertEquals( [ 'p2' => ['READ'], 'p3' => ['READ', 'WRITE', 'GRANT'], 'p4' => ['WRITE', 'GRANT'], ], $result ); } public function testGetPermissionsToAdd(): void { $strategy = new SavePermissionsStrategy(); $result = $strategy->getPermissionsToAdd( [ 'p1' => ['READ'], 'p2' => ['READ'], 'p3' => ['READ', 'WRITE', 'GRANT'], 'p6' => ['READ'], ], [ 'add' => [ 'p2' => ['READ', 'WRITE'], 'p3' => ['READ'], 'p4' => ['WRITE'], 'p5' => ['GRANT'], 'p6' => ['GRANT'], ] ] ); $this->assertEquals( [ 'p2' => ['WRITE'], 'p4' => ['WRITE', 'READ'], 'p5' => ['GRANT', 'WRITE', 'READ'], 'p6' => ['GRANT', 'WRITE'], ], $result ); } public function testNormalizeRequest(): void { $strategy = new SavePermissionsStrategy(); $result = $strategy->normalizeRequest( [ 'p1' => ['READ'], 'p2' => ['READ'], 'p3' => ['READ', 'WRITE', 'GRANT'], ], [ 'p1' => ['READ', 'WRITE'], 'p2' => ['READ'], 'p3' => ['READ', 'WRITE'], ] ); $this->assertEquals( [ 'add' => [ 'p1' => ['WRITE'], ], 'remove' => [ 'p3' => ['GRANT'] ] ], $result ); } }