@@ -3,13 +3,18 @@
require_once ('apps/navigation/lib/Navigation.php' );
class NavigationTest extends PHPUnit_Framework_TestCase {
function test_navigation () {
$ n = new Navigation ;
protected static $ n ;
protected static $ about_node ;
protected static $ blog_node ;
protected static $ contact_node ;
function test_single_node () {
self ::$ n = new Navigation ;
/**
* This is the tree on first install, just an index page.
*/
$ n ->tree = array (
self :: $ n ->tree = array (
(object ) array (
'data' => 'Home' ,
'attr' => (object ) array (
@@ -24,9 +29,11 @@ function test_navigation () {
*
* index
*/
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' ));
self ::$ this ->assertEquals (self ::$ n ->get_all_ids (), array ('index' ));
}
$ blog_node = (object ) array (
function test_adding_node () {
self ::$ blog_node = (object ) array (
'data' => 'Blog' ,
'attr' => (object ) array (
'id' => 'blog' ,
@@ -37,17 +44,19 @@ function test_navigation () {
/**
* Add blog page.
*/
$ n ->add ($ blog_node , 'index' );
self :: $ n ->add (self :: $ blog_node , 'index' );
/**
* Should have second id now:
*
* index
* - blog
*/
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' , 'blog' ));
$ this ->assertEquals (self ::$ n ->get_all_ids (), array ('index' , 'blog' ));
}
$ about_node = (object ) array (
function test_adding_subnode () {
self ::$ about_node = (object ) array (
'data' => 'About' ,
'attr' => (object ) array (
'id' => 'about' ,
@@ -58,7 +67,7 @@ function test_navigation () {
/**
* Add about page under blog.
*/
$ n ->add ($ about_node , 'blog' );
self :: $ n ->add (self :: $ about_node , 'blog' );
/**
* Should have third id now under blog:
@@ -67,31 +76,41 @@ function test_navigation () {
* - blog
* - about
*/
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' , 'blog' , 'about' ));
$ this ->assertEquals (self :: $ n ->get_all_ids (), array ('index' , 'blog' , 'about' ));
// Make sure about is under blog.
$ this ->assertEquals ($ n ->parent ('about' )->attr ->id , $ blog_node ->attr ->id );
$ this ->assertEquals (self ::$ n ->parent ('about' )->attr ->id , self ::$ blog_node ->attr ->id );
}
function test_find_node () {
// Find the about node and verify it.
$ this ->assertEquals ($ n ->node ('about' )->attr ->id , $ about_node ->attr ->id );
$ this ->assertEquals (self ::$ n ->node ('about' )->attr ->id , self ::$ about_node ->attr ->id );
}
function test_paths () {
// Test all paths
$ this ->assertEquals ($ n ->path ('index' ), array ('index' ));
$ this ->assertEquals ($ n ->path ('blog' ), array ('index' , 'blog' ));
$ this ->assertEquals ($ n ->path ('about' ), array ('index' , 'blog' , 'about' ));
$ this ->assertEquals (self :: $ n ->path ('index' ), array ('index' ));
$ this ->assertEquals (self :: $ n ->path ('blog' ), array ('index' , 'blog' ));
$ this ->assertEquals (self :: $ n ->path ('about' ), array ('index' , 'blog' , 'about' ));
// Test paths with titles
$ this ->assertEquals ($ n ->path ('blog' , true ), array ('index' => 'Home' , 'blog' => 'Blog' ));
$ this ->assertEquals (self ::$ n ->path ('blog' , true ), array ('index' => 'Home' , 'blog' => 'Blog' ));
}
function test_sections () {
// Test sections
$ this ->assertEquals ($ n ->sections (), array ('index' , 'blog' ));
$ this ->assertEquals (self ::$ n ->sections (), array ('index' , 'blog' ));
}
function test_remove () {
// Remove about and verify.
$ n ->remove ('about' );
$ this ->assertFalse (isset ($ n ->node ('blog' )->children ));
$ this ->assertNull ($ n ->node ('about' ));
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' , 'blog' ));
self ::$ n ->remove ('about' );
$ this ->assertFalse (isset (self ::$ n ->node ('blog' )->children ));
$ this ->assertNull (self ::$ n ->node ('about' ));
$ this ->assertEquals (self ::$ n ->get_all_ids (), array ('index' , 'blog' ));
}
function test_remove_with_children () {
/**
* Add about and remove blog and verify.
*
@@ -101,13 +120,15 @@ function test_navigation () {
* - blog
* - about
*/
$ n ->add ($ about_node , 'blog' );
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' , 'blog' , 'about' ));
$ n ->remove ('blog' );
$ this ->assertNull ($ n ->node ('about' ));
$ this ->assertNull ($ n ->node ('blog' ));
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' ));
self ::$ n ->add (self ::$ about_node , 'blog' );
$ this ->assertEquals (self ::$ n ->get_all_ids (), array ('index' , 'blog' , 'about' ));
self ::$ n ->remove ('blog' );
$ this ->assertNull (self ::$ n ->node ('about' ));
$ this ->assertNull (self ::$ n ->node ('blog' ));
$ this ->assertEquals (self ::$ n ->get_all_ids (), array ('index' ));
}
function test_add_remove () {
/**
* Add blog to root and verify add/remove root nodes.
*
@@ -116,20 +137,22 @@ function test_navigation () {
* index
* about
*/
$ about_node = (object ) array (
self :: $ about_node = (object ) array (
'data' => 'About' ,
'attr' => (object ) array (
'id' => 'about' ,
'sort' => 0
)
);
$ n ->add ($ about_node );
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' , 'about' ));
$ this ->assertEquals ($ n ->node ('about' )->attr ->sort , 1 );
$ n ->remove ('about' );
$ this ->assertEquals (count ($ n ->tree ), 1 );
self ::$ n ->add (self ::$ about_node );
$ this ->assertEquals (self ::$ n ->get_all_ids (), array ('index' , 'about' ));
$ this ->assertEquals (self ::$ n ->node ('about' )->attr ->sort , 1 );
self ::$ n ->remove ('about' );
$ this ->assertEquals (count (self ::$ n ->tree ), 1 );
}
function test_remove_non_recursive () {
/**
* Add blog and about and contact nodes and test remove() non-recursive.
*
@@ -140,42 +163,44 @@ function test_navigation () {
* - contact
* - blog
*/
$ about_node = (object ) array (
self :: $ about_node = (object ) array (
'data' => 'About' ,
'attr' => (object ) array (
'id' => 'about' ,
'sort' => 0
)
);
$ contact_node = (object ) array (
self :: $ contact_node = (object ) array (
'data' => 'Contact' ,
'attr' => (object ) array (
'id' => 'contact' ,
'sort' => 0
)
);
$ blog_node = (object ) array (
self :: $ blog_node = (object ) array (
'data' => 'Blog' ,
'attr' => (object ) array (
'id' => 'blog' ,
'sort' => 0
)
);
$ n ->add ($ about_node );
$ n ->add ($ contact_node , 'about' );
$ n ->add ($ blog_node , 'about' );
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' , 'about' , 'contact' , 'blog' ));
$ n ->remove ('about' , false );
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' , 'contact' , 'blog' ));
$ this ->assertEquals ($ n ->parent ('contact' ), null );
$ this ->assertEquals ($ n ->parent ('blog' ), null );
$ n ->remove ('contact' );
$ n ->remove ('blog' );
self ::$ n ->add (self ::$ about_node );
self ::$ n ->add (self ::$ contact_node , 'about' );
self ::$ n ->add (self ::$ blog_node , 'about' );
$ this ->assertEquals (self ::$ n ->get_all_ids (), array ('index' , 'about' , 'contact' , 'blog' ));
self ::$ n ->remove ('about' , false );
$ this ->assertEquals (self ::$ n ->get_all_ids (), array ('index' , 'contact' , 'blog' ));
$ this ->assertEquals (self ::$ n ->parent ('contact' ), null );
$ this ->assertEquals (self ::$ n ->parent ('blog' ), null );
self ::$ n ->remove ('contact' );
self ::$ n ->remove ('blog' );
}
function test_remove_path () {
/**
* Add node in two places and test remove_path().
*
@@ -186,32 +211,34 @@ function test_navigation () {
* - about
* about
*/
$ about_node = (object ) array (
self :: $ about_node = (object ) array (
'data' => 'About' ,
'attr' => (object ) array (
'id' => 'about' ,
'sort' => 0
)
);
$ contact_node = (object ) array (
self :: $ contact_node = (object ) array (
'data' => 'Contact' ,
'attr' => (object ) array (
'id' => 'contact' ,
'sort' => 0
)
);
$ n ->add ($ about_node );
$ n ->add ($ contact_node , 'index' );
$ n ->add ($ about_node , 'contact' );
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' , 'contact' , 'about' , 'about' ));
$ n ->remove_path (array ('index' , 'contact' , 'about' ));
$ contact = $ n ->node ('contact' );
self :: $ n ->add (self :: $ about_node );
self :: $ n ->add (self :: $ contact_node , 'index' );
self :: $ n ->add (self :: $ about_node , 'contact' );
$ this ->assertEquals (self :: $ n ->get_all_ids (), array ('index' , 'contact' , 'about' , 'about' ));
self :: $ n ->remove_path (array ('index' , 'contact' , 'about' ));
$ contact = self :: $ n ->node ('contact' );
$ this ->assertFalse (isset ($ contact ->children ));
$ n ->remove ('contact' );
$ n ->remove ('about' );
self ::$ n ->remove ('contact' );
self ::$ n ->remove ('about' );
}
function test_move () {
/**
* Add blog and about and contact nodes and test move().
*
@@ -222,34 +249,34 @@ function test_navigation () {
* - blog
* - contact
*/
$ about_node = (object ) array (
self :: $ about_node = (object ) array (
'data' => 'About' ,
'attr' => (object ) array (
'id' => 'about' ,
'sort' => 0
)
);
$ contact_node = (object ) array (
self :: $ contact_node = (object ) array (
'data' => 'Contact' ,
'attr' => (object ) array (
'id' => 'contact' ,
'sort' => 0
)
);
$ blog_node = (object ) array (
self :: $ blog_node = (object ) array (
'data' => 'Blog' ,
'attr' => (object ) array (
'id' => 'blog' ,
'sort' => 0
)
);
$ n ->add ($ about_node , 'index' );
$ n ->add ($ contact_node , 'index' );
$ n ->add ($ blog_node , 'about' );
$ this ->assertEquals ($ n ->get_all_ids (), array ('index' , 'about' , 'blog' , 'contact' ));
self :: $ n ->add (self :: $ about_node , 'index' );
self :: $ n ->add (self :: $ contact_node , 'index' );
self :: $ n ->add (self :: $ blog_node , 'about' );
$ this ->assertEquals (self :: $ n ->get_all_ids (), array ('index' , 'about' , 'blog' , 'contact' ));
/**
* Move contact under about. New structure:
@@ -259,8 +286,8 @@ function test_navigation () {
* - blog
* - contact
*/
$ n ->move ('contact' , 'about' );
$ this ->assertEquals ($ n ->parent ('contact' )->attr ->id , 'about' );
self :: $ n ->move ('contact' , 'about' );
$ this ->assertEquals (self :: $ n ->parent ('contact' )->attr ->id , 'about' );
/**
* Move contact under blog. New structure:
@@ -270,10 +297,10 @@ function test_navigation () {
* - blog
* - contact
*/
$ n ->move ('contact' , 'blog' );
$ this ->assertEquals ($ n ->parent ('contact' )->attr ->id , 'blog' );
$ this ->assertEquals ($ n ->parent ('blog' )->attr ->id , 'about' );
$ this ->assertEquals ($ n ->parent ('about' )->attr ->id , 'index' );
self :: $ n ->move ('contact' , 'blog' );
$ this ->assertEquals (self :: $ n ->parent ('contact' )->attr ->id , 'blog' );
$ this ->assertEquals (self :: $ n ->parent ('blog' )->attr ->id , 'about' );
$ this ->assertEquals (self :: $ n ->parent ('about' )->attr ->id , 'index' );
/**
* Move blog to top. New structure:
@@ -283,9 +310,9 @@ function test_navigation () {
* blog
* - contact
*/
$ n ->move ('blog' , false );
$ this ->assertEquals ($ n ->parent ('contact' )->attr ->id , 'blog' );
$ this ->assertEquals ($ n ->parent ('blog' ), null );
self :: $ n ->move ('blog' , false );
$ this ->assertEquals (self :: $ n ->parent ('contact' )->attr ->id , 'blog' );
$ this ->assertEquals (self :: $ n ->parent ('blog' ), null );
/**
* Move blog to after about under index. New structure:
@@ -295,11 +322,11 @@ function test_navigation () {
* - blog
* - contact
*/
$ n ->move ('blog' , 'about' , 'after' );
$ this ->assertEquals ($ n ->parent ('blog' )->attr ->id , 'index' );
$ this ->assertEquals ($ n ->parent ('contact' )->attr ->id , 'blog' );
$ this ->assertEquals ($ n ->node ('about' )->attr ->sort , 0 );
$ this ->assertEquals ($ n ->node ('blog' )->attr ->sort , 1 );
self :: $ n ->move ('blog' , 'about' , 'after' );
$ this ->assertEquals (self :: $ n ->parent ('blog' )->attr ->id , 'index' );
$ this ->assertEquals (self :: $ n ->parent ('contact' )->attr ->id , 'blog' );
$ this ->assertEquals (self :: $ n ->node ('about' )->attr ->sort , 0 );
$ this ->assertEquals (self :: $ n ->node ('blog' )->attr ->sort , 1 );
/**
* Move blog to after about under index. New structure:
@@ -309,11 +336,11 @@ function test_navigation () {
* - contact
* - blog
*/
$ n ->move ('contact' , 'blog' , 'before' );
$ this ->assertEquals ($ n ->parent ('contact' )->attr ->id , 'index' );
$ this ->assertEquals ($ n ->node ('about' )->attr ->sort , 0 );
$ this ->assertEquals ($ n ->node ('contact' )->attr ->sort , 1 );
$ this ->assertEquals ($ n ->node ('blog' )->attr ->sort , 2 );
self :: $ n ->move ('contact' , 'blog' , 'before' );
$ this ->assertEquals (self :: $ n ->parent ('contact' )->attr ->id , 'index' );
$ this ->assertEquals (self :: $ n ->node ('about' )->attr ->sort , 0 );
$ this ->assertEquals (self :: $ n ->node ('contact' )->attr ->sort , 1 );
$ this ->assertEquals (self :: $ n ->node ('blog' )->attr ->sort , 2 );
/**
* Move blog to before index. New structure:
@@ -323,10 +350,10 @@ function test_navigation () {
* - about
* - contact
*/
$ n ->move ('blog' , 'index' , 'before' );
$ this ->assertEquals ($ n ->parent ('blog' ), null );
$ this ->assertEquals ($ n ->node ('blog' )->attr ->sort , 0 );
$ this ->assertEquals ($ n ->node ('index' )->attr ->sort , 1 );
self :: $ n ->move ('blog' , 'index' , 'before' );
$ this ->assertEquals (self :: $ n ->parent ('blog' ), null );
$ this ->assertEquals (self :: $ n ->node ('blog' )->attr ->sort , 0 );
$ this ->assertEquals (self :: $ n ->node ('index' )->attr ->sort , 1 );
/**
* Move blog to after index. New structure:
@@ -336,10 +363,10 @@ function test_navigation () {
* - contact
* blog
*/
$ n ->move ('blog' , 'index' , 'after' );
$ this ->assertEquals ($ n ->parent ('blog' ), null );
$ this ->assertEquals ($ n ->node ('index' )->attr ->sort , 0 );
$ this ->assertEquals ($ n ->node ('blog' )->attr ->sort , 1 );
self :: $ n ->move ('blog' , 'index' , 'after' );
$ this ->assertEquals (self :: $ n ->parent ('blog' ), null );
$ this ->assertEquals (self :: $ n ->node ('index' )->attr ->sort , 0 );
$ this ->assertEquals (self :: $ n ->node ('blog' )->attr ->sort , 1 );
/**
* Move index to after blog. New structure:
@@ -349,11 +376,11 @@ function test_navigation () {
* - about
* - contact
*/
$ n ->move ('index' , 'blog' , 'after' );
$ this ->assertEquals ($ n ->parent ('blog' ), null );
$ this ->assertEquals ($ n ->node ('blog' )->attr ->sort , 0 );
$ this ->assertEquals ($ n ->node ('index' )->attr ->sort , 1 );
$ this ->assertEquals (count ($ n ->node ('index' )->children ), 2 );
self :: $ n ->move ('index' , 'blog' , 'after' );
$ this ->assertEquals (self :: $ n ->parent ('blog' ), null );
$ this ->assertEquals (self :: $ n ->node ('blog' )->attr ->sort , 0 );
$ this ->assertEquals (self :: $ n ->node ('index' )->attr ->sort , 1 );
$ this ->assertEquals (count (self :: $ n ->node ('index' )->children ), 2 );
/**
* Move index to before blog. New structure:
@@ -363,11 +390,11 @@ function test_navigation () {
* - contact
* blog
*/
$ n ->move ('index' , 'blog' , 'before' );
$ this ->assertEquals ($ n ->parent ('blog' ), null );
$ this ->assertEquals ($ n ->node ('index' )->attr ->sort , 0 );
$ this ->assertEquals ($ n ->node ('blog' )->attr ->sort , 1 );
$ this ->assertEquals (count ($ n ->node ('index' )->children ), 2 );
self :: $ n ->move ('index' , 'blog' , 'before' );
$ this ->assertEquals (self :: $ n ->parent ('blog' ), null );
$ this ->assertEquals (self :: $ n ->node ('index' )->attr ->sort , 0 );
$ this ->assertEquals (self :: $ n ->node ('blog' )->attr ->sort , 1 );
$ this ->assertEquals (count (self :: $ n ->node ('index' )->children ), 2 );
}
}