diff --git a/includes/derivatives.inc b/includes/derivatives.inc index 47ec4fad..8a36512e 100644 --- a/includes/derivatives.inc +++ b/includes/derivatives.inc @@ -21,25 +21,29 @@ function islandora_run_derivatives(AbstractObject $object, $dsid) { islandora_derivative_logging($logging_results); } else { - batch_set( - // Title won't show for batch in a batch. + $operations = islandora_do_batch_derivatives( + $object, array( - 'init_message' => t('Preparing derivatives for @label', array('@label' => $object->label)), - 'error_message' => t('An error occured creating derivatives.'), - 'progress_message' => t( - 'Creating derivatives for @label
Time elapsed: @elapsed
- Estimated time remaining @estimate.', - array('@label' => $object->label) - ), - 'file' => drupal_get_path('module', 'islandora') . '/includes/regenerate_derivatives.form.inc', - 'operations' => islandora_do_batch_derivatives( - $object, - array( - 'source_dsid' => $dsid, - ) - ), + 'source_dsid' => $dsid, ) ); + if ($operations) { + batch_set( + // Title won't show for batch in a batch. + array( + 'init_message' => t('Preparing derivatives for @label', array('@label' => $object->label)), + 'error_message' => t('An error occured creating derivatives.'), + 'progress_message' => t( + 'Creating derivatives for @label
Time elapsed: @elapsed
+ Estimated time remaining @estimate.', + array('@label' => $object->label) + ), + 'file' => drupal_get_path('module', 'islandora') . '/includes/regenerate_derivatives.form.inc', + 'operations' => $operations, + 'finished' => 'islandora_regenerate_derivative_batch_finished', + ) + ); + } } } diff --git a/tests/includes/datastream_validators.inc b/tests/includes/datastream_validators.inc index 49c090e5..4768e989 100644 --- a/tests/includes/datastream_validators.inc +++ b/tests/includes/datastream_validators.inc @@ -48,7 +48,7 @@ function islandora_hex2int($hex) { * Abstraction for datastream validators. * * Classes extended from DatastreamValidator don't require much to be useful. - * They accept an IslandoraFedoraObject and a DSID to perform assertions on; + * They accept a Fedora object and a DSID to perform assertions on; * all you have to do is place a series of functions inside the extended class * using the naming convention assertThing(); each of these functions should * ideally assert one thing and one thing only (for simplicity's sake), and @@ -67,9 +67,9 @@ function islandora_hex2int($hex) { abstract class DatastreamValidator extends IslandoraTestUtilityClass { /** - * The IslandoraFedoraObject containing the datastream to test. + * The Fedora object containing the datastream to test. * - * @var IslandoraFedoraObject + * @var IslandoraFedoraObject|FedoraObject */ public $object; @@ -97,14 +97,14 @@ abstract class DatastreamValidator extends IslandoraTestUtilityClass { /** * Constructs a DatastreamValidator. * - * @param IslandoraFedoraObject $object + * @param IslandoraFedoraObject|FedoraObject $object * The object to grab the datastream from. * @param string $datastream * The DSID of the datastream itself. * @param array $params * An extra array of parameters the validator might need. */ - public function __construct(IslandoraFedoraObject $object, $datastream, array $params = array()) { + public function __construct($object, $datastream, array $params = array()) { $this->object = $object; $this->datastream = $datastream; $this->params = $params; @@ -343,7 +343,7 @@ class TextDatastreamValidator extends DatastreamValidator { /** * Constructor override; blow up if we don't have our two values. */ - public function __construct(IslandoraFedoraObject $object, $datastream, array $params = array()) { + public function __construct($object, $datastream, array $params = array()) { if (count($params) < 2) { throw new InvalidArgumentException('$params must contain at least two values to instantiate a TextDatastreamValidator.'); } @@ -386,14 +386,14 @@ class WAVDatastreamValidator extends DatastreamValidator { /** * We need a special constructor here to get the hex datastream content. * - * @param IslandoraFedoraObject $object + * @param IslandoraFedoraObject|FedoraObject $object * The object to grab the datastream from. * @param string $datastream * The DSID of the datastream itself. * @param array $params * An extra array of parameters the validator might need. */ - public function __construct(IslandoraFedoraObject $object, $datastream, array $params = array()) { + public function __construct($object, $datastream, array $params = array()) { parent::__construct($object, $datastream, $params); $this->datastreamContent = bin2hex($this->datastreamContent); } diff --git a/tests/includes/utilities.inc b/tests/includes/utilities.inc index e0672fd8..e0682397 100644 --- a/tests/includes/utilities.inc +++ b/tests/includes/utilities.inc @@ -261,17 +261,9 @@ class IslandoraTestUtilities extends IslandoraTestUtilityClass { public function __construct($configuration, array $params = array()) { $this->configuration = $configuration; $this->params = $params; - // If we have DB access, we want to use the Islandora Tuque wrappers. - if ($params['db_access']) { - $connection = islandora_get_tuque_connection(); - $this->repository = $connection->repository; - } - // Otherwise, get a generic Tuque repository. - else { - $connection = new RepositoryConnection($this->configuration['fedora_url'], $this->configuration['admin_user'], $this->configuration['admin_pass']); - $api = new FedoraApi($connection); - $this->repository = new FedoraRepository($api, new SimpleCache()); - } + $connection = new RepositoryConnection($this->configuration['fedora_url'], $this->configuration['admin_user'], $this->configuration['admin_pass']); + $api = new FedoraApi($connection); + $this->repository = new FedoraRepository($api, new SimpleCache()); } /** @@ -317,9 +309,9 @@ class IslandoraTestUtilities extends IslandoraTestUtilityClass { * Asserts that the given datastreams exist correctly on the object. * * @param AbstractObject $object - * The PID of the object + * The object to check. * @param array $datastreams - * An array of strings containing datastream names + * An array of strings containing datastream names. * * @return bool * TRUE on success, FALSE on fail. @@ -341,6 +333,30 @@ class IslandoraTestUtilities extends IslandoraTestUtilityClass { } } + /** + * Asserts that the given datastreams do not exist on the object. + * + * @param AbstractObject $object + * The object to check. + * @param array $datastreams + * An array of datastreams to confirm not present. + */ + public function assertNoDatastreams($object, array $datastreams) { + if (!is_object($object)) { + $this->addResult(FALSE, "Failed. Object passed in is invalid.", 'Islandora'); + return; + } + $found_datastreams = array_intersect_key(array_flip($datastreams), $object->repository->api->a->listDatastreams($object->id)); + + if (!empty($found_datastreams)) { + $this->addResult(FALSE, "Found unwanted datastream(s)" . implode(', ', array_flip($found_datastreams)) . " in object {$object->id}."); + return FALSE; + } + + $this->addResult(TRUE, "Unwanted datastream(s) not found in object {$object->id}"); + return TRUE; + } + /** * Attempts to validate an array of datastreams, generally via binary checks. *