From baf09de8f8a1376c3617aeffe54d37be80cfef61 Mon Sep 17 00:00:00 2001 From: zYne <zYne@625475ce-881a-0410-a577-b389adb331d8> Date: Sat, 13 Oct 2007 19:22:54 +0000 Subject: [PATCH] added some new search tests and fixed hydration tests --- tests/HydrateTestCase.php | 4 +- tests/Search/QueryTestCase.php | 94 +++++++++++++++++----------------- tests/SearchTestCase.php | 46 ++++++++++++++++- 3 files changed, 93 insertions(+), 51 deletions(-) diff --git a/tests/HydrateTestCase.php b/tests/HydrateTestCase.php index 663cd658e..6d44edeee 100644 --- a/tests/HydrateTestCase.php +++ b/tests/HydrateTestCase.php @@ -60,7 +60,7 @@ class Doctrine_Hydrate_TestCase extends Doctrine_UnitTestCase public function testHydrateHooks() { $user = new User(); - $user->getTable()->addListener(new HydrationListener); + $user->getTable()->addRecordListener(new HydrationListener); $user->name = 'zYne'; $user->save(); @@ -73,7 +73,7 @@ class Doctrine_Hydrate_TestCase extends Doctrine_UnitTestCase $this->assertEqual($user->password, 'DEFAULT PASS'); } } -class HydrationListener extends Doctrine_EventListener +class HydrationListener extends Doctrine_Record_Listener { public function preHydrate(Doctrine_Event $event) { diff --git a/tests/Search/QueryTestCase.php b/tests/Search/QueryTestCase.php index 8acbf87f7..fd601ba5a 100644 --- a/tests/Search/QueryTestCase.php +++ b/tests/Search/QueryTestCase.php @@ -63,8 +63,8 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('doctrine AND orm'); - $sql = 'search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' - . 'AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?)'; + $sql = 'id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' + . 'AND id IN (SELECT id FROM search_test_index WHERE keyword = ?)'; $this->assertEqual($ret, $sql); } @@ -74,7 +74,7 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('((doctrine OR orm) AND dbal) OR database'); - $sql = '(search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?)) OR keyword = ?'; + $sql = '(id IN (SELECT id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND id IN (SELECT id FROM search_test_index WHERE keyword = ?)) OR keyword = ?'; $this->assertEqual($ret, $sql); } @@ -84,7 +84,7 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('doctrine OR orm AND dbal'); - $sql = 'keyword = ? OR search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?)'; + $sql = 'keyword = ? OR id IN (SELECT id FROM search_test_index WHERE keyword = ?) AND id IN (SELECT id FROM search_test_index WHERE keyword = ?)'; $this->assertEqual($ret, $sql); } @@ -94,7 +94,7 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('(doctrine OR orm) AND dbal'); - $sql = 'search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?)'; + $sql = 'id IN (SELECT id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND id IN (SELECT id FROM search_test_index WHERE keyword = ?)'; $this->assertEqual($ret, $sql); } @@ -104,7 +104,7 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('(doctrine OR orm) dbal'); - $sql = 'search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?)'; + $sql = 'id IN (SELECT id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND id IN (SELECT id FROM search_test_index WHERE keyword = ?)'; $this->assertEqual($ret, $sql); } @@ -114,7 +114,7 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('(((doctrine OR orm) AND dbal) OR database) AND rdbms'); - $sql = '((search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?)) OR keyword = ?) AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?)'; + $sql = '((id IN (SELECT id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND id IN (SELECT id FROM search_test_index WHERE keyword = ?)) OR keyword = ?) AND id IN (SELECT id FROM search_test_index WHERE keyword = ?)'; $this->assertEqual($ret, $sql); } @@ -124,7 +124,7 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('rdbms (dbal OR database)'); - $sql = 'search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ? OR keyword = ?)'; + $sql = 'id IN (SELECT id FROM search_test_index WHERE keyword = ?) AND id IN (SELECT id FROM search_test_index WHERE keyword = ? OR keyword = ?)'; $this->assertEqual($ret, $sql); } @@ -134,7 +134,7 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('rdbms (((doctrine OR orm) AND dbal) OR database)'); - $sql = 'search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) AND ((search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?)) OR keyword = ?)'; + $sql = 'id IN (SELECT id FROM search_test_index WHERE keyword = ?) AND ((id IN (SELECT id FROM search_test_index WHERE keyword = ? OR keyword = ?) AND id IN (SELECT id FROM search_test_index WHERE keyword = ?)) OR keyword = ?)'; $this->assertEqual($ret, $sql); } @@ -144,8 +144,8 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('rdbms -doctrine'); - $sql = 'search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) AND ' - . 'search_test_id NOT IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?)'; + $sql = 'id IN (SELECT id FROM search_test_index WHERE keyword = ?) AND ' + . 'id NOT IN (SELECT id FROM search_test_index WHERE keyword = ?)'; $this->assertEqual($ret, $sql); } @@ -155,8 +155,8 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('rdbms doctrine OR database'); - $sql = 'search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) AND ' - . 'search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' + $sql = 'id IN (SELECT id FROM search_test_index WHERE keyword = ?) AND ' + . 'id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' . 'OR keyword = ?'; $this->assertEqual($ret, $sql); @@ -167,8 +167,8 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $ret = $q->parseClause('rdbms -doctrine OR database'); - $sql = 'search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) AND ' - . 'search_test_id NOT IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' + $sql = 'id IN (SELECT id FROM search_test_index WHERE keyword = ?) AND ' + . 'id NOT IN (SELECT id FROM search_test_index WHERE keyword = ?) ' . 'OR keyword = ?'; $this->assertEqual($ret, $sql); @@ -179,11 +179,11 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search('doctrine AND orm'); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' + $sql = 'SELECT COUNT(keyword) AS relevance, id ' . 'FROM search_test_index ' - . 'WHERE search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' - . 'AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' - . 'GROUP BY search_test_id ORDER BY relevance'; + . 'WHERE id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' + . 'AND id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' + . 'GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getSql(), $sql); } @@ -194,10 +194,10 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search('doctrine OR orm'); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' + $sql = 'SELECT COUNT(keyword) AS relevance, id ' . 'FROM search_test_index ' . 'WHERE keyword = ? OR keyword = ? ' - . 'GROUP BY search_test_id ORDER BY relevance'; + . 'GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getSql(), $sql); } @@ -208,8 +208,8 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search('doctrine'); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' - . 'FROM search_test_index WHERE keyword = ? GROUP BY search_test_id ORDER BY relevance'; + $sql = 'SELECT COUNT(keyword) AS relevance, id ' + . 'FROM search_test_index WHERE keyword = ? GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getParams(), array('doctrine')); $this->assertEqual($q->getSql(), $sql); @@ -220,11 +220,11 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search('(doctrine OR orm) AND dbal'); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' + $sql = 'SELECT COUNT(keyword) AS relevance, id ' . 'FROM search_test_index ' - . 'WHERE search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ? OR keyword = ?) ' - . 'AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' - . 'GROUP BY search_test_id ORDER BY relevance'; + . 'WHERE id IN (SELECT id FROM search_test_index WHERE keyword = ? OR keyword = ?) ' + . 'AND id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' + . 'GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getParams(), array('doctrine', 'orm', 'dbal')); $this->assertEqual($q->getSql(), $sql); @@ -235,10 +235,10 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search("'doctrine orm'"); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' + $sql = 'SELECT COUNT(keyword) AS relevance, id ' . 'FROM search_test_index WHERE keyword = ? ' . 'AND (position + 1) = (SELECT position FROM search_test_index WHERE keyword = ?) ' - . 'GROUP BY search_test_id ORDER BY relevance'; + . 'GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getParams(), array('doctrine', 'orm')); $this->assertEqual($q->getSql(), $sql); @@ -249,11 +249,11 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search("'doctrine orm dbal'"); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' + $sql = 'SELECT COUNT(keyword) AS relevance, id ' . 'FROM search_test_index WHERE keyword = ? ' . 'AND (position + 1) = (SELECT position FROM search_test_index WHERE keyword = ?) ' . 'AND (position + 2) = (SELECT position FROM search_test_index WHERE keyword = ?) ' - . 'GROUP BY search_test_id ORDER BY relevance'; + . 'GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getParams(), array('doctrine', 'orm', 'dbal')); $this->assertEqual($q->getSql(), $sql); @@ -264,11 +264,11 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search('doctrine orm'); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' + $sql = 'SELECT COUNT(keyword) AS relevance, id ' . 'FROM search_test_index ' - . 'WHERE search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' - . 'AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' - . 'GROUP BY search_test_id ORDER BY relevance'; + . 'WHERE id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' + . 'AND id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' + . 'GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getSql(), $sql); } @@ -278,11 +278,11 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search('doct?ine orm'); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' + $sql = 'SELECT COUNT(keyword) AS relevance, id ' . 'FROM search_test_index ' - . 'WHERE search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword LIKE ?) ' - . 'AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' - . 'GROUP BY search_test_id ORDER BY relevance'; + . 'WHERE id IN (SELECT id FROM search_test_index WHERE keyword LIKE ?) ' + . 'AND id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' + . 'GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getParams(), array('doct?ine', 'orm')); $this->assertEqual($q->getSql(), $sql); @@ -292,11 +292,11 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search('doc* orm'); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' + $sql = 'SELECT COUNT(keyword) AS relevance, id ' . 'FROM search_test_index ' - . 'WHERE search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword LIKE ?) ' - . 'AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' - . 'GROUP BY search_test_id ORDER BY relevance'; + . 'WHERE id IN (SELECT id FROM search_test_index WHERE keyword LIKE ?) ' + . 'AND id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' + . 'GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getParams(), array('doc%', 'orm')); $this->assertEqual($q->getSql(), $sql); @@ -306,12 +306,12 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase $q = new Doctrine_Search_Query('SearchTestIndex'); $q->search("doctrine 'orm database'"); - $sql = 'SELECT COUNT(keyword) AS relevance, search_test_id ' + $sql = 'SELECT COUNT(keyword) AS relevance, id ' . 'FROM search_test_index ' - . 'WHERE search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ?) ' - . 'AND search_test_id IN (SELECT search_test_id FROM search_test_index WHERE keyword = ? ' + . 'WHERE id IN (SELECT id FROM search_test_index WHERE keyword = ?) ' + . 'AND id IN (SELECT id FROM search_test_index WHERE keyword = ? ' . 'AND (position + 1) = (SELECT position FROM search_test_index WHERE keyword = ?)) ' - . 'GROUP BY search_test_id ORDER BY relevance'; + . 'GROUP BY id ORDER BY relevance'; $this->assertEqual($q->getParams(), array('doctrine', 'orm', 'database')); $this->assertEqual($q->getSql(), $sql); diff --git a/tests/SearchTestCase.php b/tests/SearchTestCase.php index 977f18811..dcc8c1822 100644 --- a/tests/SearchTestCase.php +++ b/tests/SearchTestCase.php @@ -34,12 +34,13 @@ class Doctrine_Search_TestCase extends Doctrine_UnitTestCase { public function prepareTables() { - $this->tables = array('SearchTest', 'SearchTestIndex'); + $this->tables = array('SearchTest'); parent::prepareTables(); } public function prepareData() { } + public function testBuildingOfSearchRecordDefinition() { $e = new SearchTest(); @@ -49,7 +50,7 @@ class Doctrine_Search_TestCase extends Doctrine_UnitTestCase $rel = $e->getTable()->getRelation('SearchTestIndex'); $this->assertIdentical($rel->getLocal(), 'id'); - $this->assertIdentical($rel->getForeign(), 'searchtest_id'); + $this->assertIdentical($rel->getForeign(), 'id'); } public function testSavingEntriesUpdatesIndex() { @@ -116,4 +117,45 @@ class Doctrine_Search_TestCase extends Doctrine_UnitTestCase $this->assertEqual(count($array), 0); } + + public function testUpdateIndexInsertsNullValuesForBatchUpdatedEntries() + { + $e = new SearchTest(); + $tpl = $e->getTable()->getTemplate('Doctrine_Template_Searchable'); + $tpl->getPlugin()->setOption('batchUpdates', true); + + $e->title = 'Some searchable title'; + $e->content = 'Some searchable content'; + + $e->save(); + + $coll = Doctrine_Query::create() + ->from('SearchTestIndex s') + ->orderby('s.id DESC') + ->limit(1) + ->setHydrationMode(Doctrine::HYDRATE_ARRAY) + ->fetchOne(); + + $this->assertEqual($coll['id'], 2); + $this->assertEqual($coll['keyword'], null); + $this->assertEqual($coll['field'], null); + $this->assertEqual($coll['position'], null); + } + + public function testBatchUpdatesUpdateAllPendingEntries() + { + $e = new SearchTest(); + $tpl = $e->getTable()->getTemplate('Doctrine_Template_Searchable'); + + $tpl->getPlugin()->processPending(); + + $coll = Doctrine_Query::create() + ->from('SearchTestIndex s') + ->setHydrationMode(Doctrine::HYDRATE_ARRAY) + ->execute(); + + $coll = $this->conn->fetchAll('SELECT * FROM search_test_index'); + + + } }