예제 #1
0
 public function testExecutePersist()
 {
     $fileIn = tempnam(sys_get_temp_dir(), 'PgOidIn');
     file_put_contents($fileIn, 'content');
     $lo = new PgLargeObject($fileIn);
     $this->assertTrue($lo->isNew());
     $this->assertTrue($lo->isChanged());
     $this->assertFalse($lo->isDeleted());
     $this->assertSame($lo->getFilePath(), $fileIn);
     $task = new Persist($this->entityManager->recordManager);
     $task->setObject($lo);
     $this->assertTrue($task->execute($this->db));
     $this->assertFalse($lo->isNew());
     $this->assertFalse($lo->isChanged());
     $this->assertFalse($lo->isDeleted());
     $this->assertNull($lo->getFilePath());
     // the task has been inserted correctly
     $this->assertTrue(is_numeric($lo->getOid()));
     $this->db->query(new PgQuery('BEGIN'));
     $fileOut = tempnam(sys_get_temp_dir(), 'PgOidOut');
     pg_lo_export($this->db->resource->get(), $lo->getOid(), $fileOut);
     $this->db->query(new PgQuery('COMMIT'));
     $this->assertFileEquals($fileIn, $fileOut);
     pg_lo_unlink($this->db->resource->get(), $lo->getOid());
 }
예제 #2
0
 public function testConstructWithOid()
 {
     $oid = new Oid(12345678, $this->connectionFactory->get('RW'));
     $lo = new PgLargeObject($oid);
     $this->assertSame($lo->getOid(), $oid);
     $this->assertFalse($lo->isNew(), false);
     $this->assertFalse($lo->isChanged(), false);
 }