add test for different search combinations
authorKatja Luther <k.luther@bgbm.org>
Fri, 20 Jan 2017 09:13:48 +0000 (10:13 +0100)
committerKatja Luther <k.luther@bgbm.org>
Fri, 20 Jan 2017 09:13:48 +0000 (10:13 +0100)
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImpl.java
cdmlib-persistence/src/test/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/TaxonDaoHibernateImplTest.java

index 626984650611b31083418d34bf7f98cf30412b57..146e3a0c0fdf332b3680d014dc4e80df5acf5797 100644 (file)
@@ -491,7 +491,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
             String classString;
             if (doTaxa && doSynonyms){
                 classString = "TaxonBase";
-            } else if (doTaxa){
+            } else if (doTaxa || doCommonNames){
                 classString = "Taxon";
             } else if (doSynonyms){
                 classString = "Synonym";
@@ -507,8 +507,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
             }
             if(!doCount){
                 String orderBy = " ORDER BY ";
-              // String alphabeticBase = " case when t.name.genusOrUninomial like '\"%\"' then 1 else 0 end, t.name.genusOrUninomial , case when t.name.specificEpithet like '\"%\"' then 1 else 0 end, t.name.specificEpithet, t.name.rank desc, t.name.nameCache";
-               String alphabeticBase = " t.name.nameCache";
+                String alphabeticBase = " t.name.genusOrUninomial, case when t.name.specificEpithet like '\"%\"' then 1 else 0 end, t.name.specificEpithet, t.name.rank desc, t.name.nameCache";
 
                 if (order == NameSearchOrder.LENGTH_ALPHA_NAME){
                     orderBy += " length(t.name.nameCache), " + alphabeticBase;
@@ -536,7 +535,7 @@ public class TaxonDaoHibernateImpl extends IdentifiableDaoBase<TaxonBase> implem
                 if (taxa.size()== 0 && synonyms.size() == 0){
                     return null;
                 }
-            }else if(doTaxa){
+            }else if(doTaxa || doCommonNames || doIncludeMisappliedNames){
                 //find taxa
                 if (taxa.size()>0){
                     query.setParameterList("taxa", taxa );
index 35985a25ac12689117e4f0214022b779b2d6bf1e..914f516fb0ddefdbd5f9763d8f8fbf8d155b059c 100644 (file)
@@ -250,6 +250,28 @@ public class TaxonDaoHibernateImplTest extends CdmTransactionalIntegrationTest {
         results = taxonDao.getTaxaByName(false, false, true, false, false, "*", null, MatchMode.BEGINNING, null, null, null, null, null);
         Assert.assertEquals("There should be 3 Taxa", 3, results.size());
 
+    }
+    /**
+     * Test for all not covered possibilities of searches
+     */
+    @Test
+    @DataSet (loadStrategy=CleanSweepInsertLoadStrategy.class, value="TaxonDaoHibernateImplTest.testGetTaxaByNameAndArea.xml")
+    public void testGetTaxaByNameVariants(){
+        List<TaxonBase> results = taxonDao.getTaxaByName(false, false, false, true, false, "c*", null, MatchMode.BEGINNING, null, null, null, null, null);
+        Assert.assertEquals("There should be 1 Taxa", 1, results.size());
+
+        results = taxonDao.getTaxaByName(false, false, true, true, false, "R*", null, MatchMode.BEGINNING, null, null, null, null, null);
+        Assert.assertEquals("There should be 1 Taxa", 1, results.size());
+
+        results = taxonDao.getTaxaByName(false, true, true, true, false, "R*", null, MatchMode.BEGINNING, null, null, null, null, null);
+        Assert.assertEquals("There should be 1 Taxa", 1, results.size());
+
+        results = taxonDao.getTaxaByName(false, true, false, true, false, "c*", null, MatchMode.BEGINNING, null, null, null, null, null);
+        Assert.assertEquals("There should be 1 Taxa", 1, results.size());
+
+        results = taxonDao.getTaxaByName(true, false, false, true, false, "c*", null, MatchMode.BEGINNING, null, null, null, null, null);
+        Assert.assertEquals("There should be 1 Taxa", 1, results.size());
+
     }
 
     /**