def test_section_added_to_section_hook(): calls = [] config = Config({'uploads': { 'db': { 'user': '******', } }}) @config.hooks.section_added_to_section def section_added_to_section1(*args, **kwargs): calls.append( ('on_root', args, sub_dict(kwargs, ('section', 'subject', 'alias')))) @config.uploads.hooks.section_added_to_section def section_added_to_section2(*args, **kwargs): calls.append(('on_uploads', args, sub_dict(kwargs, ('section', 'subject', 'alias')))) assert calls == [] config.add_section('downloads', config.create_section()) assert len(calls) == 1 assert calls[-1:] == [ ('on_root', (), { 'subject': config.downloads, 'alias': 'downloads', 'section': config }), ] config.uploads.db.add_section('backups', config.create_section()) assert len(calls) == 3 assert calls[-2:] == [ ('on_uploads', (), { 'subject': config.uploads.db.backups, 'alias': 'backups', 'section': config.uploads.db }), ('on_root', (), { 'subject': config.uploads.db.backups, 'alias': 'backups', 'section': config.uploads.db }), ]
def test_item_added_to_section_hook(): calls = [] config = Config({'uploads': { 'db': { 'user': '******', } }}) @config.hooks.item_added_to_section def item_added_to_section(*args, **kwargs): calls.append( ('first', args, sub_dict(kwargs, ('section', 'subject', 'alias')))) @config.hooks.item_added_to_section def item_added_to_section2(*args, **kwargs): calls.append( ('second', args, sub_dict(kwargs, ('section', 'subject', 'alias')))) assert calls == [] # Adding a section to a section is unrelated config.add_section('downloads', config.create_section()) assert calls == [] password = config.create_item(name='password') threads = config.create_item(name='threads', default=5) assert calls == [] config.uploads.db.add_item(password.name, password) # Note that the item added to Config is actually a different instance to the one that was passed to add_item. # This is because we do deepcopy in add_item. assert calls == [ ('first', (), { 'section': config.uploads.db, 'subject': config.uploads.db.password, 'alias': 'password' }), ('second', (), { 'section': config.uploads.db, 'subject': config.uploads.db.password, 'alias': 'password' }), ] config.uploads.add_item('threads_alias', threads) assert len(calls) == 4 assert calls[2:] == [ ('first', (), { 'section': config.uploads, 'subject': config.uploads.threads, 'alias': 'threads_alias' }), ('second', (), { 'section': config.uploads, 'subject': config.uploads.threads, 'alias': 'threads_alias' }), ]