| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 2004-2007 BIT(http://bit-creative.com) 7 * @license LGPL http://www.gnu.org/copyleft/lesser.html 8 */ 9 lmb_require('limb/net/src/lmbUri.class.php'); 10 lmb_require('limb/dbal/src/lmbSimpleDb.class.php'); 11 lmb_require('limb/search/src/indexer/lmbFullTextSearchIndexer.class.php'); 12 lmb_require('limb/search/src/indexer/lmbSearchTextNormalizer.class.php'); 13 14 Mock :: generate('lmbSearchTextNormalizer', 'MockSearchTextNormalizer'); 15 16 class lmbFullTextSearchIndexerTest extends UnitTestCase 17 { 18 protected $db; 19 20 function setUp() 21 { 22 $conn = lmbToolkit :: instance()->getDefaultDbConnection(); 23 $this->db = new lmbSimpleDb($conn); 24 25 $this->_cleanUp(); 26 } 27 28 function tearDown() 29 { 30 $this->_cleanUp(); 31 } 32 33 function _cleanUp() 34 { 35 $this->db->delete(FULL_TEXT_SEARCH_INDEXER_TABLE); 36 } 37 38 function testNormalizeContent() 39 { 40 $uri = new lmbUri('index.html'); 41 $content = 'content'; 42 $processed_content = 'new content'; 43 44 $normalizer = new MockSearchTextNormalizer($this); 45 $indexer = new lmbFullTextSearchIndexer($normalizer); 46 47 $normalizer->expectOnce('process', array($content)); 48 $normalizer->setReturnValue('process', $processed_content, array($content)); 49 50 $indexer->index($uri, $content); 51 52 $rs = $this->db->select(FULL_TEXT_SEARCH_INDEXER_TABLE); 53 $arr = $rs->getArray(); 54 55 $this->assertEqual($arr[0]['content'], $processed_content); 56 } 57 58 function testNOINDEX() 59 { 60 $uri = new lmbUri('index.html'); 61 62 $content = "must be indexed\n<!-- no index start -->ignored by indexer<!-- no index end -->must be indexed also"; 63 64 $expected = "must be indexed\n must be indexed also"; 65 66 $normalizer = new MockSearchTextNormalizer($this); 67 $indexer = new lmbFullTextSearchIndexer($normalizer); 68 $indexer->useNOINDEX(); 69 70 $normalizer->expectOnce('process', array($expected)); 71 $normalizer->setReturnValue('process', 'whatever'); 72 73 $indexer->index($uri, $content); 74 } 75 76 function testSwitchOffNOINDEX() 77 { 78 $uri = new lmbUri('index.html'); 79 80 $content = "must be indexed\n<!-- no index start -->ignored by indexer<!-- no index end -->must be indexed also"; 81 82 $expected = "must be indexed\n<!-- no index start -->ignored by indexer<!-- no index end -->must be indexed also"; 83 84 $normalizer = new MockSearchTextNormalizer($this); 85 $indexer = new lmbFullTextSearchIndexer($normalizer); 86 $indexer->useNOINDEX(false); 87 88 $normalizer->expectOnce('process', array($expected)); 89 $normalizer->setReturnValue('process', 'whatever', array($expected)); 90 91 $indexer->index($uri, $content); 92 } 93 94 function testNOINDEXMultiline() 95 { 96 $uri = new lmbUri('index.html'); 97 98 $content = "\nmust be indexed\n\n<!-- no index start -->ignored by indexer\n<!-- no index end -->\n must be indexed also"; 99 100 $expected = "\nmust be indexed\n\n \n must be indexed also"; 101 102 $normalizer = new MockSearchTextNormalizer($this); 103 $indexer = new lmbFullTextSearchIndexer($normalizer); 104 $indexer->useNOINDEX(); 105 106 $normalizer->expectOnce('process', array($expected)); 107 $normalizer->setReturnValue('process', 'whatever'); 108 109 $indexer->index($uri, $content); 110 } 111 112 function testIndexNew() 113 { 114 $uri = new lmbUri('index.html'); 115 $content = '<title>test title</title>content'; 116 $indexer = new lmbFullTextSearchIndexer(new lmbSearchTextNormalizer()); 117 $indexer->index($uri, $content); 118 119 $rs = $this->db->select(FULL_TEXT_SEARCH_INDEXER_TABLE); 120 $arr = $rs->getArray(); 121 122 $this->assertEqual(sizeof($arr), 1); 123 $this->assertEqual($arr[0]['uri'], $uri->toString()); 124 $this->assertEqual($arr[0]['content'], 'test title content'); 125 $this->assertEqual($arr[0]['title'], 'test title'); 126 $this->assertTrue($arr[0]['last_modified'] > 0 && $arr[0]['last_modified'] <= time()); 127 } 128 129 function testIndexNewUtf8Text() 130 { 131 $uri = new lmbUri('index.html'); 132 $content = '<title>Растения</title>Доставка'; 133 $indexer = new lmbFullTextSearchIndexer(new lmbSearchTextNormalizer()); 134 $indexer->index($uri, $content); 135 136 $rs = $this->db->select(FULL_TEXT_SEARCH_INDEXER_TABLE); 137 $arr = $rs->getArray(); 138 139 $this->assertEqual(sizeof($arr), 1); 140 $this->assertEqual($arr[0]['uri'], $uri->toString()); 141 $this->assertEqual($arr[0]['content'], 'растения доставка'); 142 $this->assertEqual($arr[0]['title'], 'Растения'); 143 $this->assertTrue($arr[0]['last_modified'] > 0 && $arr[0]['last_modified'] <= time()); 144 } 145 146 function testExtractTitleAnyway() 147 { 148 $uri = new lmbUri('index.html'); 149 $content = '<!-- no index start --><title>test title</title>content ignored<!-- no index end -->content'; 150 151 $indexer = new lmbFullTextSearchIndexer(new lmbSearchTextNormalizer()); 152 $indexer->useNOINDEX(); 153 $indexer->index($uri, $content); 154 155 $rs = $this->db->select(FULL_TEXT_SEARCH_INDEXER_TABLE); 156 $arr = $rs->getArray(); 157 158 $this->assertEqual(sizeof($arr), 1); 159 $this->assertEqual($arr[0]['uri'], $uri->toString()); 160 $this->assertEqual($arr[0]['content'], 'content'); 161 $this->assertEqual($arr[0]['title'], 'test title'); 162 $this->assertTrue($arr[0]['last_modified'] > 0 && $arr[0]['last_modified'] <= time()); 163 } 164 165 function testIndexUpdate() 166 { 167 $uri = new lmbUri('index.html'); 168 169 $this->db->insert(FULL_TEXT_SEARCH_INDEXER_TABLE, 170 array('uri' => $uri->toString(), 171 'content' => 'content1', 172 'title' => 'title1', 173 'last_modified' => $time1 = 200)); 174 175 $new_content = '<title>title2</title>content2'; 176 177 $indexer = new lmbFullTextSearchIndexer(new lmbSearchTextNormalizer()); 178 $indexer->index($uri, $new_content); 179 180 $rs = $this->db->select(FULL_TEXT_SEARCH_INDEXER_TABLE); 181 $arr = $rs->getArray(); 182 183 $this->assertEqual(sizeof($arr), 1); 184 $this->assertEqual($arr[0]['uri'], $uri->toString()); 185 $this->assertEqual($arr[0]['content'], 'title2 content2'); 186 $this->assertEqual($arr[0]['title'], 'title2'); 187 $this->assertTrue($arr[0]['last_modified'] > $time1 && $arr[0]['last_modified'] <= time()); 188 } 189 190 function testFindIndexRecordByUri() 191 { 192 $uri1 = new lmbUri('index.html'); 193 $content1 = '<title>title1</title>content1'; 194 195 $indexer = new lmbFullTextSearchIndexer(new lmbSearchTextNormalizer()); 196 $indexer->index($uri1, $content1); 197 198 $uri2 = new lmbUri('page1.html'); 199 $content2 = '<title>title2</title>content2'; 200 201 $indexer->index($uri2, $content2); 202 203 $record = $indexer->findIndexRecordByUri($uri1)->export(); 204 $this->assertEqual($record['uri'], $uri1->toString()); 205 $this->assertEqual($record['content'], 'title1 content1'); 206 $this->assertEqual($record['title'], 'title1'); 207 208 $record = $indexer->findIndexRecordByUri($uri2)->export(); 209 $this->assertEqual($record['uri'], $uri2->toString()); 210 $this->assertEqual($record['content'], 'title2 content2'); 211 $this->assertEqual($record['title'], 'title2'); 212 } 213 } 214 215 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sat Nov 22 03:48:54 2008 | Cross-referenced by PHPXref 0.7 |