コード例 #1
0
	function testHasmethodBehaviour() {
		/* SiteTree should have all of the methods that Versioned has, because Versioned is listed in SiteTree's
		 * extensions */
		$st = new SiteTree();
		$cc = new ContentController($st);

		$this->assertTrue($st->hasMethod('publish'), "Test SiteTree has publish");
		$this->assertTrue($st->hasMethod('migrateVersion'), "Test SiteTree has migrateVersion");
		
		/* This relationship should be case-insensitive, too */
		$this->assertTrue($st->hasMethod('PuBliSh'), "Test SiteTree has PuBliSh");
		$this->assertTrue($st->hasMethod('MiGratEVersIOn'), "Test SiteTree has MiGratEVersIOn");
		
		/* In a similar manner, all of SiteTree's methods should be available on ContentController, because $failover is set */
		$this->assertTrue($cc->hasMethod('canView'), "Test ContentController has canView");
		$this->assertTrue($cc->hasMethod('linkorcurrent'), "Test ContentController has linkorcurrent");
		
		/* This 'method copying' is transitive, so all of Versioned's methods should be available on ContentControler.
		 * Once again, this is case-insensitive */
		$this->assertTrue($cc->hasMethod('MiGratEVersIOn'), "Test ContentController has MiGratEVersIOn");
		
		/* The above examples make use of SiteTree, Versioned and ContentController.  Let's test defineMethods() more
		 * directly, with some sample objects */
		$objs = array();
		$objs[] = new ObjectTest_T2();
		$objs[] = new ObjectTest_T2();
		$objs[] = new ObjectTest_T2();
		
		// All these methods should exist and return true
		$trueMethods = array('testMethod','otherMethod','someMethod','t1cMethod','normalMethod');
		
		foreach($objs as $i => $obj) {
			foreach($trueMethods as $method) {
				$methodU = strtoupper($method);
				$methodL = strtoupper($method);
				$this->assertTrue($obj->hasMethod($method), "Test that obj#$i has method $method");
				$this->assertTrue($obj->hasMethod($methodU), "Test that obj#$i has method $methodU");
				$this->assertTrue($obj->hasMethod($methodL), "Test that obj#$i has method $methodL");

				$this->assertTrue($obj->$method(), "Test that obj#$i can call method $method");
				$this->assertTrue($obj->$methodU(), "Test that obj#$i can call method $methodU");
				$this->assertTrue($obj->$methodL(), "Test that obj#$i can call method $methodL");
			}
			
			$this->assertTrue($obj->hasMethod('Wrapping'), "Test that obj#$i has method Wrapping");
			$this->assertTrue($obj->hasMethod('WRAPPING'), "Test that obj#$i has method WRAPPING");
			$this->assertTrue($obj->hasMethod('wrapping'), "Test that obj#$i has method wrapping");
			
			$this->assertEquals("Wrapping", $obj->Wrapping(), "Test that obj#$i can call method Wrapping");
			$this->assertEquals("Wrapping", $obj->WRAPPING(), "Test that obj#$i can call method WRAPPIGN");
			$this->assertEquals("Wrapping", $obj->wrapping(), "Test that obj#$i can call method wrapping");
		}
		
	}
コード例 #2
0
ファイル: ObjectTest.php プロジェクト: ramziammar/websites
 function testHasMethod()
 {
     $st = new SiteTree();
     $cc = new ContentController($st);
     // Check that Versiond methods exist on SiteTree
     $this->assertTrue($st->hasMethod('publish'), "Test SiteTree has publish");
     $this->assertTrue($st->hasMethod('migrateVersion'), "Test SiteTree has migrateVersion");
     // Check for different casing
     $this->assertTrue($st->hasMethod('PuBliSh'), "Test SiteTree has PuBliSh");
     $this->assertTrue($st->hasMethod('MiGratEVersIOn'), "Test SiteTree has MiGratEVersIOn");
     // Check that SiteTree methods exist on ContentController (test failover)
     $this->assertTrue($cc->hasMethod('canView'), "Test ContentController has canView");
     $this->assertTrue($cc->hasMethod('linkorcurrent'), "Test ContentController has linkorcurrent");
     $this->assertTrue($cc->hasMethod('MiGratEVersIOn'), "Test ContentController has MiGratEVersIOn");
     // Make use of the test object below.  1st instantiation is different from subsequent, so create a few
     $objs = array();
     $objs[] = new ObjectTest_T2();
     $objs[] = new ObjectTest_T2();
     $objs[] = new ObjectTest_T2();
     // All these methods should exist and return true
     $trueMethods = array('testMethod', 'otherMethod', 'someMethod', 't1cMethod', 'normalMethod');
     foreach ($objs as $i => $obj) {
         foreach ($trueMethods as $method) {
             $methodU = strtoupper($method);
             $methodL = strtoupper($method);
             $this->assertTrue($obj->hasMethod($method), "Test that obj#{$i} has method {$method}");
             $this->assertTrue($obj->hasMethod($methodU), "Test that obj#{$i} has method {$methodU}");
             $this->assertTrue($obj->hasMethod($methodL), "Test that obj#{$i} has method {$methodL}");
             $this->assertTrue($obj->{$method}(), "Test that obj#{$i} can call method {$method}");
             $this->assertTrue($obj->{$methodU}(), "Test that obj#{$i} can call method {$methodU}");
             $this->assertTrue($obj->{$methodL}(), "Test that obj#{$i} can call method {$methodL}");
         }
         $this->assertTrue($obj->hasMethod('Wrapping'), "Test that obj#{$i} has method Wrapping");
         $this->assertTrue($obj->hasMethod('WRAPPING'), "Test that obj#{$i} has method WRAPPING");
         $this->assertTrue($obj->hasMethod('wrapping'), "Test that obj#{$i} has method wrapping");
         $this->assertEquals("Wrapping", $obj->Wrapping(), "Test that obj#{$i} can call method Wrapping");
         $this->assertEquals("Wrapping", $obj->WRAPPING(), "Test that obj#{$i} can call method WRAPPIGN");
         $this->assertEquals("Wrapping", $obj->wrapping(), "Test that obj#{$i} can call method wrapping");
     }
 }
コード例 #3
0
 /**
  * Builds a hierarchy from the current page to the top product group page
  * or holder.
  *
  * @param SiteTree $currPage The page to start from
  *
  * @return array
  *
  * @author Sascha Koehler <*****@*****.**>
  * @since 18.10.2012
  */
 public static function getPageHierarchy($currPage)
 {
     if (!array_key_exists('SiteTree_' . $currPage->ID, self::$pageHierarchy)) {
         $level = 0;
         $hierarchy = array('SiteTree_' . $currPage->ID => array('Page' => $currPage, 'Level' => $level));
         while ($currPage->hasMethod('getParent') && $currPage->getParent()) {
             $parent = $currPage->getParent();
             if ($parent) {
                 $level++;
                 $hierarchy['SiteTree_' . $parent->ID] = array('Page' => $parent, 'Level' => $level);
                 $currPage = $parent;
             } else {
                 break;
             }
         }
         self::$pageHierarchy['SiteTree_' . $currPage->ID] = array();
         foreach ($hierarchy as $pageID => $pageInfo) {
             self::$pageHierarchy['SiteTree_' . $currPage->ID][$pageID] = array('Page' => $pageInfo['Page'], 'Level' => ($pageInfo['Level'] - $level) * -1);
         }
     }
     return self::$pageHierarchy['SiteTree_' . $currPage->ID];
 }