예제 #1
0
파일: NQMTest.php 프로젝트: cocur/nqm
 /**
  * @test
  *
  * @covers Cocur\NQM\NQM::execute()
  */
 public function convertParametersShouldNotAddColonIfItIsThere()
 {
     $this->pdo->mock('SELECT * FROM table WHERE key = :key;', [[':key' => 'foo']]);
     $this->queryLoader->shouldReceive('getQuery')->with('foo')->once()->andReturn('SELECT * FROM table WHERE key = :key;');
     $stmt = $this->nqm->execute('foo', [':key' => 'foo']);
     $this->assertInstanceOf('\\PDOStatement', $stmt);
     $this->assertEquals([':key' => 'foo'], $stmt->fetch(\PDO::FETCH_ASSOC));
 }
예제 #2
0
 /**
  * @test
  * @dataProvider boolProvider
  */
 public function queryRaw($master)
 {
     $sql = "SELECT * FROM abc WHERE def = ? && ghi = ?";
     $params = [123, 456];
     $connect_fx = $master ? 'getMaster' : 'getReplica';
     $connection = $this->_getDisabledMock(ConnectionService::class, [$connect_fx]);
     $adapter = new PdoAdapter($connection);
     $results = $this->_mock_results;
     $db = new PPDO();
     $db->mock($sql, $results);
     $connection->expects($this->once())->method($connect_fx)->will($this->returnValue($db));
     $statement = $master ? $adapter->queryMaster($sql, $params) : $adapter->query($sql, $params);
     // NOTE: fetchAll is being run against raw PDOStatement object, not Adapter wrapper fetchAll method
     $this->assertSame($results, $statement->fetchAll(\PDO::FETCH_ASSOC));
 }
예제 #3
0
 /**
  * @param string $sql
  * @param array  $params
  * @param mixed  $results
  * @param bool   $master
  *
  * @return mock
  */
 private function _setupFetch($sql, array $params, $results, $master)
 {
     $connection = $this->_getDisabledMock(ConnectionService::class);
     $target = $this->_getAbstractMock(AdapterAbstract::class, ['query', 'queryMaster'], [$connection]);
     $adapter = new PPDO();
     $adapter->mock($sql, $results);
     $statement = $adapter->prepare($sql);
     $statement->execute($params);
     $target->expects($this->once())->method('query')->with($sql, $params, $master)->will($this->returnValue($statement));
     return $target;
 }