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)
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)
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)
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))