Browse Source

better asserting objects

pull/606/head
qadan 9 years ago
parent
commit
d982ac1985
  1. 77
      tests/includes/utilities.inc

77
tests/includes/utilities.inc

@ -112,10 +112,7 @@ class IslandoraTestUtilities extends IslandoraTestUtilityClass {
* TRUE on success, FALSE on fail.
*/
public function assertDatastreams($object, array $datastreams) {
if (!self::assertFedoraObject($object)) {
$this->addResult(FALSE, "Failed. Object passed in is invalid.", 'Islandora');
}
else {
if (self::assertFedoraObject($object)) {
$missing_datastreams = array_diff_key(array_flip($datastreams), $object->repository->api->a->listDatastreams($object->id));
if (!empty($missing_datastreams)) {
@ -137,8 +134,8 @@ class IslandoraTestUtilities extends IslandoraTestUtilityClass {
* An array of datastreams to confirm not present.
*/
public function assertNoDatastreams($object, array $datastreams) {
if (!self::assertFedoraObject($object)) {
$this->addResult(FALSE, "Failed. Object passed in is invalid.", 'Islandora');
if (self::assertFedoraObject($object, FALSE)) {
$this->addResult("Failed to check the datastreams on the object; the object could not be loaded.");
return;
}
$found_datastreams = array_intersect_key(array_flip($datastreams), $object->repository->api->a->listDatastreams($object->id));
@ -169,8 +166,7 @@ class IslandoraTestUtilities extends IslandoraTestUtilityClass {
* for examples.
*/
public function validateDatastreams($object, array $datastreams) {
if (!self::assertFedoraObject($object)) {
if (self::assertFedoraObject($object, FALSE)) {
$this->addResult(FALSE, "Datastream validation failed; Object passed in is invalid.", 'Islandora');
return;
}
@ -347,48 +343,33 @@ QUERY;
}
/**
* Asserts that an object is a FedoraObject or an IslandoraFedoraObject.
*
* @param object $object
* The object to assess.
*
* @return bool
* TRUE if it is either of those object types, or FALSE otherwise.
*/
public static function assertFedoraObject($object) {
return ($object instanceof FedoraObject);
}
/**
* Asserts that the given PID represents a Fedora object.
* Asserts a Fedora object from an object or PID, and loads it if possible.
*
* @param string $pid
* The PID of the object.
* @param FedoraObject|string $object
* The object to assess, or a string to use as a PID.
* @param bool $exists
* Whether or not the object should exist in the repository, according to
* our assertion. Defaults to TRUE.
*
* @return bool
* TRUE if the object exists in the repository; FALSE otherwise.
* @return FedoraObject|bool
* The object in question if it was a FedoraObject or loaded into one, or
* FALSE otherwise.
*/
public function assertObjectExists($pid) {
$object = islandora_object_load($pid);
$exists = $this->assertFedoraObject($object);
$this->addResult($exists, "Object $pid exists in the repository.");
return $exists;
}
/**
* Asserts that the given PID does not represent a Fedora object.
*
* @param string $pid
* The PID of the object.
*
* @return bool
* TRUE if the object does not exist in the repository, or FALSE otherwise.
*/
public function assertNoObjectExists($pid) {
$object = islandora_object_load($pid);
$exists = $this->assertFedoraObject($object);
$this->addResult(!$exists, "Object $pid does not exist in the repository.");
return !$exists;
public static function assertFedoraObject($object, $exists = TRUE) {
if ($object instanceof FedoraObject) {
$this->addResult($exists, "Object loaded from $object->id is a Fedora repository object.");
return $object;
}
elseif (is_string($object)) {
$loaded_object = islandora_object_load($object);
if ($loaded_object instanceof FedoraObject) {
$this->addResult($exists, "Successfully loaded object $object from the Fedora repository.");
return $loaded_object;
}
$this->addResult($exists, "Object identified by $object was not found in the repository.");
return FALSE;
}
$this->addResult($exists, "Object passed in was not found in the repository.");
return FALSE;
}
}

Loading…
Cancel
Save