2012-07-17 07:58:33 +02:00
< ? php
class DMSDocumentTest extends SapphireTest {
static $fixture_file = " dms/tests/dmstest.yml " ;
2012-07-27 03:11:28 +02:00
function tearDownOnce () {
$d = DataObject :: get ( " DMSDocument " );
foreach ( $d as $d1 ) {
$d1 -> delete ();
}
$t = DataObject :: get ( " DMSTag " );
foreach ( $t as $t1 ) {
$t1 -> delete ();
}
}
2012-07-17 07:58:33 +02:00
function testPageRelations () {
$s1 = $this -> objFromFixture ( 'SiteTree' , 's1' );
$s2 = $this -> objFromFixture ( 'SiteTree' , 's2' );
$s3 = $this -> objFromFixture ( 'SiteTree' , 's3' );
$s4 = $this -> objFromFixture ( 'SiteTree' , 's4' );
$s5 = $this -> objFromFixture ( 'SiteTree' , 's5' );
$s6 = $this -> objFromFixture ( 'SiteTree' , 's6' );
$d1 = $this -> objFromFixture ( 'DMSDocument' , 'd1' );
$pages = $d1 -> Pages ();
$pagesArray = $pages -> toArray ();
2012-08-27 13:29:30 +02:00
$this -> assertEquals ( $pagesArray [ 0 ] -> ID , $s1 -> ID , " Page 1 associated correctly " );
$this -> assertEquals ( $pagesArray [ 1 ] -> ID , $s2 -> ID , " Page 2 associated correctly " );
$this -> assertEquals ( $pagesArray [ 2 ] -> ID , $s3 -> ID , " Page 3 associated correctly " );
$this -> assertEquals ( $pagesArray [ 3 ] -> ID , $s4 -> ID , " Page 4 associated correctly " );
$this -> assertEquals ( $pagesArray [ 4 ] -> ID , $s5 -> ID , " Page 5 associated correctly " );
$this -> assertEquals ( $pagesArray [ 5 ] -> ID , $s6 -> ID , " Page 6 associated correctly " );
2012-07-17 07:58:33 +02:00
}
function testAddPageRelation () {
$s1 = $this -> objFromFixture ( 'SiteTree' , 's1' );
$s2 = $this -> objFromFixture ( 'SiteTree' , 's2' );
$s3 = $this -> objFromFixture ( 'SiteTree' , 's3' );
2012-07-27 04:21:24 +02:00
$doc = new DMSDocument ();
2012-07-17 07:58:33 +02:00
$doc -> Filename = " test file " ;
$doc -> Folder = " 0 " ;
$doc -> write ();
$doc -> addPage ( $s1 );
$doc -> addPage ( $s2 );
$doc -> addPage ( $s3 );
$pages = $doc -> Pages ();
$pagesArray = $pages -> toArray ();
2012-08-27 13:29:30 +02:00
$this -> assertEquals ( $pagesArray [ 0 ] -> ID , $s1 -> ID , " Page 1 associated correctly " );
$this -> assertEquals ( $pagesArray [ 1 ] -> ID , $s2 -> ID , " Page 2 associated correctly " );
$this -> assertEquals ( $pagesArray [ 2 ] -> ID , $s3 -> ID , " Page 3 associated correctly " );
2012-07-17 07:58:33 +02:00
$doc -> removePage ( $s1 );
$pages = $doc -> Pages ();
$pagesArray = $pages -> toArray (); //page 1 is missing
2012-08-27 13:29:30 +02:00
$this -> assertEquals ( $pagesArray [ 0 ] -> ID , $s2 -> ID , " Page 2 still associated correctly " );
$this -> assertEquals ( $pagesArray [ 1 ] -> ID , $s3 -> ID , " Page 3 still associated correctly " );
2012-07-17 07:58:33 +02:00
$documents = $s2 -> Documents ();
$documentsArray = $documents -> toArray ();
2012-07-25 08:08:15 +02:00
$this -> assertDOSContains ( array ( array ( 'Filename' => $doc -> Filename )), $documentsArray , " Document associated with page " );
2012-07-17 07:58:33 +02:00
$doc -> removeAllPages ();
$pages = $doc -> Pages ();
$this -> assertEquals ( $pages -> Count (), 0 , " All pages removed " );
$documents = $s2 -> Documents ();
$documentsArray = $documents -> toArray ();
$this -> assertNotContains ( $doc , $documentsArray , " Document no longer associated with page " );
}
2012-08-07 04:38:40 +02:00
function testDeletingPageWithAssociatedDocuments () {
$s1 = $this -> objFromFixture ( 'SiteTree' , 's1' );
$s2 = $this -> objFromFixture ( 'SiteTree' , 's2' );
$doc = new DMSDocument ();
$doc -> Filename = " delete test file " ;
$doc -> Folder = " 0 " ;
$doc -> write ();
$doc -> addPage ( $s1 );
$doc -> addPage ( $s2 );
$s1 -> delete ();
$documents = DataObject :: get ( " DMSDocument " , " Filename = 'delete test file' " );
$this -> assertEquals ( $documents -> Count (), '1' , " Deleting one of the associated page doesn't affect the single document we created " );
$s2 -> delete ();
$documents = DataObject :: get ( " DMSDocument " , " Filename = 'delete test file' " );
$this -> assertEquals ( $documents -> Count (), '0' , " However, deleting the last page that a document is associated with causes that document to be deleted as well " );
}
2012-07-17 07:58:33 +02:00
}