Browse Source

Merge pull request #400 from statonlab/na-tv3-small_fixes

Na tv3 small fixes
Stephen Ficklin 6 years ago
parent
commit
133c3b8f4e

+ 73 - 0
tests/tripal_chado/TaxonomyImporterTest.php

@@ -0,0 +1,73 @@
+<?php
+
+namespace Tests\tripal_chado;
+
+use StatonLab\TripalTestSuite\DBTransaction;
+use StatonLab\TripalTestSuite\TripalTestCase;
+
+require_once(__DIR__ . '/../../tripal_chado/includes/TripalImporter/TaxonomyImporter.inc');
+
+
+class TaxonomyImporterTest extends TripalTestCase {
+  use DBTransaction;
+
+
+  /*
+   * Adds an organism and checks that the importer runs and adds some properties to it.
+   */
+  public function testImportExistingTaxonomyLoader() {
+    $org = [
+      'genus' => 'Armadillo',
+      'species' => 'officinalis',
+      'abbreviation' => 'A. officinalis',
+      'common_name' => 'pillbug',
+      'type_id' => null
+    ];
+
+    $organism = factory('chado.organism')->create($org);
+  //  $this->publish('organism');
+    $file = [];
+    $run_args = ['import_existing' => TRUE];
+    $importer = new \TaxonomyImporter();
+    ob_start();
+    $importer->create($run_args, $file);
+    $importer->run();
+    ob_end_clean();
+
+
+    $query = db_select('chado.organism', 'o');
+    $query->join('chado.organismprop', 'op', 'o.organism_id = op.organism_id');
+    $query->fields('op', ['value'])
+      ->condition('o.organism_id', $organism->organism_id);
+    $result = $query->execute()->fetchAll();
+    $this->assertNotEmpty($result);
+
+  }
+
+  /**
+   * the importer can also load an array of pubmed ids.  We use the pillbug again.
+   *
+   * https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?mode=Info&id=96821
+   *
+   * @throws \Exception
+   */
+  public function testImportOrganismFromTaxID() {
+
+    $file = [];
+    $run_args = ['taxonomy_ids' => '96821']; //its the pillbug again!
+    $importer = new \TaxonomyImporter();
+
+    ob_start();
+    $importer->create($run_args, $file);
+    $importer->run();
+    ob_end_clean();
+
+    $query = db_select('chado.organism', 'o');
+    $query->fields('o', ['genus'])
+      ->condition('o.species', 'officinalis');
+    $result = $query->execute()->fetchField();
+    $this->assertEquals('Armadillo', $result);
+
+  }
+
+}

+ 4 - 1
tripal_chado/includes/TripalImporter/TaxonomyImporter.inc

@@ -912,6 +912,9 @@ class TaxonomyImporter extends TripalImporter {
       'dbxref_id' => $dbxref->dbxref_id,
       'organism_id' => $organism_id,
     );
-    chado_insert_record('organism_dbxref', $values);
+
+   if (!chado_select_record('organism_dbxref', ['organism_dbxref_id'], $values)) {
+     chado_insert_record('organism_dbxref', $values);
+   }
   }
 }