Skip to content

Commit

Permalink
Add tests mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
LePetitTim committed Aug 2, 2022
1 parent 0b3c5d9 commit 0a81e3b
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 1 deletion.
2 changes: 1 addition & 1 deletion geotrek/common/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,7 @@ def get_mapping(self, src, val, mapping, partial):
if mapping is not None:
if val and val not in mapping.keys():
values = [str(key) for key in mapping.keys()]
self.add_warning(_("Bad value '{val}' for field {src}. Should be {values}").format(val=str(val), src=src, separator=self.separator, values=values))
self.add_warning(_("Bad value '{val}' for field {src}. Should be in {values}").format(val=str(val), src=src, separator=self.separator, values=values))
return None
if not val:
return None
Expand Down
49 changes: 49 additions & 0 deletions geotrek/common/tests/test_parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,37 @@ class OrganismEidParser(ExcelParser):
eid = 'organism'


class StructureExcelParser(ExcelParser):
model = Organism
fields = {
'organism': 'nOm',
'structure': 'structure'
}
eid = 'organism'


class OrganismNoMappingNoPartialParser(StructureExcelParser):
field_options = {
"structure": {"mapping": {"foo": "bar", "": "boo"}}
}
natural_keys = {
"structure": "name"
}


class OrganismNoMappingPartialParser(StructureExcelParser):
field_options = {
"structure": {"mapping": {"foo": "bar"}, "partial": True}
}
natural_keys = {
"structure": "name"
}


class OrganismNoNaturalKeysParser(StructureExcelParser):
warn_on_missing_fields = True


class AttachmentParser(AttachmentParserMixin, OrganismEidParser):
non_fields = {'attachments': 'photo'}

Expand Down Expand Up @@ -127,6 +158,24 @@ def test_databaseerror_except(self, mock_parse_row):
call_command('import', 'geotrek.common.tests.test_parsers.OrganismEidParser', filename, verbosity=2, stdout=output)
self.assertIn('foo bar', output.getvalue())

def test_fk_not_in_natural_keys(self):
output = StringIO()
filename = os.path.join(os.path.dirname(__file__), 'data', 'organism5.xls')
call_command('import', 'geotrek.common.tests.test_parsers.OrganismNoNaturalKeysParser', filename, verbosity=2, stdout=output)
self.assertIn("Destination field 'structure' not in natural keys configuration", output.getvalue())

def test_no_mapping_not_partial(self):
output = StringIO()
filename = os.path.join(os.path.dirname(__file__), 'data', 'organism5.xls')
call_command('import', 'geotrek.common.tests.test_parsers.OrganismNoMappingNoPartialParser', filename, verbosity=2, stdout=output)
self.assertIn("Bad value 'Structure' for field STRUCTURE. Should be in ['foo', '']", output.getvalue())

def test_no_mapping_partial(self):
output = StringIO()
filename = os.path.join(os.path.dirname(__file__), 'data', 'organism5.xls')
call_command('import', 'geotrek.common.tests.test_parsers.OrganismNoMappingPartialParser', filename, verbosity=2, stdout=output)
self.assertIn("Bad value 'Structure' for field STRUCTURE. Should contain ['foo']", output.getvalue())


@override_settings(MEDIA_ROOT=mkdtemp('geotrek_test'))
class AttachmentParserTests(TestCase):
Expand Down

0 comments on commit 0a81e3b

Please sign in to comment.