class TestSonyDataProvider(unittest.TestCase):
    def setUp(self):
        self._url_reader = MagicMock()
        self._expected_json = '{ "a": 5 }'
        self._expected_result = {"a": 5}
        self.sut = SonyDataProvider(self._url_reader)

    def _setup_url_ison_response(self, expected_url):
        def get_response(url):
            if url == expected_url:
                response_mock = MagicMock()
                response_mock.decode = lambda encoding: self._expected_json if encoding == "utf-8" else None
                return response_mock
            return None

        self._url_reader.get.side_effect = get_response

    def _setup_url_binary_response(self, expected_url, expected_data):
        def get_response(url):
            if url == expected_url:
                return expected_data
            return None

        self._url_reader.get.side_effect = get_response

    def test_url_returns_none(self):
        self._url_reader.get.return_value = None

        self.assertIsNone(self.sut.classes())
        self.assertIsNone(self.sut.tree(1))
        self.assertIsNone(self.sut.spells(1))
        self.assertIsNone(self.sut.icon(1))

    def test_classes_url(self):
        self._setup_url_ison_response("http://data.soe.com/json/get/eq2/constants/?c:show=adventureclass_list")
        self.assertEqual(self.sut.classes(), self._expected_result)

    def test_tree_url(self):
        self._setup_url_ison_response("http://data.soe.com/json/get/eq2/alternateadvancement/5")
        self.assertEqual(self.sut.tree(5), self._expected_result)

    def test_spells_url(self):
        self._setup_url_ison_response("http://data.soe.com/json/get/eq2/spell/?c:limit=10&crc=5")
        self.assertEqual(self.sut.spells(5), self._expected_result)

    def test_icon_url(self):
        self._setup_url_binary_response("http://data.soe.com/img/eq2/icons/5/achievement", 55)
        self.assertEqual(self.sut.icon(5), 55)
Exemple #2
0
class TestSonyDataProvider(unittest.TestCase):
    def setUp(self):
        self._url_reader = MagicMock()
        self._expected_json = '{ "a": 5 }'
        self._expected_result = {'a': 5}
        self.sut = SonyDataProvider(self._url_reader)
        
    def _setup_url_json_response(self, expected_url):
        def get_response(url):
            if url == expected_url:
                response_mock = MagicMock()
                response_mock.decode = lambda encoding: self._expected_json if encoding =='utf-8' else None 
                return response_mock
            return None
        self._url_reader.get.side_effect = get_response 
        
    def _setup_url_binary_response(self, expected_url, expected_data):
        def get_response(url):
            if url == expected_url:
                return expected_data
            return None
        self._url_reader.get.side_effect = get_response 
        

    def test_url_returns_none(self):
        self._url_reader.get.return_value = None
        
        self.assertIsNone(self.sut.classes())
        self.assertIsNone(self.sut.tree(1))
        self.assertIsNone(self.sut.spells(1))
        self.assertIsNone(self.sut.icon(1))
        
    def test_classes_url(self):
        self._setup_url_json_response('http://census.daybreakgames.com/s:eq2aa/json/get/eq2/constants/?c:show=adventureclass_list')
        self.assertEqual(self.sut.classes(), self._expected_result)
        
    def test_tree_url(self):
        self._setup_url_json_response('http://census.daybreakgames.com/s:eq2aa/json/get/eq2/alternateadvancement/5')
        self.assertEqual(self.sut.tree(5), self._expected_result)
        
    def test_spells_url(self):
        self._setup_url_json_response('http://census.daybreakgames.com/s:eq2aa/json/get/eq2/spell/?c:limit=10&given_by=alternateadvancement&level=110&crc=5')
        self.assertEqual(self.sut.spells(5), self._expected_result)
        
    def test_icon_url(self):
        self._setup_url_binary_response('http://census.daybreakgames.com/s:eq2aa/img/eq2/icons/5/achievement', 55)
        self.assertEqual(self.sut.icon(5), 55)
Exemple #3
0
 def setUp(self):
     self._url_reader = MagicMock()
     self._expected_json = '{ "a": 5 }'
     self._expected_result = {'a': 5}
     self.sut = SonyDataProvider(self._url_reader)
 def setUp(self):
     self._url_reader = MagicMock()
     self._expected_json = '{ "a": 5 }'
     self._expected_result = {"a": 5}
     self.sut = SonyDataProvider(self._url_reader)
Exemple #5
0
    def run(self):
        start_time = datetime.datetime.now()

        logger = ConsoleLogger()
        logger.log('Started')

        cache_dir_path = os.path.abspath('./soe/cached_data')
        logger.log('Cache path: ' + cache_dir_path)

        data_provider = CachedDataProvider(SonyDataProvider(UrlReader(logger)),
                                           FileDataCache(cache_dir_path))
        spell_effect_formatter = SpellEffectFormatter()
        coord_mapper = AACoordMapper()

        aa_factory = AAFactory(data_provider, spell_effect_formatter,
                               coord_mapper, logger)
        tree_factory = TreeFactory(data_provider, aa_factory, logger)
        point_pool_factory = PointPoolFactory()
        class_factory = EQ2ClassFactory(data_provider, tree_factory,
                                        point_pool_factory, logger)

        json_writer = JsonFileWriter(logger)

        build_dir = os.path.abspath('../../build')

        icon_output_path = os.path.join(build_dir, 'icons')
        self._ensure_dir_exists(icon_output_path)
        icon_downloader = IconDownloader(data_provider, icon_output_path,
                                         logger)

        image_manipulator = ImageManipulator()

        sprite_output_path = os.path.join(build_dir, 'sprites')
        self._ensure_dir_exists(sprite_output_path)
        sprite_image_generator = SpriteImageGenerator(image_manipulator,
                                                      icon_output_path,
                                                      sprite_output_path,
                                                      logger)

        classes = list(class_factory.create_classes())

        tree_output_dir = os.path.join('.', 'output')
        tree_minified_output_dir = os.path.join('.', 'output_min')

        icon_size = 42
        icon_padding = 1
        sprite_css_generator = SpriteCssGenerator()

        for c in classes:
            icon_downloader.download_all(c)
            sprite_image_generator.generate(c, icon_size, icon_padding)

            filename = c.name + '.json'
            json_writer.write(c.to_dict(),
                              os.path.join(tree_output_dir, filename),
                              indent=3)
            json_writer.write(c.to_dict(),
                              os.path.join(tree_minified_output_dir, filename))

            if c.name == 'Beastlord':
                beastlord_css = sprite_css_generator.generate_css(
                    c.trees, icon_size, icon_padding, '.Beastlord ')
                self._write_to_text_file(
                    os.path.join(sprite_output_path, "sprites-beastlord.css"),
                    beastlord_css)

        css = sprite_css_generator.generate_css(classes[0].trees, icon_size,
                                                icon_padding)
        self._write_to_text_file(
            os.path.join(sprite_output_path, "sprites.css"), css)

        end_time = datetime.datetime.now()
        logger.log('Done in {0}'.format(end_time - start_time))