def test_get_verb_details(self): e = test.Anything( get_context=lambda: None, # save = lambda x: None, # is_unique_name = lambda n: False, # get_details = lambda *a, **kw: self.assertEqual((a,kw), ''), get_parents=lambda i, r: [], get_verb_list=lambda i: [], get_property_list=lambda i: [], get_verb_names=lambda i: ['test'], add_verb_name=lambda i, n: self.assertEqual(n, 'test'), instantiate=lambda *a, **kw: o if a[0] == 'object' else v, ) o = interface.Object(e) o.set_id(1024) v = interface.Verb(o) v.set_names(['test']) details = v.get_details() self.assertEqual( details, dict( __str__='Verb test {#0 on #1024 ()}', id=0, kind='verb', code='', exec_type='verb', names=['test'], owner='None', origin='#1024 ()', ))
def test_basic(self): e = test.Anything( is_allowed=lambda *a: True, get_context=lambda: o, save=lambda s: True, is_wizard=lambda *a: False, ) o = interface.Object(e) v = interface.Verb(o) v.set_code('test code') self.assertEqual(v.get_code(), 'test code') self.assertEqual(v.code, 'test code') v.set_ability(True) self.assertEqual(v.ability, True) self.assertEqual(v.is_ability(), True) v.set_ability(False) self.assertEqual(v.ability, False) self.assertEqual(v.is_ability(), False) v.set_method(True) self.assertEqual(v.method, True) self.assertEqual(v.is_method(), True) v.set_method(False) self.assertEqual(v.method, False) self.assertEqual(v.is_method(), False)
def test_names(self): e = test.Anything(get_verb_names=lambda *a, **kw: (a, kw), ) o = interface.Object(e) v = interface.Verb(o) v.set_id(2048) self.assertEqual(v.get_names(), ((2048, ), {}))
def test_id(self): e = test.Anything() o = interface.Object(e) v = interface.Verb(o) v.set_id(1024) self.assertEqual(v.get_id(), 1024) self.assertRaises(RuntimeError, v.set_id, 2048)
def test_verb(self): e = test.Anything( get_verb=lambda *a, **kw: v, get_context=lambda: o, is_allowed=lambda *a: True, ) o = interface.Object(e) v = interface.Verb(o) self.assertEqual(getattr(o, 'look'), v) self.assertEqual(o.get_verb('look', recurse=False), v)
def test_remove_name(self): e = test.Anything( get_context=lambda: None, get_verb_names=lambda i: [], remove_verb_name=lambda *a: self.assertEqual(a, (2048, 'test'))) o = interface.Object(e) o.set_id(1024) v = interface.Verb(o) v.set_id(2048) v.remove_name('test')
def test_check(self): e = test.Anything( is_allowed=lambda *a: False, get_context=lambda: ctx, is_wizard=lambda *a: False, ) ctx = interface.Object(e) o = interface.Object(e) v = interface.Verb(o) self.assertRaises(errors.PermissionError, v.check, 'move', o)
def test_add_name(self): e = test.Anything( add_verb_name=lambda *a, **kw: (a, kw), is_allowed=lambda *a: True, get_context=lambda: o, is_wizard=lambda *a: False, ) o = interface.Object(e) v = interface.Verb(o) v.set_id(2048) self.assertEqual(v.add_name('look'), ((2048, 'look'), {}))
def test_origin(self): e = test.Anything( instantiate=lambda *a, **kw: (a, kw), is_allowed=lambda *a: True, get_context=lambda: o, is_wizard=lambda *a: False, ) o = interface.Object(e) o.set_id(1024) v = interface.Verb(o) self.assertEqual(v.get_origin(), (('object', ), {'id': 1024}))
def test_add_verb(self): x = test.Anything(get_id=lambda: -1, ) e = test.Anything( instantiate=lambda *a, **kw: v, get_context=lambda: o, ctx=x, is_allowed=lambda *a: True, is_wizard=lambda *a: False, ) o = interface.Object(e) v = interface.Verb(o) self.assertEqual(o.add_verb('look'), v)
def test_origin(self): e = test.Anything( instantiate=lambda *a, **kw: origin, get_context=lambda: None, ) origin = interface.Object(e) p = interface.Property(origin) self.assertEqual(p.get_origin(), origin) self.assertEqual(p.origin, origin) v = interface.Verb(origin) self.assertEqual(v.get_origin(), origin) self.assertEqual(v.origin, origin)
def _mkverb(self, record): """ Instantiate a interface.Verb """ origin = self.instantiate('object', id=record['origin_id']) v = interface.Verb(origin) v._code = record.get('code', '') v._filename = record.get('filename', '') v._owner_id = record.get('owner_id', None) v._ability = record.get('ability', False) v._method = record.get('method', False) v._origin_id = record['origin_id'] if ('name' in record): self.save(v) v.add_name(record['name']) return v
def test_performable_by(self): e = test.Anything(get_context=lambda: None, is_allowed=lambda a, p, s: True, has_parent=lambda c, p: False, save=lambda i: None, instantiate=lambda *a, **kw: o if a[0] == 'object' else v) o = interface.Object(e) o.set_id(1024) v = interface.Verb(o) v.set_id(2048) self.assertEqual(v.performable_by(o), False) v.method = True self.assertEqual(v.performable_by(o), False) v.method = False v.ability = True self.assertEqual(v.performable_by(o), True)
def test_owner(self): e = test.Anything( instantiate=lambda *a, **kw: owner, get_context=lambda: None, save=lambda s: True, ) owner = interface.Object(e) owner_mock = test.Anything(get_id=lambda: 1024, ) subject = interface.Object(e) subject2 = interface.Property(subject) subject3 = interface.Verb(subject) subject.set_owner(owner_mock) self.assertEqual(subject.get_owner(), owner) self.assertEqual(subject.owner, owner) subject2.set_owner(owner_mock) self.assertEqual(subject2.get_owner(), owner) self.assertEqual(subject2.owner, owner) subject3.set_owner(owner_mock) self.assertEqual(subject3.get_owner(), owner) self.assertEqual(subject3.owner, owner)
# # See LICENSE for details """ Default database bootstrap. """ from antioch.core import interface, bootstrap from antioch.util import sql for name in interface.default_permissions: exchange.connection.runOperation(sql.build_insert('permission', name=name)) exchange.load_permissions() system = exchange.instantiate('object', name='System Object') set_default_permissions_verb = interface.Verb(system) set_default_permissions_verb._method = True set_default_permissions_verb._code = bootstrap.get_source( 'system_set_default_permissions.py') exchange.save(set_default_permissions_verb) set_default_permissions_verb.add_name('set_default_permissions') set_default_permissions_verb(set_default_permissions_verb) set_default_permissions_verb(system) wizard = exchange.instantiate('object', name='Wizard', unique_name=True) wizard.set_owner(wizard) system.set_owner(wizard) set_default_permissions_verb.set_owner(wizard) bag_of_holding = exchange.instantiate('object', name='bag of holding')