NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

test_informer.py (6254B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\parklife\overview\default\test\test_informer.py
      2 from itertoolsext import Bundle
      3 from mock import Mock, patch
      4 from unittest import main
      5 from testsuites.testcases import ClientTestCase
      6 import logging
      7 logger = logging.getLogger(__name__)
      8 logging.basicConfig(level=logging.DEBUG)
      9 SHOULD_DISPLAY_LOGS = False
     10 
     11 class OverviewSettings(object):
     12 
     13     def __init__(self):
     14         self.overviewID = None
     15         self.defaultOverviewID = None
     16         self.defaultOverviewInformedOfUpdate = 0
     17 
     18     def set_overview(self, overview_id):
     19         self.overviewID = overview_id
     20 
     21     def set_default_overview(self, default_id):
     22         self.defaultOverviewID = default_id
     23 
     24     def set_informed_of_update(self, switch_offered):
     25         self.defaultOverviewInformedOfUpdate = int(switch_offered)
     26 
     27     def get_overview(self):
     28         return self.overviewID
     29 
     30     def get_default_overview(self):
     31         return self.defaultOverviewID
     32 
     33     def get_informed_of_update(self):
     34         return self.defaultOverviewInformedOfUpdate
     35 
     36 
     37 class DefaultOverviews(object):
     38 
     39     def __init__(self):
     40         self.default_overview_id = None
     41         self._should_inform_of_update = None
     42 
     43     def should_inform_of_update(self):
     44         return self._should_inform_of_update
     45 
     46     def set_default_overview(self, overview_id):
     47         self.default_overview_id = overview_id
     48 
     49     def set_should_inform_of_update(self, should_inform_of_update):
     50         self._should_inform_of_update = should_inform_of_update
     51 
     52 
     53 class UpdaterTestCase(ClientTestCase):
     54 
     55     def _mock_imported_modules(self):
     56         self.defaults = DefaultOverviews()
     57         self.settings = OverviewSettings()
     58         return {'carbonui': Mock(),
     59          'carbonui.const': Bundle(ID_YES=1, YESNO=2)}
     60 
     61     def setUp(self):
     62         super(UpdaterTestCase, self).setUp()
     63         with patch.dict('sys.modules', self._mock_imported_modules()):
     64             from eve.client.script.parklife.overview.default.informer import DefaultOverviewUpdateInformer
     65             self._should_delay = lambda : False
     66             self.updater = DefaultOverviewUpdateInformer(settings=self.settings, defaults=self.defaults, should_delay=self._should_delay)
     67             self.updater.is_informing_enabled = Mock(return_value=True)
     68             if SHOULD_DISPLAY_LOGS:
     69                 self.updater._log_debug = lambda text: logger.info(text)
     70             else:
     71                 self.updater._log_debug = Mock()
     72 
     73     def _check_has_informed_in_settings(self):
     74         self.assertEqual(self.settings.get_informed_of_update(), 1)
     75 
     76     def _check_has_not_informed_in_settings(self):
     77         self.assertEqual(self.settings.get_informed_of_update(), 0)
     78 
     79     def test_inform_when_player_is_existing_user_without_default_who_has_never_been_informed(self):
     80         self.defaults.set_default_overview('new_default')
     81         self.defaults.set_should_inform_of_update(True)
     82         self.settings.set_overview('old_default')
     83         self.settings.set_informed_of_update(False)
     84         self.updater._inform_of_update = Mock()
     85         self.assertTrue(self.updater._should_inform_of_update())
     86         is_done = self.updater.update()
     87         self.assertTrue(self.updater._inform_of_update.called)
     88         self.assertTrue(is_done)
     89         self._check_has_informed_in_settings()
     90 
     91     def test_delay_informing_when_player_is_existing_user_without_default_who_has_never_been_informed_but_in_npe(self):
     92         self.defaults.set_default_overview('new_default')
     93         self.defaults.set_should_inform_of_update(True)
     94         self.settings.set_overview('old_default')
     95         self.settings.set_informed_of_update(False)
     96         self.updater._inform_of_update = Mock()
     97         self.updater._should_delay = Mock(return_value=True)
     98         self.assertTrue(self.updater._should_inform_of_update())
     99         is_done = self.updater.update()
    100         self.assertFalse(self.updater._inform_of_update.called)
    101         self.assertFalse(is_done)
    102         self._check_has_not_informed_in_settings()
    103 
    104     def test_do_nothing_when_player_already_has_the_latest_default(self):
    105         self.defaults.set_default_overview('new_default')
    106         self.defaults.set_should_inform_of_update(True)
    107         self.settings.set_overview('new_default')
    108         self.settings.set_informed_of_update(True)
    109         self.updater._inform_of_update = Mock()
    110         self.assertFalse(self.updater._should_inform_of_update())
    111         is_done = self.updater.update()
    112         self.assertFalse(self.updater._inform_of_update.called)
    113         self.assertTrue(is_done)
    114 
    115     def test_do_nothing_when_player_already_has_the_latest_default_even_if_he_has_never_been_informed(self):
    116         self.defaults.set_default_overview('new_default')
    117         self.defaults.set_should_inform_of_update(True)
    118         self.settings.set_overview('new_default')
    119         self.settings.set_informed_of_update(False)
    120         self.updater._inform_of_update = Mock()
    121         self.assertFalse(self.updater._should_inform_of_update())
    122         is_done = self.updater.update()
    123         self.assertFalse(self.updater._inform_of_update.called)
    124         self.assertTrue(is_done)
    125 
    126     def test_do_nothing_when_this_overview_does_not_require_informing(self):
    127         self.defaults.set_default_overview('new_default')
    128         self.defaults.set_should_inform_of_update(False)
    129         self.settings.set_overview('old_default')
    130         self.settings.set_informed_of_update(False)
    131         self.updater._inform_of_update = Mock()
    132         self.assertFalse(self.updater._should_inform_of_update())
    133         is_done = self.updater.update()
    134         self.assertFalse(self.updater._inform_of_update.called)
    135         self.assertTrue(is_done)
    136 
    137     def test_do_nothing_when_informing_is_disabled(self):
    138         self.defaults.set_default_overview('new_default')
    139         self.defaults.set_should_inform_of_update(False)
    140         self.settings.set_overview('old_default')
    141         self.settings.set_informed_of_update(False)
    142         self.updater._is_informing_enabled = False
    143         self.updater._inform_of_update = Mock()
    144         is_done = self.updater.update()
    145         self.assertFalse(self.updater._inform_of_update.called)
    146         self.assertTrue(is_done)
    147 
    148 
    149 if __name__ == '__main__':
    150     main()