public function testInsert()
{
list($conn, $query) = $this->getMocks();
$mockRegistered = m::mock('Xpressengine\\Permission\\Registered');
$mockRegistered->shouldReceive('getOriginal')->andReturn([]);
$mockRegistered->shouldReceive('getAttributes')->andReturn(['type' => 'instance', 'name' => 'board.notice', 'grants' => '{"access":{"type":"power","value":"guest"},"create":{"type":"power","value":"member"}}']);
$conn->shouldReceive('table')->andReturn($query);
$query->shouldReceive('insertGetId')->once()->with(m::on(function ($array) {
return $array['type'] === 'instance' && $array['name'] === 'board.notice' && $array['grants'] === '{"access":{"type":"power","value":"guest"},"create":{"type":"power","value":"member"}}';
}))->andReturn(1);
$instance = new PermissionRepository($conn);
$registered = $instance->insert($mockRegistered);
$this->assertEquals(1, $registered->id);
$this->assertEquals(['type' => 'power', 'value' => 'guest'], $registered['access']);
$this->assertEquals('board.notice', $registered->name);
$this->assertEquals('instance', $registered->type);
}