Skip to content

Commit

Permalink
Merge branch 'master' into sub_superordinates_admin_ui
Browse files Browse the repository at this point in the history
  • Loading branch information
Vanderhaegen Cedrik committed Dec 22, 2014
2 parents 38d64c9 + d57edb6 commit febe53b
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 1 deletion.
21 changes: 21 additions & 0 deletions atramhasis/mappers.py
Expand Up @@ -90,6 +90,16 @@ def map_concept(concept, concept_json, db_session):
matches.append(match)
concept.matches = matches

concept.narrower_collections.clear()
narrower_collections = concept_json.get('subordinate_arrays', [])
for narrower in narrower_collections:
try:
narrower_collection = db_session.query(Collection)\
.filter_by(concept_id=narrower['id'], conceptscheme_id=concept.conceptscheme_id).one()
except NoResultFound:
narrower_collection = Collection(concept_id=narrower['id'], conceptscheme_id=concept.conceptscheme_id)
concept.narrower_collections.add(narrower_collection)

if concept.type == 'collection':
concept.members.clear()
members = concept_json.get('members', [])
Expand All @@ -100,4 +110,15 @@ def map_concept(concept, concept_json, db_session):
except NoResultFound:
member_concept = Concept(concept_id=member['id'], conceptscheme_id=concept.conceptscheme_id)
concept.members.add(member_concept)

concept.broader_concepts.clear()
broader_concepts = concept_json.get('superordinates', [])
for broader in broader_concepts:
try:
broader_concept = db_session.query(Concept)\
.filter_by(concept_id=broader['id'], conceptscheme_id=concept.conceptscheme_id).one()
except NoResultFound:
broader_concept = Concept(concept_id=broader['id'], conceptscheme_id=concept.conceptscheme_id)
concept.broader_concepts.add(broader_concept)

return concept
26 changes: 25 additions & 1 deletion tests/test_mappers.py
Expand Up @@ -58,7 +58,7 @@ def filter_by_mock_concept(concept_id, conceptscheme_id):
if concept_id in (7, 11, 12):
raise NoResultFound()
filter_mock = Mock()
if concept_id == 999:
if concept_id in (999, 19):
thing = Collection(id=concept_id, concept_id=concept_id, conceptscheme_id=conceptscheme_id)
thing.type = 'collection'
else:
Expand Down Expand Up @@ -189,3 +189,27 @@ def test_mapping_matches_new_concept(self):
self.assertTrue(hasattr(result_concept, 'matches'))
self.assertEqual(2, len(result_concept.matches))
self.assertIn(result_concept.matches[0].uri, ["urn:sample:666", "urn:somewhere:93"])

def test_mapping_subordinate_arrays(self):
test_json["subordinate_arrays"] = [{"id": 19}]
result_concept = map_concept(self.concept, test_json, self.request.db)
self.assertIsNotNone(result_concept)
self.assertTrue(hasattr(result_concept, 'narrower_collections'))
self.assertEqual(1, len(result_concept.narrower_collections))
self.assertEqual([c for c in result_concept.narrower_collections][0].concept_id, 19)

def test_mapping_subordinate_arrays_no_result(self):
test_json["subordinate_arrays"] = [{"id": 11}]
result_concept = map_concept(self.concept, test_json, self.request.db)
self.assertIsNotNone(result_concept)
self.assertTrue(hasattr(result_concept, 'narrower_collections'))
self.assertEqual(1, len(result_concept.narrower_collections))
self.assertEqual([c for c in result_concept.narrower_collections][0].concept_id, 11)

def test_mapping_superordinates(self):
json_collection["superordinates"] = [{"id": 12}]
result_collection = map_concept(self.collection, json_collection, self.request.db)
self.assertIsNotNone(result_collection)
self.assertTrue(hasattr(result_collection, 'broader_concepts'))
self.assertEqual(1, len(result_collection.broader_concepts))
self.assertEqual([c for c in result_collection.broader_concepts][0].concept_id, 12)

0 comments on commit febe53b

Please sign in to comment.