MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _test_set_bulk

Method _test_set_bulk

test/orm/test_collection.py:1030–1080  ·  view source on GitHub ↗
(self, typecallable, creator=None)

Source from the content-addressed store, hash-verified

1028 direct ^= [e, creator()]
1029
1030 def _test_set_bulk(self, typecallable, creator=None):
1031 if creator is None:
1032 creator = self.entity_maker
1033
1034 class Foo:
1035 pass
1036
1037 canary = Canary()
1038 instrumentation.register_class(Foo)
1039 d = _register_attribute(
1040 Foo,
1041 "attr",
1042 uselist=True,
1043 typecallable=typecallable,
1044 useobject=True,
1045 )
1046 canary.listen(d)
1047
1048 obj = Foo()
1049 direct = obj.attr
1050
1051 e1 = creator()
1052 obj.attr.add(e1)
1053
1054 like_me = typecallable()
1055 e2 = creator()
1056 like_me.add(e2)
1057
1058 self.assert_(obj.attr is direct)
1059 obj.attr = like_me
1060 self.assert_(obj.attr is not direct)
1061 self.assert_(obj.attr is not like_me)
1062 self.assert_(obj.attr == {e2})
1063 self.assert_(e1 in canary.removed)
1064 self.assert_(e2 in canary.added)
1065
1066 e3 = creator()
1067 real_set = {e3}
1068 obj.attr = real_set
1069 self.assert_(obj.attr is not real_set)
1070 self.assert_(obj.attr == {e3})
1071 self.assert_(e2 in canary.removed)
1072 self.assert_(e3 in canary.added)
1073
1074 e4 = creator()
1075 try:
1076 obj.attr = [e4]
1077 self.assert_(False)
1078 except TypeError:
1079 self.assert_(e4 not in canary.data)
1080 self.assert_(e3 in canary.data)
1081
1082 def _test_set_dataclasses(self, typecallable):
1083 creator = self.SimpleComparableEntity

Callers 4

test_setMethod · 0.95
test_set_subclassMethod · 0.95
test_set_duckMethod · 0.95
test_set_emulatesMethod · 0.95

Calls 7

listenMethod · 0.95
CanaryClass · 0.85
creatorFunction · 0.85
_register_attributeFunction · 0.70
FooClass · 0.70
addMethod · 0.45
assert_Method · 0.45

Tested by

no test coverage detected