|
@@ -14,10 +14,15 @@ class ApiTest extends TripalTestCase {
|
|
|
*
|
|
|
* Specifically tripal_jbrowse_mgmt_save_settings()
|
|
|
* and tripal_jbrowse_mgmt_get_settings().
|
|
|
- *
|
|
|
- * @dataProvider settingsProvider
|
|
|
*/
|
|
|
- public function testSettings($test_settings) {
|
|
|
+ public function testSettings() {
|
|
|
+
|
|
|
+ $test_settings = [
|
|
|
+ 'bin_path' => 'test/fake/path',
|
|
|
+ 'link' => 'test/fake/path',
|
|
|
+ 'data_dir' => 'test/fake/path',
|
|
|
+ 'menu_template' => [],
|
|
|
+ ];
|
|
|
|
|
|
tripal_jbrowse_mgmt_save_settings($test_settings);
|
|
|
$retrieved = tripal_jbrowse_mgmt_get_settings();
|
|
@@ -38,33 +43,25 @@ class ApiTest extends TripalTestCase {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- // Associated Data Provider for testing settings.
|
|
|
- public function settingsProvider() {
|
|
|
- $faker = Factory::create();
|
|
|
- $sets = [];
|
|
|
-
|
|
|
- // No settings.
|
|
|
- $sets[] = [[]];
|
|
|
-
|
|
|
- // Full Fake Settings.
|
|
|
- $sets[] = [[
|
|
|
- 'bin_path' => 'test/fake/path',
|
|
|
- 'link' => 'test/fake/path',
|
|
|
- 'data_dir' => 'test/fake/path',
|
|
|
- 'menu_template' => [],
|
|
|
- ]];
|
|
|
-
|
|
|
- return $sets;
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* Test Instance Create-Retrieve-Update-Delete.
|
|
|
- *
|
|
|
- * @dataProvider instanceProvider
|
|
|
*/
|
|
|
- public function testInstanceCRUD($testdata) {
|
|
|
+ public function testInstanceCRUD() {
|
|
|
putenv("TRIPAL_SUPPRESS_ERRORS=TRUE");
|
|
|
|
|
|
+ $organism = factory('chado.organism')->create();
|
|
|
+
|
|
|
+ // Full Fake Instance Details.
|
|
|
+ $faker = Factory::create();
|
|
|
+ $testdata = [
|
|
|
+ 'organism_id' => $organism->organism_id,
|
|
|
+ 'title' => $faker->words(3, TRUE),
|
|
|
+ 'description' => $faker->sentence(25, TRUE),
|
|
|
+ 'created_at' => $faker->unixTime(),
|
|
|
+ 'file' => '/path/to/fake/file',
|
|
|
+ ];
|
|
|
+
|
|
|
// Check we cannot create a JBrowse instance without an organism.
|
|
|
$noOrganism = $testdata;
|
|
|
unset($noOrganism['organism_id']);
|
|
@@ -116,23 +113,167 @@ class ApiTest extends TripalTestCase {
|
|
|
|
|
|
putenv("TRIPAL_SUPPRESS_ERRORS");
|
|
|
}
|
|
|
- // Associated Data Provider for testing instances.
|
|
|
- public function instanceProvider() {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Test Track Create-Retrieve-Update-Delete.
|
|
|
+ */
|
|
|
+ public function testTrackCRUD() {
|
|
|
+
|
|
|
+ // Fake Instance.
|
|
|
$faker = Factory::create();
|
|
|
- $sets = [];
|
|
|
+ $organism = factory('chado.organism')->create();
|
|
|
+ $instance_details = [
|
|
|
+ 'organism_id' => $organism->organism_id,
|
|
|
+ 'title' => $faker->words(3, TRUE),
|
|
|
+ 'description' => $faker->sentence(25, TRUE),
|
|
|
+ 'created_at' => $faker->unixTime(),
|
|
|
+ 'file' => '/path/to/fake/file',
|
|
|
+ ];
|
|
|
+ $instance_id = tripal_jbrowse_mgmt_create_instance($instance_details);
|
|
|
+ $instance = tripal_jbrowse_mgmt_get_instance($instance_id);
|
|
|
|
|
|
+ $path = tripal_jbrowse_mgmt_get_track_list_file_path($instance);
|
|
|
+ $this->assertNotFalse($path,
|
|
|
+ "Unable to retrieve the path to the trackList.json");
|
|
|
+
|
|
|
+ // Fake track details.
|
|
|
+ $testdata = [
|
|
|
+ 'label' => $faker->words(2, TRUE),
|
|
|
+ 'track_type' => 'CanvasFeatures',
|
|
|
+ 'file_type' => 'gff',
|
|
|
+ 'created_at' => $faker->unixTime(),
|
|
|
+ 'file' => '/path/to/fake/file',
|
|
|
+ ];
|
|
|
+
|
|
|
+ // First retrieve when there are no tracks.
|
|
|
+ $tracks = tripal_jbrowse_mgmt_get_tracks($instance);
|
|
|
+ $this->assertCount(0, $tracks,
|
|
|
+ "There should not be tracks as we just created this instance.");
|
|
|
+
|
|
|
+ // Create tracks.
|
|
|
+ $track_id = tripal_jbrowse_mgmt_create_track($instance, $testdata);
|
|
|
+ $this->assertNotFalse($track_id,
|
|
|
+ "We should have a track created successfully.");
|
|
|
+
|
|
|
+ // Retrieve our newly created track.
|
|
|
+ $track = tripal_jbrowse_mgmt_get_track($track_id);
|
|
|
+ $this->assertNotFalse($track, "Unable to create track.");
|
|
|
+ $this->assertEquals($testdata['label'], $track->label,
|
|
|
+ "The label of our new track didn't match what we submitted.");
|
|
|
+ $this->assertEquals($instance->id, $track->instance_id,
|
|
|
+ "The instance_id of our new track didn't match what we submitted.");
|
|
|
+ $this->assertEquals($instance->organism_id, $track->organism_id,
|
|
|
+ "The organism_id of our new track didn't match what we submitted.");
|
|
|
+
|
|
|
+ // Retrieve track with a condition.
|
|
|
+ $tracks = tripal_jbrowse_mgmt_get_tracks($instance, ['label' => $testdata['label']]);
|
|
|
+ $this->assertCount(1, $tracks, "We were not able to select a track we knew should exist.");
|
|
|
+
|
|
|
+ // Now update it.
|
|
|
+ $new_label = 'NEW LABEL ' . uniqid();
|
|
|
+ $success = tripal_jbrowse_mgmt_update_track($track, ['label' => $new_label]);
|
|
|
+ $this->assertNotFalse($success, "Unable to update track label.");
|
|
|
+ $new_track = tripal_jbrowse_mgmt_get_track($track_id);
|
|
|
+ $this->assertEquals($new_label, $new_track->label,
|
|
|
+ "The label of the track was not updated.");
|
|
|
+
|
|
|
+ // Finally, delete it.
|
|
|
+ $success = tripal_jbrowse_mgmt_delete_track($track_id);
|
|
|
+ $this->assertNotFalse($success, "Unable to delete track.");
|
|
|
+ $success = tripal_jbrowse_mgmt_delete_track($track_id);
|
|
|
+ $this->assertEquals(0, $success, "Deleted a track that doesn't exist?");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Test organism-related api functions.
|
|
|
+ */
|
|
|
+ public function testOrganismAPI() {
|
|
|
+
|
|
|
+ // Fake Organism.
|
|
|
+ $faker = Factory::create();
|
|
|
$organism = factory('chado.organism')->create();
|
|
|
|
|
|
- // Full Fake Instance Details.
|
|
|
- $sets[] = [[
|
|
|
+ $organism_list = tripal_jbrowse_mgmt_get_organisms_list();
|
|
|
+ $this->assertNotCount(0, $organism_list, "There should be at least one organism.");
|
|
|
+ $this->assertArrayContainsObjectValue($organism_list, 'organism_id', $organism->organism_id);
|
|
|
+
|
|
|
+ $organism_name = tripal_jbrowse_mgmt_construct_organism_name($organism);
|
|
|
+ $this->assertRegexp('/'.$organism->genus.'/', $organism_name,
|
|
|
+ "The organism name did not contain the genus.");
|
|
|
+ $this->assertRegexp('/'.$organism->species.'/', $organism_name,
|
|
|
+ "The organism name did not contain the species.");
|
|
|
+
|
|
|
+ $slug = tripal_jbrowse_mgmt_make_slug($organism_name);
|
|
|
+ $this->assertNotRegexp('/ /', $slug,
|
|
|
+ "The organism slug should not contain spaces.");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Test Instance Properties Create-Retrieve-Update.
|
|
|
+ */
|
|
|
+ public function testInstanceProperyCRU() {
|
|
|
+
|
|
|
+ // Fake Instance.
|
|
|
+ $faker = Factory::create();
|
|
|
+ $organism = factory('chado.organism')->create();
|
|
|
+ $instance_details = [
|
|
|
'organism_id' => $organism->organism_id,
|
|
|
'title' => $faker->words(3, TRUE),
|
|
|
'description' => $faker->sentence(25, TRUE),
|
|
|
'created_at' => $faker->unixTime(),
|
|
|
'file' => '/path/to/fake/file',
|
|
|
- ]];
|
|
|
+ ];
|
|
|
+ $instance_id = tripal_jbrowse_mgmt_create_instance($instance_details);
|
|
|
+
|
|
|
+ $testdata = [
|
|
|
+ $faker->word() => $faker->words(3, TRUE),
|
|
|
+ $faker->word() => $faker->words(2, TRUE),
|
|
|
+ $faker->word() => $faker->words(10, TRUE),
|
|
|
+ ];
|
|
|
+
|
|
|
+ // Create.
|
|
|
+ tripal_jbrowse_mgmt_save_instance_properties($instance_id, $testdata);
|
|
|
+
|
|
|
+ // Retrieve.
|
|
|
+ $properties = tripal_jbrowse_mgmt_get_instance_properties($instance_id);
|
|
|
+ $this->assertIsArray($properties, "Unable to retrieve newly created properties.");
|
|
|
+ $this->assertCount(3, $properties,
|
|
|
+ "There was not the expected count of properties.");
|
|
|
+
|
|
|
+ // Update single property.
|
|
|
+ $property_name = key($testdata);
|
|
|
+ $new_value = 'NEW VALUE '.uniqid();
|
|
|
+ tripal_jbrowse_mgmt_save_instance_property($instance_id, $property_name, $new_value);
|
|
|
+ $retrieved_value = tripal_jbrowse_mgmt_get_instance_property($instance_id, $property_name);
|
|
|
+ $this->assertEquals($new_value, $retrieved_value,
|
|
|
+ "We were unable to update a single property.");
|
|
|
|
|
|
- return $sets;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Test Miscellaneous API functions.
|
|
|
+ */
|
|
|
+ public function testMiscAPI() {
|
|
|
+
|
|
|
+ $track_types = tripal_jbrowse_mgmt_get_track_types();
|
|
|
+ $this->assertIsArray($track_types,
|
|
|
+ "The track types should be an array.");
|
|
|
+
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * Provide an assertion to check properties of an array of objects.
|
|
|
+ *
|
|
|
+ * For example, if you have an array of organism objects, the following code
|
|
|
+ * would check that one object in the array has an organism_id of 50.
|
|
|
+ * @code $this->assertArrayContainsObjectValue($array, 'organism_id', 50);
|
|
|
+ */
|
|
|
+ private function assertArrayContainsObjectValue($theArray, $attribute, $value)
|
|
|
+ {
|
|
|
+ foreach($theArray as $arrayItem) {
|
|
|
+ if($arrayItem->$attribute == $value) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|