import ClientConstants as CC import ClientDefaults import ClientImportSubscriptions import ClientNetworking import ClientNetworkingBandwidth import ClientNetworkingDomain import ClientNetworkingLogin import ClientNetworkingSessions import collections import HydrusConstants as HC import HydrusData import HydrusExceptions import HydrusNetworking import os import TestConstants import threading import time import unittest import HydrusGlobals as HG from httmock import all_requests, urlmatch, HTTMock, response from mock import patch MISSING_RESPONSE = '404, bad result' ERROR_RESPONSE = '500, it done broke' EMPTY_RESPONSE = ''' results ''' @all_requests def catch_all( url, request ): raise Exception( 'An unexpected request for ' + url + ' came through in testing.' ) def get_good_response( urls_to_place ): response = ''' results ''' for url in urls_to_place: response += ''' ''' response += ''' ''' return response class TestSubscription( unittest.TestCase ): def _PrepEngine( self ): mock_controller = TestConstants.MockController() bandwidth_manager = ClientNetworkingBandwidth.NetworkBandwidthManager() session_manager = ClientNetworkingSessions.NetworkSessionManager() domain_manager = ClientNetworkingDomain.NetworkDomainManager() login_manager = ClientNetworkingLogin.NetworkLoginManager() ClientDefaults.SetDefaultDomainManagerData( domain_manager ) engine = ClientNetworking.NetworkEngine( mock_controller, bandwidth_manager, session_manager, domain_manager, login_manager ) mock_controller.CallToThread( engine.MainLoop ) return ( mock_controller, engine ) def test_initial_sync( self ): # wait until I have searcher in here, so I can roll it all into domain_manager etc... rather than hitting db for gallery init and all that # use safebooru (i.e. gelb 0.2.0) for examples. pseudo html documents here that work with the parsers # 404 all file pages for now # refer to testclientnetworking for useful httmock examples # test: # initial is good to go with right stuff set up # a 404 gallery on initial # a 500 gallery on initial # a 200 gallery but empty result on initial # a 200 gallery typical good initial sync involving several pages # a subsequent 50 catch-up involving two pages # a user cancel on init # a user cancel on catch-up pass