def action(do_action, arg, list_type='notes', book='general'): if sys.platform.startswith("linux"): # Linux specific abstract namespace domain socket grab_attention("foolscap_actor") func = FUNCTION_MAP[do_action] new_action = {} if do_action in DISPLAY_ACTIONS: display_ctrl = Controller(list_type) # Quitting from list calls exit() method. # arg is filter in this case if arg: if do_action == 'search': new_action = display_ctrl.search_output(arg) else: new_action = display_ctrl.query_output(arg) else: new_action = display_ctrl.basic_output(book) if new_action.get('action', False): new_func = new_action['action'] note = new_action['item'] if new_func == 'list': action(new_func, None, book=new_action['book']) else: action(new_func, note) # arg is note in this case elif arg: func(arg) else: func()
def test_controller__init__(note_model_init): with patch('foolscap.note_display.NotesModel', note_model_init): ctrl = Controller('notes') assert hasattr(ctrl, 'model') assert hasattr(ctrl, 'service_rules') assert ctrl.model.model_type == 'notes' ctrl = Controller('tags') assert hasattr(ctrl, 'model') assert hasattr(ctrl, 'service_rules') assert ctrl.model.model_type == 'tags'
def test_ctrl_with_no_tag_matches(note_model, model_type): with pytest.raises(SystemExit): ctrl = Controller(model_type) ctrl.model = note_model if model_type == 'tags': ctrl.model = TagsModel(note_model) ctrl.service_rules = ServiceRules(ctrl.model) ctrl.query_output('no_matching_tag')
def test_ctrl_basic_out(note_model, model_type, expected): expected['tab_title'] = 'general' with patch('foolscap.note_display.display_list') as _mock: ctrl = Controller(model_type) ctrl.model = note_model expected['model'] = note_model if model_type == 'tags': ctrl.model = TagsModel(note_model) expected['model'] = ctrl.model ctrl.service_rules = ServiceRules(ctrl.model) ctrl.basic_output('general') _mock.assert_called_with(expected)
def test_ctrl_query_out(note_model, model_type, query, expected): expected['tab_title'] = "tag: '{}'".format(query) with patch('foolscap.note_display.display_list') as _mock: ctrl = Controller(model_type) ctrl.model = note_model expected['model'] = note_model if model_type == 'tags': ctrl.model = TagsModel(note_model) expected['model'] = ctrl.model ctrl.service_rules = ServiceRules(ctrl.model) ctrl.query_output(query) _mock.assert_called_with(expected)
def test_search_notes(note_model, model_type, query, expected): expected['books'] = ['general'] * 7 expected['tab_title'] = 'search' with patch('foolscap.note_display.display_list') as _mock: ctrl = Controller(model_type) ctrl.model = note_model expected['model'] = note_model if model_type == 'tags': ctrl.model = TagsModel(note_model) expected['model'] = ctrl.model ctrl.service_rules = ServiceRules(ctrl.model) ctrl.search_output(query) _mock.assert_called_with(expected)
def test_ctrl_search_no_query(note_model_init, model_type): with patch('foolscap.note_display.NotesModel', note_model_init): ctrl = Controller(model_type) with pytest.raises(SystemExit): ctrl.search_output(None)
def test_ctrl_search_output_with_no_results(note_model_init, model_type): ctrl = Controller(model_type) with patch('foolscap.meta_data.models.fuzzy_guess') as _fuzz,\ pytest.raises(SystemExit): ctrl.search_output('none') assert _fuzz.called_with('none', [])