From 12b705db8b37dcfa9dfca97710f28d7eb334e025 Mon Sep 17 00:00:00 2001 From: jonathangreen Date: Mon, 13 May 2013 11:07:21 -0300 Subject: [PATCH 1/2] Added some test functions. --- islandora.info | 2 +- ...t_case.inc => islandora_web_test_case.inc} | 76 +++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) rename tests/{web_test_case.inc => islandora_web_test_case.inc} (67%) diff --git a/islandora.info b/islandora.info index e44ec721..54f62c05 100644 --- a/islandora.info +++ b/islandora.info @@ -11,7 +11,7 @@ files[] = includes/dublin_core.inc files[] = includes/tuque.inc files[] = includes/tuque_wrapper.inc files[] = includes/object.entity_controller.inc -files[] = tests/web_test_case.inc +files[] = tests/islandora_web_test_case.inc files[] = tests/authtokens.test files[] = tests/hooks.test files[] = tests/islandora_manage_permissions.test diff --git a/tests/web_test_case.inc b/tests/islandora_web_test_case.inc similarity index 67% rename from tests/web_test_case.inc rename to tests/islandora_web_test_case.inc index 8a5b9a00..4571ad6c 100644 --- a/tests/web_test_case.inc +++ b/tests/islandora_web_test_case.inc @@ -126,4 +126,80 @@ class IslandoraWebTestCase extends DrupalWebTestCase { unset($this->configuration); parent::tearDown(); } + + /** + * Asserts that the given datastreams exist on the object. + * + * @param AbstractObject $objectpid + * The PID of the object + * @param array $datastreams + * An array of strings containing datastream names + */ + public function assertDatastreams($object, array $datastreams) { + if (!is_object($object)) { + $this->fail("Failed. Object passed in is invalid."); + return; + } + + foreach($datastreams as $datastream) { + if (isset($object[$datastream])) { + $this->pass("Loaded datastream {$datastream} from PID {$object->id}"); + } + else { + $this->fail("Failed to load datastream {$datastream} from PID {$object->id}"); + } + } + } + + /** + * Gets a tuque object from a path. + * + * @param string $path + * A full or partial path to an islandora object. + * + * @return AbstractObject + * The pid of the object or FALSE if a PID is not found. + */ + public function getPidFromPath($path) { + $path_parts = explode('/', $path); + $array_length = count($path_parts); + for ($i = 0; $i < $array_length; $i++) { + if ($path_parts[$i] == 'islandora' && isset($path_parts[$i+1]) && $path_parts[$i+1] == 'object') { + if (isset($path_parts[$i+2])) { + return islandora_object_load(urldecode($path_parts[$i+2])); + } + } + } + $this->fail("Failed to parse path : $path."); + return FALSE; + } + + /** + * Deletes an object using the PID. This does the deletion using the UI. + * + * @param string $pid + * The PID of the collection to be deleted + */ + public function deleteObject($pid) { + $current_user = $this->loggedInUser; + $user = $this->drupalCreateUser(array('manage object properties', 'delete fedora objects and datastreams', 'view fedora repository objects')); + + $this->drupalLogin($user); + + $path = 'islandora/object/' . $pid . '/manage/properties'; + $edit = array(); + $this->drupalPost($path, $edit, t('Delete')); + $this->drupalPost($this->url, $edit, t('Delete')); + $object = islandora_object_load($pid); + + $this->drupalGet("islandora/object/$pid"); + $this->assertResponse(404, "Object $pid successfully deleted."); + + if ($current_user) { + $this->drupalLogin($current_user); + } + else { + $this->drupalLogout(); + } + } } From aac7a738f961e0eb86fe9ba6f7b63386641ed269 Mon Sep 17 00:00:00 2001 From: jonathangreen Date: Mon, 13 May 2013 11:22:27 -0300 Subject: [PATCH 2/2] Fix some coding standards. --- tests/islandora_web_test_case.inc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/islandora_web_test_case.inc b/tests/islandora_web_test_case.inc index 4571ad6c..8e3c8b83 100644 --- a/tests/islandora_web_test_case.inc +++ b/tests/islandora_web_test_case.inc @@ -130,7 +130,7 @@ class IslandoraWebTestCase extends DrupalWebTestCase { /** * Asserts that the given datastreams exist on the object. * - * @param AbstractObject $objectpid + * @param AbstractObject $object * The PID of the object * @param array $datastreams * An array of strings containing datastream names @@ -141,7 +141,7 @@ class IslandoraWebTestCase extends DrupalWebTestCase { return; } - foreach($datastreams as $datastream) { + foreach ($datastreams as $datastream) { if (isset($object[$datastream])) { $this->pass("Loaded datastream {$datastream} from PID {$object->id}"); } @@ -164,9 +164,9 @@ class IslandoraWebTestCase extends DrupalWebTestCase { $path_parts = explode('/', $path); $array_length = count($path_parts); for ($i = 0; $i < $array_length; $i++) { - if ($path_parts[$i] == 'islandora' && isset($path_parts[$i+1]) && $path_parts[$i+1] == 'object') { - if (isset($path_parts[$i+2])) { - return islandora_object_load(urldecode($path_parts[$i+2])); + if ($path_parts[$i] == 'islandora' && isset($path_parts[$i + 1]) && $path_parts[$i + 1] == 'object') { + if (isset($path_parts[$i + 2])) { + return islandora_object_load(urldecode($path_parts[$i + 2])); } } } @@ -182,7 +182,11 @@ class IslandoraWebTestCase extends DrupalWebTestCase { */ public function deleteObject($pid) { $current_user = $this->loggedInUser; - $user = $this->drupalCreateUser(array('manage object properties', 'delete fedora objects and datastreams', 'view fedora repository objects')); + $user = $this->drupalCreateUser(array( + 'manage object properties', + 'delete fedora objects and datastreams', + 'view fedora repository objects', + )); $this->drupalLogin($user);