def test_add_diffpk(self, combine): cma1, cma2 = self.create_cmas('b') pk1 = ('', frozenset([('a', '1')])) pk2 = ('', frozenset([('b', '2')])) mgr = MapAnnotationManager(combine) r = mgr.add(cma1) assert r is None r = mgr.add(cma2) assert mgr.mapanns == {pk1: cma1, pk2: cma2} assert cma1.kvpairs == [('a', '1')] assert cma1.parents == set([('Parent', 1)]) assert cma2.kvpairs == [('b', '2'), ('a', '1')] assert cma2.parents == set([('Parent', 1), ('Parent', 2)]) assert r is None
def test_update_existing_mapann(self): ns1, ns3, mids = self.create_mas() pks = ['a'] mgr = MapAnnotationManager() mgr.add_from_namespace_query(self.sf, ns1, pks) ma4 = MapAnnotationI() ma4 = MapAnnotationI() ma4.setNs(wrap(ns1)) ma4.setMapValue([NamedValue('a', '2'), NamedValue('b', '3'), ]) cma = CanonicalMapAnnotation(ma4, pks) # This should modify ma2 r = mgr.add(cma) assert r is cma cmas = mgr.get_map_annotations() assert len(cmas) == 2 rs = self.update.saveAndReturnArray([c.get_mapann() for c in cmas]) rs = sorted(rs, key=lambda x: unwrap(x.getId())) assert_equal_map_value(rs[0].getMapValue(), [NamedValue('a', '1')]) assert unwrap(rs[0].getNs()) == ns1 assert_equal_map_value(rs[1].getMapValue(), [ NamedValue('a', '2'), NamedValue('b', '3')]) assert unwrap(rs[1].getNs()) == ns1
def test_add_from_namespace_query_duplicate(self): ns1, ns3, mids = self.create_mas() pks = ['a'] mgr = MapAnnotationManager() mgr.add_from_namespace_query(self.sf, ns1, pks) with pytest.raises(Exception) as exc_info: mgr.add_from_namespace_query(self.sf, ns1, pks) assert exc_info.value.message.startswith( 'Duplicate MapAnnotation primary key')
def test_add_from_namespace_query(self): ns1, ns3, mids = self.create_mas() pks = ['a'] mgr = MapAnnotationManager() mgr.add_from_namespace_query(self.sf, ns1, pks) assert len(mgr.mapanns) == 2 pk1 = (ns1, frozenset([('a', '1')])) pk2 = (ns1, frozenset([('a', '2')])) assert len(mgr.mapanns) == 2 assert pk1 in mgr.mapanns assert pk2 in mgr.mapanns cma1 = mgr.mapanns[pk1] assert cma1.kvpairs == [('a', '1')] assert cma1.parents == set() mv1 = cma1.get_mapann().getMapValue() assert_equal_map_value(mv1, [NamedValue('a', '1')]) cma2 = mgr.mapanns[pk2] assert cma2.kvpairs == [('a', '2')] assert cma2.parents == set() mv2 = cma2.get_mapann().getMapValue() assert_equal_map_value(mv2, [NamedValue('a', '2')])
def test_add_samepk(self, combine): cma1, cma2 = self.create_cmas('a') pk1 = ('', frozenset([('a', '1')])) parents12 = set([('Parent', 1), ('Parent', 2)]) if combine: mgr = MapAnnotationManager(combine) else: mgr = MapAnnotationManager() assert mgr.mapanns == {} # These tests all make use of object identity # Sanity check: assert cma1 != cma2 r = mgr.add(cma1) assert mgr.mapanns == {pk1: cma1} assert r is None # Duplicate add should have no effect r = mgr.add(cma1) assert mgr.mapanns == {pk1: cma1} assert r is None r = mgr.add(cma2) if combine == MapAnnotationManager.MA_OLD: assert mgr.mapanns == {pk1: cma1} assert cma1.kvpairs == [('a', '1')] assert cma1.parents == parents12 assert r is cma2 elif combine == MapAnnotationManager.MA_NEW: assert mgr.mapanns == {pk1: cma2} assert cma2.kvpairs == [('b', '2'), ('a', '1')] assert cma2.parents == parents12 assert r is cma1 else: # None or MA_APPEND assert mgr.mapanns == {pk1: cma1} assert cma1.kvpairs == [('a', '1'), ('b', '2')] assert cma1.parents == parents12 assert r is cma2