MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _test_list_bulk

Method _test_list_bulk

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

Source from the content-addressed store, hash-verified

481 assert_eq()
482
483 def _test_list_bulk(self, typecallable, creator=None):
484 if creator is None:
485 creator = self.entity_maker
486
487 class Foo:
488 pass
489
490 canary = Canary()
491 instrumentation.register_class(Foo)
492 d = _register_attribute(
493 Foo,
494 "attr",
495 uselist=True,
496 typecallable=typecallable,
497 useobject=True,
498 )
499 canary.listen(d)
500
501 obj = Foo()
502 direct = obj.attr
503
504 e1 = creator()
505 obj.attr.append(e1)
506
507 like_me = typecallable()
508 e2 = creator()
509 like_me.append(e2)
510
511 self.assert_(obj.attr is direct)
512 obj.attr = like_me
513 self.assert_(obj.attr is not direct)
514 self.assert_(obj.attr is not like_me)
515 self.assert_(set(obj.attr) == {e2})
516 self.assert_(e1 in canary.removed)
517 self.assert_(e2 in canary.added)
518
519 e3 = creator()
520 real_list = [e3]
521 obj.attr = real_list
522 self.assert_(obj.attr is not real_list)
523 self.assert_(set(obj.attr) == {e3})
524 self.assert_(e2 in canary.removed)
525 self.assert_(e3 in canary.added)
526
527 e4 = creator()
528 try:
529 obj.attr = {e4}
530 self.assert_(False)
531 except TypeError:
532 self.assert_(e4 not in canary.data)
533 self.assert_(e3 in canary.data)
534
535 e5 = creator()
536 e6 = creator()
537 e7 = creator()
538 obj.attr = [e5, e6, e7]
539 self.assert_(e5 in canary.added)
540 self.assert_(e6 in canary.added)

Callers 5

test_listMethod · 0.95
test_list_subclassMethod · 0.95
test_list_duckMethod · 0.95
test_list_emulatesMethod · 0.95

Calls 7

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

Tested by

no test coverage detected