def test_process_uses_search_results(self): # Given ui = VixenUI() vixen = ui.vixen ui.add_project() p = vixen.projects[0] p.path = self.root p.scan() from textwrap import dedent code = dedent(""" def process(relpath, media, dest): media.tags['completed'] = True """) p.processors = [PythonFunctionFactory(code=code, dest=self.root)] # When ui.view(p) ui.viewer.search = 'root.txt' ui.viewer.do_search() ui.process(p) # Then self.assertEqual(p.get('root.txt').tags['completed'], True) self.assertEqual(p.get('hello.py').tags['completed'], False) # When ui.viewer.clear_search() ui.process(p) # Then for m in p.keys(): self.assertEqual(p.get(m).tags['completed'], True)
def make_ui(): # We need absolute imports here as PyInstaller does not work with # relative imports in the entry point script. from vixen.vixen import VixenUI ui = VixenUI() ui.setup_logging_handler() ui.vixen.load() return ui
def test_copy_project_works(self): # Setup # Create a new project, scan it, save it and re-load it for the test. ui = VixenUI() vixen = ui.vixen ui.add_project() p = vixen.projects[-1] p.add_tags([TagInfo(name='sometag', type='text')]) p.path = self.root p.scan() p.save() vixen.save() self.assertEqual(len(vixen.projects), 1) # Given ui = VixenUI() vixen = ui.vixen self.assertEqual(len(vixen.projects), 1) # When ui.copy_project(vixen.projects[0]) # Then self.assertEqual(len(vixen.projects), 2) p = vixen.projects[-1] self.assertEqual(p.name, 'Project1 copy') self.assertEqual(len(p.tags), 2) self.assertEqual(p.tags[0].name, 'completed') self.assertEqual(p.tags[0].type, 'bool') self.assertEqual(p.tags[1].name, 'sometag') self.assertEqual(p.tags[1].type, 'text')
def test_logging_handler_is_setup_correctly(self): # Given ui = VixenUI() # When m = mock.MagicMock() with mock.patch('vixen.vixen.logging.getLogger', return_value=m) as p: ui.setup_logging_handler() # Then p.assert_called_once_with() self.assertEqual(m.addHandler.call_count, 1) args = m.addHandler.call_args[0] obj = args[0] self.assertTrue(isinstance(obj, UIErrorHandler)) self.assertEqual(obj.level, logging.ERROR) self.assertEqual(obj.ui, ui)
def setUp(self): super(TestProjectViewer, self).setUp() ui = VixenUI() p = Project( name='test', path=self.root, description='desc', extensions=['.py', '.txt'] ) p.scan() ui.vixen.projects.append(p) self.ui = ui self.p = p
def test_search_string_updates_search_completed(self): # Given ui = VixenUI() vixen = ui.vixen ui.add_project() p = vixen.projects[0] p.path = self.root p.scan() # When ui.view(p) self.assertEqual(ui.viewer.active_pager, ui.viewer.pager) ui.viewer.search = 'root.txt' # Then self.assertEqual(ui.viewer.search_completed, False) self.assertEqual(ui.viewer.active_pager, ui.viewer.search_pager) # When ui.viewer.do_search() # Then self.assertEqual(ui.viewer.search_completed, True) # When ui.viewer.search = 'xxx' # Then self.assertEqual(ui.viewer.search_completed, False)
def test_messages(self): # Given. ui = VixenUI() # When ui.error('ERROR') # Then self.assertEqual(ui.message, ('ERROR', 'error', 0)) # When ui.info('INFO') # Then self.assertEqual(ui.message, ('INFO', 'info', 1)) # When ui.success('SUCCESS') # Then self.assertEqual(ui.message, ('SUCCESS', 'success', 2))
def test_vixen_ui_log(self, logger): # Given ui = VixenUI() # When ui.log('msg', 'info') # Then logger.info.assert_called_with('msg') # When ui.log('err', 'error') # Then logger.error.assert_called_with('err') # When ui.log('err', 'blah') # Then logger.error.assert_called_with('Unknown message kind: %s', 'blah') logger.info.assert_called_with('err')
def test_viewer_rescan(self): # Given ui = VixenUI() vixen = ui.vixen ui.add_project() p = vixen.projects[0] p.path = self.root p.scan() viewer = ui.viewer ui.view(p) # When viewer.rescan() # Then self.assertEqual(viewer.current_dir, p.root)
def test_add_remove_project_works(self): # Given ui = VixenUI() vixen = ui.vixen self.assertEqual(len(vixen.projects), 1) # When ui.add_project() # Then self.assertEqual(len(vixen.projects), 1) p = vixen.projects[-1] self.assertEqual(p.name, 'Project1') self.assertEqual( vixen.save_file, os.path.join(self._temp, 'projects.json') ) # When ui.remove(p) # Then self.assertEqual(len(vixen.projects), 0)
def test_miscellaneous(self): # Given/When ui = VixenUI() # Then self.assertEqual(ui.version, vixen.__version__) fname = ui.docs self.assertTrue( os.path.basename(fname) in ['index.html', 'vixen.readthedocs.io'] ) # When ui.mode = 'view' ui.home() # Then self.assertEqual(ui.mode, 'edit') # When ctx = ui.get_context() # Then self.assertEqual(sorted(ctx.keys()), ['editor', 'ui', 'viewer', 'vixen'])