/** * * @group ZF-10705 */ public function testCreatesQueryBasedOnNamedOrPositionalAvailablity() { AbstractTable::setDefaultAdapter(null); $this->_adapterHasResult->setSupportsParametersValues(array('named' => false, 'positional' => true)); $validator = new RecordExistsValidator('users', 'field1', null, $this->_adapterHasResult); $validator->isValid('foo'); $wherePart = $validator->getSelect()->getPart('where'); $this->assertEquals('("field1" = ?)', $wherePart[0]); $this->_adapterHasResult->setSupportsParametersValues(array('named' => true, 'positional' => true)); $validator = new RecordExistsValidator('users', 'field1', null, $this->_adapterHasResult); $validator->isValid('foo'); $wherePart = $validator->getSelect()->getPart('where'); $this->assertEquals('("field1" = :value)', $wherePart[0]); }
/** * @cover Zend\Validator\Db\RecordExists::getSelect * @group ZF2-4521 */ public function testGetSelectWithSameValidatorTwice() { $validator = new RecordExists(array('table' => 'users', 'schema' => 'my'), 'field1', array('field' => 'foo', 'value' => 'bar'), $this->getMockHasResult()); $select = $validator->getSelect(); $this->assertInstanceOf('Zend\\Db\\Sql\\Select', $select); $this->assertEquals('SELECT "my"."users"."field1" AS "field1" FROM "my"."users" WHERE "field1" = \'\' AND "foo" != \'bar\'', $select->getSqlString(new TrustingSql92Platform())); // same validator instance with changing properties $validator->setTable('othertable'); $validator->setSchema('otherschema'); $validator->setField('fieldother'); $validator->setExclude(array('field' => 'fieldexclude', 'value' => 'fieldvalueexclude')); $select = $validator->getSelect(); $this->assertInstanceOf('Zend\\Db\\Sql\\Select', $select); $this->assertEquals('SELECT "otherschema"."othertable"."fieldother" AS "fieldother" FROM "otherschema"."othertable" WHERE "fieldother" = \'\' AND "fieldexclude" != \'fieldvalueexclude\'', $select->getSqlString(new TrustingSql92Platform())); }
/** * @testdox Zend\Validator\Db\RecordExists::getSelect */ public function testGetSelect() { $validator = new RecordExists( array( 'table' => 'users', 'schema' => 'my' ), 'field1', array( 'field' => 'foo', 'value' => 'bar' ), $this->getMockHasResult() ); $select = $validator->getSelect(); $this->assertInstanceOf('Zend\Db\Sql\Select', $select); $this->assertEquals('SELECT "my"."users"."field1" AS "field1" FROM "my"."users" WHERE "field1" = \'\' AND "foo" != \'bar\'', $select->getSqlString()); $sql = new Sql($this->getMockHasResult()); $statement = $sql->prepareStatementForSqlObject($select); $parameters = $statement->getParameterContainer(); $this->assertNull($parameters['where1']); $this->assertEquals($parameters['where2'], 'bar'); }
/** * Test that we don't get a mix of positional and named parameters * @group ZF2-502 */ public function testSelectDoesNotMixPositionalAndNamedParameters() { if (!extension_loaded('sqlite3')) { $this->markTestSkipped('Relies on SQLite extension'); } $adapter = new Adapter(array('driver' => 'Pdo_Sqlite', 'database' => 'sqlite::memory:')); $validator = new RecordExists(array('table' => 'users', 'schema' => 'my'), 'field1', array('field' => 'foo', 'value' => 'bar'), $adapter); $select = $validator->getSelect(); $this->assertInstanceOf('Zend\\Db\\Sql\\Select', $select); $string = $select->getSqlString(); if (preg_match('/:[a-zA-Z]+/', $string)) { $this->assertNotContains(' != ?', $string); } else { $this->assertContains(' != ?', $string); } }
/** * @group ZF-10642 */ public function testCreatesQueryBasedOnNamedOrPositionalAvailability() { $this->markTestIncomplete('This test (and code) need to be refactored to the new Zend\\Db'); $adapterHasResult = $this->getMockHasResult(); //$adapterHasResult->setSupportsParametersValues(array('named' => false, 'positional' => true)); $validator = new RecordExists('users', 'field1', null, $adapterHasResult); $validator->isValid('foo'); $wherePart = $validator->getSelect()->getPart('where'); $this->assertEquals('("field1" = ?)', $wherePart[0]); //$adapterHasResult->setSupportsParametersValues(array('named' => true, 'positional' => true)); $validator = new RecordExists('users', 'field1', null, $adapterHasResult); $validator->isValid('foo'); $wherePart = $validator->getSelect()->getPart('where'); $this->assertEquals('("field1" = :value)', $wherePart[0]); }