public function testUpdate() { list($conn, $query) = $this->getMocks(); $mockRegistered = m::mock('Xpressengine\\Permission\\Registered'); $mockRegistered->id = 1; $mockRegistered->shouldReceive('getOriginal')->andReturn(['id' => 1, 'type' => 'instance', 'name' => 'board.notice', 'grants' => '{"access":{"type":"power","value":"guest"},"create":{"type":"power","value":"super"}}']); $mockRegistered->shouldReceive('diff')->andReturn(['grants' => '{"access":{"type":"power","value":"guest"},"create":{"type":"power","value":"member"}}']); $conn->shouldReceive('table')->andReturn($query); $query->shouldReceive('where')->once()->with('id', 1)->andReturn($query); $query->shouldReceive('update')->once()->with(m::on(function ($array) { return $array['grants'] === '{"access":{"type":"power","value":"guest"},"create":{"type":"power","value":"member"}}'; }))->andReturnNull(); $instance = new PermissionRepository($conn); $registered = $instance->update($mockRegistered); $this->assertEquals(1, $registered->id); $this->assertEquals(['type' => 'power', 'value' => 'member'], $registered['create']); $this->assertEquals('board.notice', $registered->name); $this->assertEquals('instance', $registered->type); }
/** * Register grants information * * @param string $type permission type * @param string $name target name * @param Grant $grant grant instance * @param string $siteKey site key * @return Registered */ public function register($type, $name, Grant $grant, $siteKey = 'default') { $registered = $this->findRegistered($type, $name, true, $siteKey); $registered->setGrant($grant); if (empty($registered->getOriginal()) === true) { $registered = $this->repo->insert($registered); } else { $registered = $this->repo->update($registered); } return $registered; }
/** * Update register information * * @param Permission $item permission instance * @return Permission */ public function update(Permission $item) { $item = $this->repo->update($item); $this->cache->put($this->getCacheKey($item->siteKey, $item->name), $item); return $item; }
/** * Register permission information * * @param string $name permission name * @param Grant $grant grant instance * @param string $siteKey site key name * @return Permission */ public function register($name, Grant $grant, $siteKey = 'default') { $permission = $this->getOrNew($name, $siteKey); $permission->setGrant($grant); if ($permission->exists !== true) { return $this->repo->insert($permission); } return $this->repo->update($permission); }
/** * Update register information * * @param Permission $item permission instance * @return Permission */ public function update(Permission $item) { $item = $this->repo->update($item); $this->bag[$this->getKey($item->siteKey, $item->name)] = $item; return $item; }
/** * Register permission information * * @param string $name permission name * @param Grant $grant grant instance * @param string $siteKey site key name * @return Permission */ public function register($name, Grant $grant, $siteKey = 'default') { $permission = $this->getOrNew($name, $siteKey); if (strrpos($name, '.') !== false) { $pname = substr($name, 0, strrpos($name, '.')); if (!$this->repo->findByName($siteKey, $pname)) { throw new NoParentException(['name' => $name]); } } $permission->setGrant($grant); if ($permission->exists !== true) { return $this->repo->insert($permission); } return $this->repo->update($permission); }
/** * Update register information * * @param Permission $item permission instance * @return Permission */ public function update(Permission $item) { $this->erase($item->siteKey, $item->name); return $this->repo->update($item); }