def test_strip_taxonomic_authority_infraspecific_epithet_later(self): im = importer.Importer() name = im._strip_taxonomic_authority( \ 'Actaea spicata L. ssp. rubra (Ait.) Hulten') self.assertEqual('Actaea spicata ssp. rubra', name) # Test another connector, with the epithet coming even later. im = importer.Importer() name = im._strip_taxonomic_authority( \ 'Gerardia paupercula (Gray) Britt. var. typica Pennell') self.assertEqual('Gerardia paupercula var. typica', name)
def test_get_character_friendly_name_not_defined(self): im = importer.Importer() friendly_name = im._get_character_friendly_name('plant_habit', '') self.assertEqual('Plant habit', friendly_name) friendly_name = im._get_character_friendly_name( 'leaf_disposition', None) self.assertEqual('Leaf disposition', friendly_name)
def test_clean_up_html_font_tags(self): im = importer.Importer() html = ('<div><font color=""#333333"">non-grasses have very narrow ' 'leaves, but produce showy flowers</font></div>') expected = ('<div>non-grasses have very narrow leaves, but produce ' 'showy flowers</div>') self.assertEquals(expected, im._clean_up_html(html))
def test_has_unexpected_delimiter(self): im = importer.Importer() text = 'This, has, no, unexpected, delimiter' self.assertFalse( im._has_unexpected_delimiter(text, unexpected_delimiter='|')) text = 'This|has|an|unexpected|delimiter' self.assertTrue( im._has_unexpected_delimiter(text, unexpected_delimiter='|'))
def test_strip_taxonomic_authority_subspecies(self): im = importer.Importer() name = im._strip_taxonomic_authority( \ 'Lysimachia lanceolata subsp. hybrida (Michx.) J.D. Ray') self.assertEqual('Lysimachia lanceolata subsp. hybrida', name) # Test alternate connector. name = im._strip_taxonomic_authority( \ 'Lysimachia lanceolata ssp. hybrida (Michx.) J.D. Ray') self.assertEqual('Lysimachia lanceolata ssp. hybrida', name)
def test_strip_taxonomic_authority_missing_space_after_epithet(self): im = importer.Importer() name_missing_space = 'Lycopodium annotinum var. montanumTuckerman' name = im._strip_taxonomic_authority(name_missing_space) self.assertEqual('Lycopodium annotinum var. montanum', name) # Sometimes there are parentheses instead of a capital letter. name_missing_space = 'Huperzia selago ssp. appressa(Desv.)' name = im._strip_taxonomic_authority(name_missing_space) self.assertEqual('Huperzia selago ssp. appressa', name)
def test_import_characters(self): im = importer.Importer() im.import_characters( self.db, importer.PlainFile('.', testdata('characters.csv'))) f = open(testdata('characters.csv')) content = f.read() f.close() expected = len(content.splitlines()) - min(content.count('_min'), content.count('_max')) - 1 self.assertEquals(len(models.Character.objects.all()), expected)
def test_strip_taxonomic_authority_unexpected_characters(self): im = importer.Importer() # This name has some undesirable character data in it (showing up as # a dagger here), as copied from the CSV. It is decoded here using # Windows-1252 like the importer does when reading CSV files (see # CSVReader read method override in importer.py). name_with_unexpected_characters = \ 'Cornus amomum var. schuetzeana†(C.A. Mey.) Rickett' name = im._strip_taxonomic_authority(name_with_unexpected_characters) self.assertEqual(b'Cornus amomum var. schuetzeana', name)
def setUp(self): self.db = bulkup.Database(connection) im = importer.Importer() im.import_partner_sites(self.db) im.import_pile_groups( self.db, importer.PlainFile('.', testdata('pile_group_info.csv'))) im.import_piles(self.db, importer.PlainFile('.', testdata('pile_info.csv'))) im.import_taxa(self.db, importer.PlainFile('.', testdata('taxa.csv'))) im.import_distributions( importer.PlainFile('.', testdata('dist_north_america.csv')))
def test_strip_taxonomic_authority_forma(self): im = importer.Importer() name = im._strip_taxonomic_authority( \ ('Acanthocalycium spiniflorum f. klimpelianum (Weidlich & ' 'Werderm.) Donald')) self.assertEqual('Acanthocalycium spiniflorum f. klimpelianum', name) # Test alternate connector. name = im._strip_taxonomic_authority( \ ('Acanthocalycium spiniflorum forma klimpelianum (Weidlich & ' 'Werderm.) Donald')) self.assertEqual('Acanthocalycium spiniflorum forma klimpelianum', name)
def test_import_taxons(self): im = importer.Importer() im.import_partner_sites(self.db) im.import_pile_groups( self.db, importer.PlainFile('.', testdata('pile_group_info.csv'))) im.import_piles(self.db, importer.PlainFile('.', testdata('pile_info.csv'))) im.import_wetland_indicators( self.db, importer.PlainFile('.', testdata('wetland_indicators.csv'))) im.import_taxa(self.db, importer.PlainFile('.', testdata('taxa.csv'))) self.assertEquals(len(models.Taxon.objects.all()), 3522)
def setup_integration(test): pilegroup1 = models.PileGroup(name='pilegroup1') pilegroup1.save() pile1 = models.Pile(name='Carex') pile1.pilegroup = pilegroup1 pile1.save() im = importer.Importer() im._import_piles(testdata('pile_info.csv'), None) im._import_taxa(testdata('taxa.csv')) im._import_characters(testdata('characters.csv')) im._import_character_values(testdata('character_values.csv')) im._import_taxon_character_values(testdata('pile_lycophytes.csv')) im._import_taxon_character_values( testdata('pile_non_orchid_monocots_1.csv')) im._import_taxon_character_values( testdata('pile_non_orchid_monocots_2.csv')) im._import_taxon_character_values( testdata('pile_non_orchid_monocots_3.csv'))
def test_strip_taxonomic_authority_species_extra_punctuation(self): im = importer.Importer() name = im._strip_taxonomic_authority( \ 'Actaea alba, of authors not (L.) P. Mill.') self.assertEqual('Actaea alba', name)
def test_strip_taxonomic_authority_no_epithet_after_connector(self): im = importer.Importer() name = im._strip_taxonomic_authority('Betula lutea Michx. f.') self.assertEqual('Betula lutea', name)
def test_clean_up_html_non_breaking_spaces(self): im = importer.Importer() self.assertEquals( 'Remove non-breaking spaces. Please.', im._clean_up_html('Remove non-breaking spaces. Please.'))
def test_create_character_name(self): im = importer.Importer() name = im._create_character_name('stamen_morphology') self.assertEqual('Stamen morphology', name)
def test_strip_taxonomic_authority_skip_consecutive_connector(self): im = importer.Importer() name = im._strip_taxonomic_authority( \ 'Betula lutea Michx. f. var. fallax Fassett') self.assertEqual('Betula lutea var. fallax', name)
def test_strip_taxonomic_authority_subforma(self): im = importer.Importer() name = im._strip_taxonomic_authority( \ 'Saxifraga aizoon subf. surculosa Engl. & Irmsch.') self.assertEqual('Saxifraga aizoon subf. surculosa', name)
def test_get_character_friendly_name(self): im = importer.Importer() friendly_name = im._get_character_friendly_name( \ 'spike_number_per_stem', 'Number of spikes') self.assertEqual('Number of spikes', friendly_name)
def test_strip_taxonomic_authority_subvariety(self): im = importer.Importer() name = im._strip_taxonomic_authority( \ 'Potentilla anserina subvar. minima (Peterm. ex Th.Wolf) Th.Wolf') self.assertEqual('Potentilla anserina subvar. minima', name)
def test_strip_taxonomic_authority_variety(self): im = importer.Importer() name = im._strip_taxonomic_authority( \ 'Vitis labrusca var. subedentata Fern.') self.assertEqual('Vitis labrusca var. subedentata', name)
def test_strip_taxonomic_authority_species(self): im = importer.Importer() name = im._strip_taxonomic_authority('Viburnum cassanoides L.') self.assertEqual('Viburnum cassanoides', name)