Ejemplo n.º 1
0
    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')])
Ejemplo n.º 5
0
    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