silverstripe-dms/tests/DMSTagTest.php

120 lines
3.6 KiB
PHP

<?php
class DMSTagTest extends SapphireTest {
//static $fixture_file = "dms/tests/dmstest.yml";
function tearDownOnce() {
$d = DataObject::get("DMSDocument");
foreach($d as $d1) {
$d1->delete();
}
$t = DataObject::get("DMSTag");
foreach($t as $t1) {
$t1->delete();
}
}
function testAddingTags() {
$dms = DMS::getDMSInstance();
$doc = new DMSDocument($dms);
$doc->Filename = "test file";
$doc->Folder = "0";
$doc->write();
$doc->addTag("fruit","banana");
$doc->addTag("fruit","orange");
$doc->addTag("fruit","apple");
$doc->addTag("company","apple");
$doc->addTag("company","SilverStripe");
$fruits = $doc->getTags("fruit");
$this->assertNotNull($fruits,"Something returned for fruit tags");
$this->assertEquals(count($fruits),3,"3 fruit tags returned");
$this->assertTrue(in_array("banana",$fruits),"correct fruit tags returned");
//sneakily create another document and link one of the tags to that, too
$doc2 = new DMSDocument($dms);
$doc2->Filename = "sneaky file";
$doc2->Folder = "0";
$doc2->write();
$doc2->addTag("fruit","banana");
$fruits = $doc2->getTags("fruit");
$this->assertNotNull($fruits,"Something returned for fruit tags");
$this->assertEquals(count($fruits),1,"Only 1 fruit tags returned");
//tidy up by deleting all tags from doc 1 (But the banana fruit tag should remain)
$doc->removeAllTags();
//banana fruit remains
$fruits = $doc2->getTags("fruit");
$this->assertNotNull($fruits,"Something returned for fruit tags");
$this->assertEquals(count($fruits),1,"Only 1 fruit tags returned");
$tags = DataObject::get("DMSTag");
$this->assertEquals($tags->Count(),1,"A single DMS tag objects remain after deletion of all tags on doc1");
//delete all tags off doc2 to complete the tidy up
$doc2->removeAllTags();
$tags = DataObject::get("DMSTag");
$this->assertEquals($tags->Count(),0,"No DMS tag objects remain after deletion");
}
function testRemovingTags() {
$dms = DMS::getDMSInstance();
$doc = new DMSDocument($dms);
$doc->Filename = "test file";
$doc->Folder = "0";
$doc->write();
$doc->addTag("fruit","banana");
$doc->addTag("fruit","orange");
$doc->addTag("fruit","apple");
$doc->addTag("company","apple");
$doc->addTag("company","SilverStripe");
$companies = $doc->getTags("company");
$this->assertNotNull($companies,"Companies returned before deletion");
$this->assertEquals(count($companies),2,"Two companies returned before deletion");
//delete an entire category
$doc->removeTag("company");
$companies = $doc->getTags("company");
$this->assertNull($companies,"All companies deleted");
$fruit = $doc->getTags("fruit");
$this->assertEquals(count($fruit),3,"Three fruits returned before deletion");
//delete a single tag
$doc->removeTag("fruit","apple");
$fruit = $doc->getTags("fruit");
$this->assertEquals(count($fruit),2,"Two fruits returned after deleting one");
//delete a single tag
$doc->removeTag("fruit","orange");
$fruit = $doc->getTags("fruit");
$this->assertEquals(count($fruit),1,"One fruits returned after deleting two");
//nothing happens when deleting tag that doesn't exist
$doc->removeTag("fruit","jellybean");
$fruit = $doc->getTags("fruit");
$this->assertEquals(count($fruit),1,"One fruits returned after attempting to delete non-existent fruit");
//delete the last fruit
$doc->removeTag("fruit","banana");
$fruit = $doc->getTags("fruit");
$this->assertNull($fruit,"All fruits deleted");
$tags = DataObject::get("DMSTag");
$this->assertEquals($tags->Count(),0,"No DMS tag objects remain after deletion");
}
}