Drupal modules for browsing and managing Fedora-based digital repositories.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

118 lines
3.4 KiB

<?php
/**
* @file
* Tests to see if the hooks get called when appropriate.
*
* In the test module 'islandora_hooks_test' there are implementations
* of hooks being tested. These implementations modifies the session, and
* that's how we test if the hook gets called.
*
* To make sense of these tests reference islandora_hooks_test.module.
*/
class IslandoraIngestsTestCase extends IslandoraWebTestCase {
/**
* Gets info to display to describe this test.
*
* @see IslandoraWebTestCase::getInfo()
*/
public static function getInfo() {
return array(
'name' => 'Islandora Ingestion',
'description' => 'Ensure that the ingest forms function correctly.',
'group' => 'Islandora',
);
}
/**
* Creates an admin user and a connection to a fedora repository.
*
* @see IslandoraWebTestCase::setUp()
*/
public function setUp() {
parent::setUp('islandora_ingest_test');
$this->repository = $this->admin->repository;
$this->purgeTestObjects();
}
/**
* Free any objects/resources created for this test.
*
* @see IslandoraWebTestCase::tearDown()
*/
public function tearDown() {
$this->purgeTestObjects();
unset($this->repository);
parent::tearDown();
}
/**
* Purge any objects created by the test's in this class.
*/
public function purgeTestObjects() {
$objects = array(
'test:test',
);
foreach ($objects as $object) {
try {
$object = $this->repository->getObject($object);
$this->repository->purgeObject($object->id);
}
catch (Exception $e) {
// Meh... Either it didn't exist or the purge failed.
}
}
}
/**
* Test Ingest Steps.
*/
public function testIngest() {
// Login the Admin user.
$this->drupalLogin($this->admin);
// First step in form.
$this->drupalGet('test/ingest');
// Default model selected, has no additional steps.
$this->assertFieldByName('ingest', 'Ingest');
// Select a model with additional steps.
$edit = array(
'model' => 'test:testcmodel',
);
$this->drupalPostAJAX(NULL, $edit, 'model');
// Form now reflexts multiple steps.
$this->assertFieldByName('label', '');
$this->assertFieldByName('next', 'Next');
// Move to next step.
$edit = array(
'label' => 'foobar',
'model' => 'test:testcmodel',
);
$this->drupalPost(NULL, $edit, t('Next'));
$this->assertFieldByName('form_step_id', 'islandora_ingest_test_testcmodel');
$this->assertFieldByName('ingest', 'Ingest');
// Move back to first step.
$this->drupalPost(NULL, array(), t('Previous'));
// Try a different model that has an additional step.
$edit = array(
'model' => 'test:testcmodel2',
);
$this->drupalPostAJAX(NULL, $edit, 'model');
$edit = array(
'label' => 'foobar',
'model' => 'test:testcmodel2',
);
$this->drupalPost(NULL, $edit, t('Next'));
$this->assertFieldByName('form_step_id', 'islandora_ingest_test_testcmodel2');
$this->assertFieldByName('ingest', 'Ingest');
// Ingest the thing.
$this->drupalPost(NULL, array(), t('Ingest'));
// Test that the thing got made.
$object = islandora_object_load('test:test');
$this->assertEqual($object->label, 'foobar', 'Ingest Object matches submitted form values.');
$this->assertEqual($object->models, array('test:testcmodel2', 'fedora-system:FedoraObject-3.0'), 'Ingest Object matches submitted form values.');
}
}