1<?php 2 3/* 4 * This file is part of the Stash package. 5 * 6 * (c) Robert Hafner <tedivm@tedivm.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12namespace Stash\Test; 13 14use Stash\Pool; 15 16/** 17 * @package Stash 18 * @author Robert Hafner <tedivm@tedivm.com> 19 */ 20class PoolNamespaceTest extends AbstractPoolTest 21{ 22 protected function getTestPool($skipNametest = false) 23 { 24 $pool = parent::getTestPool(); 25 26 if (!$skipNametest) { 27 $pool->setNamespace('TestSpace'); 28 } 29 30 return $pool; 31 } 32 33 public function testClearNamespacedCache() 34 { 35 $pool = $this->getTestPool(true); 36 37 // No Namespace 38 $item = $pool->getItem('base/one'); 39 $item->set($this->data)->save(); 40 41 // TestNamespace 42 $pool->setNamespace('TestNamespace'); 43 $item = $pool->getItem('test/one'); 44 $item->set($this->data)->save(); 45 46 // TestNamespace2 47 $pool->setNamespace('TestNamespace2'); 48 $item = $pool->getItem('test/one'); 49 $item->set($this->data)->save(); 50 51 // Clear TestNamespace 52 $pool->setNamespace('TestNamespace'); 53 $this->assertTrue($pool->clear(), 'Clear succeeds with namespace selected.'); 54 55 // Return to No Namespace 56 $pool->setNamespace(); 57 $item = $pool->getItem('base/one'); 58 $this->assertFalse($item->isMiss(), 'Base item exists after other namespace was cleared.'); 59 $this->assertEquals($this->data, $item->get(), 'Base item returns data after other namespace was cleared.'); 60 61 // Clear All 62 $this->assertTrue($pool->clear(), 'Clear succeeds with no namespace.'); 63 64 // Return to TestNamespace2 65 $pool->setNamespace('TestNamespace2'); 66 $item = $pool->getItem('base/one'); 67 $this->assertTrue($item->isMiss(), 'Namespaced item disappears after complete clear.'); 68 } 69 70 public function testNamespacing() 71 { 72 $pool = $this->getTestPool(true); 73 74 $this->assertAttributeEquals(null, 'namespace', $pool, 'Namespace starts empty.'); 75 $this->assertTrue($pool->setNamespace('TestSpace'), 'setNamespace returns true.'); 76 $this->assertAttributeEquals('TestSpace', 'namespace', $pool, 'setNamespace sets the namespace.'); 77 $this->assertEquals('TestSpace', $pool->getNamespace(), 'getNamespace returns current namespace.'); 78 79 $this->assertTrue($pool->setNamespace(), 'setNamespace returns true when setting null.'); 80 $this->assertAttributeEquals(null, 'namespace', $pool, 'setNamespace() empties namespace.'); 81 $this->assertFalse($pool->getNamespace(), 'getNamespace returns false when no namespace is set.'); 82 } 83} 84