public function testFindByTypeAndNameRetunsRegistered()
 {
     list($conn, $query) = $this->getMocks();
     $conn->shouldReceive('table')->andReturn($query);
     $query->shouldReceive('where')->once()->with('siteKey', 'default')->andReturn($query);
     $query->shouldReceive('where')->once()->with('name', 'board.notice')->andReturn($query);
     $query->shouldReceive('where')->once()->with('type', 'instance')->andReturn($query);
     $query->shouldReceive('first')->once()->withNoArgs()->andReturn((object) ['id' => 1, 'type' => 'instance', 'name' => 'board.notice', 'grants' => '{"access":{"type":"power","value":"guest"},"create":{"type":"power","value":"member"},"read":{"type":"power","value":"guest"},"update":{"type":"group","value":["group_id_1","group_id_2"]},"delete":{"type":"group","value":["group_id_1","group_id_2"]}}']);
     $instance = new PermissionRepository($conn);
     $registered = $instance->findByTypeAndName('default', 'instance', 'board.notice');
     $this->assertInstanceOf('Xpressengine\\Permission\\Registered', $registered);
     $this->assertEquals(['type' => 'power', 'value' => 'guest'], $registered['access']);
     $this->assertEquals('board.notice', $registered->name);
     $this->assertTrue(isset($registered['create']));
     $keys = '';
     $comma = '';
     foreach ($registered as $key => $value) {
         $keys .= $comma . $key;
         $comma = ',';
     }
     $this->assertEquals('access,create,read,update,delete', $keys);
 }
示例#2
0
 /**
  * Move entity hierarchy to new parent or root
  *
  * @param Registered  $registered registered object
  * @param string|null $to         to registered prefix
  *
  * @return void
  * @throws InvalidArgumentException
  */
 public function move(Registered $registered, $to = null)
 {
     $toParent = $to !== null ? $this->repo->findByTypeAndName($registered->siteKey, $registered->type, $to) : null;
     if ($to !== null && $toParent === null || $toParent !== null && $registered->type != $toParent->type) {
         throw new InvalidArgumentException();
     }
     $parent = $registered->getParent();
     if ($parent === null) {
         if ($registered->getDepth() !== 1) {
             throw new InvalidArgumentException();
         }
         $this->repo->affiliate($registered, $to);
     } else {
         $this->repo->foster($registered, $to);
     }
 }