def test_services( self ): def test_service( service, key, service_type, name ): self.assertEqual( service.GetServiceKey(), key ) self.assertEqual( service.GetServiceType(), service_type ) self.assertEqual( service.GetName(), name ) repo_key = HydrusData.GenerateKey() repo_type = HC.TAG_REPOSITORY repo_name = 'test tag repo' repo = ClientServices.GenerateService( repo_key, repo_type, repo_name ) other_key = HydrusData.GenerateKey() other = ClientServices.GenerateService( other_key, HC.LOCAL_BOORU, 'booru' ) services = [] services.append( repo ) services.append( other ) HG.test_controller.SetRead( 'services', services ) services_manager = ClientManagers.ServicesManager( HG.client_controller ) # service = services_manager.GetService( repo_key ) test_service( service, repo_key, repo_type, repo_name ) service = services_manager.GetService( other_key ) # services = services_manager.GetServices( ( HC.TAG_REPOSITORY, ) ) self.assertEqual( len( services ), 1 ) self.assertEqual( services[0].GetServiceKey(), repo_key ) # services = [] services.append( repo ) HG.test_controller.SetRead( 'services', services ) services_manager.RefreshServices() self.assertRaises( Exception, services_manager.GetService, other_key )
def test_undo( self ): hash_1 = HydrusData.GenerateKey() hash_2 = HydrusData.GenerateKey() hash_3 = HydrusData.GenerateKey() command_1 = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_FILES, HC.CONTENT_UPDATE_ARCHIVE, { hash_1 } ) ] } command_2 = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_FILES, HC.CONTENT_UPDATE_INBOX, { hash_2 } ) ] } command_3 = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_FILES, HC.CONTENT_UPDATE_ARCHIVE, { hash_1, hash_3 } ) ] } command_1_inverted = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_FILES, HC.CONTENT_UPDATE_INBOX, { hash_1 } ) ] } command_2_inverted = { CC.COMBINED_LOCAL_FILE_SERVICE_KEY : [ HydrusData.ContentUpdate( HC.CONTENT_TYPE_FILES, HC.CONTENT_UPDATE_ARCHIVE, { hash_2 } ) ] } undo_manager = ClientManagers.UndoManager( HG.client_controller ) # HG.test_controller.ClearWrites( 'content_updates' ) undo_manager.AddCommand( 'content_updates', command_1 ) self.assertEqual( ( 'undo archive 1 files', None ), undo_manager.GetUndoRedoStrings() ) undo_manager.AddCommand( 'content_updates', command_2 ) self.assertEqual( ( 'undo inbox 1 files', None ), undo_manager.GetUndoRedoStrings() ) undo_manager.Undo() self.assertEqual( ( 'undo archive 1 files', 'redo inbox 1 files' ), undo_manager.GetUndoRedoStrings() ) self.assertEqual( HG.test_controller.GetWrite( 'content_updates' ), [ ( ( command_2_inverted, ), {} ) ] ) undo_manager.Redo() self.assertEqual( HG.test_controller.GetWrite( 'content_updates' ), [ ( ( command_2, ), {} ) ] ) self.assertEqual( ( 'undo inbox 1 files', None ), undo_manager.GetUndoRedoStrings() ) undo_manager.Undo() self.assertEqual( HG.test_controller.GetWrite( 'content_updates' ), [ ( ( command_2_inverted, ), {} ) ] ) undo_manager.Undo() self.assertEqual( HG.test_controller.GetWrite( 'content_updates' ), [ ( ( command_1_inverted, ), {} ) ] ) self.assertEqual( ( None, 'redo archive 1 files' ), undo_manager.GetUndoRedoStrings() ) undo_manager.AddCommand( 'content_updates', command_3 ) self.assertEqual( ( 'undo archive 2 files', None ), undo_manager.GetUndoRedoStrings() )
def _set_up_services( self ): self._test_tag_repo_service_keys = {} services = self.Read( 'services' ) for i in range( 20 ): service_key = HydrusData.GenerateKey() services.append( ClientServices.GenerateService( service_key, HC.TAG_REPOSITORY, 'test repo {}'.format( i ) ) ) self._test_tag_repo_service_keys[ i ] = service_key self.WriteSynchronous( 'update_services', services ) self.services_manager = ClientManagers.ServicesManager( self )
def __init__(self, win, only_run): self.app = win self.win = win self.only_run = only_run self.db_dir = tempfile.mkdtemp() global DB_DIR DB_DIR = self.db_dir self._server_files_dir = os.path.join(self.db_dir, 'server_files') self._updates_dir = os.path.join(self.db_dir, 'test_updates') client_files_default = os.path.join(self.db_dir, 'client_files') HydrusPaths.MakeSureDirectoryExists(self._server_files_dir) HydrusPaths.MakeSureDirectoryExists(self._updates_dir) HydrusPaths.MakeSureDirectoryExists(client_files_default) HG.controller = self HG.client_controller = self HG.server_controller = self HG.test_controller = self self.db = self self.gui = self self.frame_splash_status = ClientGUISplash.FrameSplashStatus() self._call_to_threads = [] self._pubsub = HydrusPubSub.HydrusPubSub(self, lambda o: True) self.new_options = ClientOptions.ClientOptions() HC.options = ClientDefaults.GetClientDefaultOptions() self.options = HC.options def show_text(text): pass HydrusData.ShowText = show_text self._reads = {} self._reads['local_booru_share_keys'] = [] self._reads['messaging_sessions'] = [] self._reads['options'] = ClientDefaults.GetClientDefaultOptions() self._reads['file_system_predicates'] = [] self._reads['media_results'] = [] self._param_reads = {} self.example_tag_repo_service_key = HydrusData.GenerateKey() services = [] services.append( ClientServices.GenerateService(CC.LOCAL_BOORU_SERVICE_KEY, HC.LOCAL_BOORU, 'local booru')) services.append( ClientServices.GenerateService(CC.CLIENT_API_SERVICE_KEY, HC.CLIENT_API_SERVICE, 'client api')) services.append( ClientServices.GenerateService(CC.COMBINED_LOCAL_FILE_SERVICE_KEY, HC.COMBINED_LOCAL_FILE, 'all local files')) services.append( ClientServices.GenerateService(CC.LOCAL_FILE_SERVICE_KEY, HC.LOCAL_FILE_DOMAIN, 'my files')) services.append( ClientServices.GenerateService(CC.TRASH_SERVICE_KEY, HC.LOCAL_FILE_TRASH_DOMAIN, 'trash')) services.append( ClientServices.GenerateService(CC.DEFAULT_LOCAL_TAG_SERVICE_KEY, HC.LOCAL_TAG, 'my tags')) services.append( ClientServices.GenerateService(self.example_tag_repo_service_key, HC.TAG_REPOSITORY, 'example tag repo')) services.append( ClientServices.GenerateService(CC.COMBINED_TAG_SERVICE_KEY, HC.COMBINED_TAG, 'all known tags')) services.append( ClientServices.GenerateService( LOCAL_RATING_LIKE_SERVICE_KEY, HC.LOCAL_RATING_LIKE, 'example local rating like service')) services.append( ClientServices.GenerateService( LOCAL_RATING_NUMERICAL_SERVICE_KEY, HC.LOCAL_RATING_NUMERICAL, 'example local rating numerical service')) self._reads['services'] = services client_files_locations = {} for prefix in HydrusData.IterateHexPrefixes(): for c in ('f', 't'): client_files_locations[c + prefix] = client_files_default self._reads['client_files_locations'] = client_files_locations self._reads['sessions'] = [] self._reads['tag_parents'] = {} self._reads['tag_siblings_all_ideals'] = {} self._reads['in_inbox'] = False self._writes = collections.defaultdict(list) self._managers = {} self.column_list_manager = ClientGUIListManager.ColumnListManager() self.services_manager = ClientServices.ServicesManager(self) self.client_files_manager = ClientFiles.ClientFilesManager(self) self.parsing_cache = ClientCaches.ParsingCache() bandwidth_manager = ClientNetworkingBandwidth.NetworkBandwidthManager() session_manager = ClientNetworkingSessions.NetworkSessionManager() domain_manager = ClientNetworkingDomain.NetworkDomainManager() ClientDefaults.SetDefaultDomainManagerData(domain_manager) login_manager = ClientNetworkingLogin.NetworkLoginManager() self.network_engine = ClientNetworking.NetworkEngine( self, bandwidth_manager, session_manager, domain_manager, login_manager) self.CallToThreadLongRunning(self.network_engine.MainLoop) self.tag_display_manager = ClientTagsHandling.TagDisplayManager() self._managers['undo'] = ClientManagers.UndoManager(self) self.server_session_manager = HydrusSessions.HydrusSessionManagerServer( ) self.bitmap_manager = ClientManagers.BitmapManager(self) self.local_booru_manager = ClientCaches.LocalBooruCache(self) self.client_api_manager = ClientAPI.APIManager() self._cookies = {} self._job_scheduler = HydrusThreading.JobScheduler(self) self._job_scheduler.start()