def test_merge_dedup_sources(self): # we're going to merge joe into zuma joe = Person.query.get(self.fx.PersonData.joe_author.id) zuma = Person.query.get(self.fx.PersonData.zuma.id) doc1 = Document.query.get(self.fx.DocumentData.simple.id) doc2 = Document.query.get(self.fx.DocumentData.simple2.id) # doc1 already has Zuma and Joe as sources, so we should only # wind up with Zuma at the end doc1.add_source(DocumentSource(person=zuma, source_type='person')) doc1.add_source(DocumentSource(person=joe, source_type='person')) # doc2 only has joe doc2.add_source(DocumentSource(person=joe, source_type='person')) db.session.flush() db.session.commit() joe.merge_into(zuma) db.session.flush() db.session.commit() doc1 = Document.query.get(self.fx.DocumentData.simple.id) doc2 = Document.query.get(self.fx.DocumentData.simple2.id) self.assertEqual([zuma], [ds.person for ds in doc1.sources]) self.assertEqual([zuma], [ds.person for ds in doc2.sources])
def test_relearn_affiliation_remains_same(self): zuma = Person.query.get(self.fx.PersonData.zuma.id) self.assertIsNone(zuma.affiliation) # set to ANC anc = Affiliation.query.filter(Affiliation.code == '4.3').one() zuma.affiliation = anc # shouldn't do anything self.assertFalse(zuma.relearn_affiliation()) # add an ANC source from today doc1 = Document.query.get(self.fx.DocumentData.simple.id) doc1.published_at = datetime.datetime.utcnow() ds = DocumentSource() ds.document = doc1 ds.person = zuma ds.affiliation = anc # add a DA source from a while ago doc2 = Document.query.get(self.fx.DocumentData.simple.id) doc2.published_at = datetime.datetime.utcnow() - datetime.timedelta( days=3) ds = DocumentSource() ds.document = doc2 ds.person = zuma ds.affiliation = Affiliation.query.filter( Affiliation.code == '4.8').one() self.db.session.add(ds) self.db.session.flush() self.assertFalse(zuma.relearn_affiliation()) self.assertEqual(anc, zuma.affiliation)
def test_diff_person(self): self.assertNotEqual( DocumentSource(source_type='person', unnamed=False, person_id=1, source_function_id=1, affiliation_id=1), DocumentSource(source_type='person', unnamed=False, person_id=2, source_function_id=1, affiliation_id=2))
def test_same_person_unnamed(self): self.assertEqual( DocumentSource(source_type='person', unnamed=True, source_function_id=1, affiliation_id=1, quoted=1), DocumentSource(source_type='person', unnamed=True, source_function_id=1, affiliation_id=1, quoted=0))
def test_same_secondary(self): self.assertEqual( DocumentSource(source_type='secondary', unnamed=False, name='Source', source_function_id=1, affiliation_id=1), DocumentSource(source_type='secondary', unnamed=False, name='Source', source_function_id=1, affiliation_id=1))
def test_same_child_unnamed(self): self.assertEqual( DocumentSource(source_type='child', unnamed=True, unnamed_race_id=1, unnamed_gender_id=1, source_age_id=1, source_role_id=1, quoted=0), DocumentSource(source_type='child', unnamed=True, unnamed_race_id=1, unnamed_gender_id=1, source_age_id=1, source_role_id=1, quoted=1))
def test_relearn_affiliation_changes_none_set(self): zuma = Person.query.get(self.fx.PersonData.zuma.id) self.assertIsNone(zuma.affiliation) # shouldn't do anything self.assertFalse(zuma.relearn_affiliation()) # add an ANC source doc = Document.query.get(self.fx.DocumentData.simple.id) doc.published_at = datetime.datetime.utcnow() ds = DocumentSource() ds.document = doc ds.person = zuma anc = Affiliation.query.filter(Affiliation.code == '4.3').one() ds.affiliation = anc self.db.session.add(ds) self.db.session.flush() self.assertTrue(zuma.relearn_affiliation()) self.assertEqual(anc, zuma.affiliation)
def test_diff_secondary(self): self.assertNotEqual( DocumentSource(source_type='secondary', unnamed=False, name='Source', source_function_id=1, affiliation_id=1), DocumentSource(source_type='secondary', unnamed=False, name='Source', source_function_id=2, affiliation_id=1)) self.assertNotEqual( DocumentSource(source_type='secondary', unnamed=False, name='Source', source_function_id=1, affiliation_id=1), DocumentSource(source_type='secondary', unnamed=False, name='Source', source_function_id=1, affiliation_id=2)) self.assertNotEqual( DocumentSource(source_type='secondary', unnamed=False, name='Blah ', source_function_id=1, affiliation_id=1), DocumentSource(source_type='secondary', unnamed=False, name='Source', source_function_id=1, affiliation_id=1))
def test_diff_child_named(self): self.assertNotEqual( DocumentSource(source_type='child', unnamed=False, name='Fred', unnamed_race_id=2, unnamed_gender_id=1, source_age_id=1, source_role_id=1, quoted=0), DocumentSource(source_type='child', unnamed=False, name='Fred', unnamed_race_id=1, unnamed_gender_id=1, source_age_id=1, source_role_id=1, quoted=0)) self.assertNotEqual( DocumentSource(source_type='child', unnamed=False, name='Fred', unnamed_race_id=1, unnamed_gender_id=2, source_age_id=1, source_role_id=1, quoted=0), DocumentSource(source_type='child', unnamed=False, name='Fred', unnamed_race_id=1, unnamed_gender_id=1, source_age_id=1, source_role_id=1, quoted=0)) self.assertNotEqual( DocumentSource(source_type='child', unnamed=False, name='Fred', unnamed_race_id=1, unnamed_gender_id=1, source_age_id=2, source_role_id=1, quoted=0), DocumentSource(source_type='child', unnamed=False, name='Fred', unnamed_race_id=1, unnamed_gender_id=1, source_age_id=1, source_role_id=1, quoted=0)) self.assertNotEqual( DocumentSource(source_type='child', unnamed=False, name='Joe', unnamed_race_id=1, unnamed_gender_id=1, source_age_id=1, source_role_id=1, quoted=0), DocumentSource(source_type='child', unnamed=False, name='Ben', unnamed_race_id=1, unnamed_gender_id=1, source_age_id=1, source_role_id=1, quoted=0))