View source
<?php
abstract class Redis_Tests_Path_PathUnitTestCase extends Redis_Tests_AbstractUnitTestCase {
private static $id = 1;
protected final function getBackend($name = null) {
if (null === $name) {
$name = 'cache' . self::$id++;
}
$className = Redis_Client::getClass(Redis_Client::REDIS_IMPL_PATH);
$hashLookup = new $className(Redis_Client::getClient(), 'path', Redis_Client::getDefaultPrefix('path'));
return $hashLookup;
}
public function testPathLookup() {
$backend = $this
->getBackend();
$source = $backend
->lookupSource('node-1-fr', 'fr');
$this
->assertIdentical(null, $source);
$alias = $backend
->lookupAlias('node/1', 'fr');
$this
->assertIdentical(null, $source);
$backend
->saveAlias('node/1', 'node-1-fr', 'fr');
$source = $backend
->lookupSource('node-1-fr', 'fr');
$source = $backend
->lookupSource('node-1-fr', 'fr');
$this
->assertIdentical('node/1', $source);
$alias = $backend
->lookupAlias('node/1', 'fr');
$this
->assertIdentical('node-1-fr', $alias);
$backend
->deleteAlias('node/1', 'node-1-fr', 'fr');
$source = $backend
->lookupSource('node-1-fr', 'fr');
$this
->assertIdentical(null, $source);
$alias = $backend
->lookupAlias('node/1', 'fr');
$this
->assertIdentical(null, $source);
$backend
->saveAlias('node/1', 'node-1-fr-1', 'fr');
$backend
->saveAlias('node/1', 'node-1-fr-2', 'fr');
$backend
->saveAlias('node/1', 'node-1-fr-3', 'fr');
$alias = $backend
->lookupAlias('node/1', 'fr');
$this
->assertIdentical('node-1-fr-3', $alias);
$backend
->saveAlias('node/1', 'node-1');
$backend
->saveAlias('node/2', 'node-2-en', 'en');
$backend
->saveAlias('node/3', 'node-3-ca', 'ca');
$backend
->deleteLanguage('fr');
$alias = $backend
->lookupAlias('node/1');
$this
->assertIdentical('node-1', $alias);
$alias = $backend
->lookupAlias('node/2', 'en');
$this
->assertIdentical('node-2-en', $alias);
$alias = $backend
->lookupAlias('node/3', 'ca');
$this
->assertIdentical('node-3-ca', $alias);
$backend
->saveAlias('node/4', 'node-4');
$backend
->saveAlias('node/4', 'node-4-es', 'es');
$alias = $backend
->lookupAlias('node/4');
$this
->assertIdentical('node-4', $alias);
$alias = $backend
->lookupAlias('node/4', 'es');
$this
->assertIdentical('node-4-es', $alias);
$alias = $backend
->lookupAlias('node/4', 'fr');
$this
->assertIdentical('node-4', $alias);
}
public function testSomeEdgeCaseFalseNegative() {
$backend = $this
->getBackend();
$backend
->deleteLanguage('fr');
$backend
->deleteLanguage('und');
$backend
->saveAlias('node/123', 'node-123');
$source = $backend
->lookupSource('node-123', 'fr');
$this
->assertIdentical($source, 'node/123');
$source = $backend
->lookupAlias('node/123', 'fr');
$this
->assertIdentical($source, 'node-123');
$backend
->saveAlias('node/456', Redis_Path_HashLookupInterface::VALUE_NULL);
$source = $backend
->lookupAlias('node/456');
$this
->assertIdentical(false, $source);
$source = $backend
->lookupAlias('node/456', 'fr');
$this
->assertIdentical(null, $source);
}
public function testCaseInsensitivePathLookup() {
$backend = $this
->getBackend();
$backend
->saveAlias('node/1', 'Node-1-FR', 'fr');
$source = $backend
->lookupSource('NODE-1-fr', 'fr');
$this
->assertIdentical('node/1', $source);
$source = $backend
->lookupSource('node-1-FR', 'fr');
$this
->assertIdentical('node/1', $source);
$alias = $backend
->lookupAlias('node/1', 'fr');
$this
->assertIdentical('node-1-fr', strtolower($alias));
$backend
->deleteAlias('node/1', 'node-1-FR', 'fr');
$source = $backend
->lookupSource('Node-1-FR', 'fr');
$this
->assertIdentical(null, $source);
$alias = $backend
->lookupAlias('node/1', 'fr');
$this
->assertIdentical(null, $source);
}
}