def setUp(self): self._data_provider = MagicMock() self._aa_factory = MagicMock() self._logger = MagicMock() self._lineage = {"family": "Family", "archetype": "Archetype"} self._class_name = "SomeClass" self._aa = [1, 2, 3] self._orphans = [4, 5, 6] self._subtrees = ["Subtree1", "Subtree2"] self._tree_type = "TreeType" self.sut = TreeFactory(self._data_provider, self._aa_factory, self._logger)
def setUp(self): self._data_provider = MagicMock() self._aa_factory = MagicMock() self._logger = MagicMock() self._lineage = { "family": "Family", "archetype": "Archetype" } self._class_name = "SomeClass" self._aa = [1,2,3] self._orphans = [4,5,6] self._subtrees = ["Subtree1", "Subtree2"] self._tree_type = "TreeType" self.sut = TreeFactory(self._data_provider, self._aa_factory, self._logger)
class TestTreeFactory(unittest.TestCase): def setUp(self): self._data_provider = MagicMock() self._aa_factory = MagicMock() self._logger = MagicMock() self._lineage = { "family": "Family", "archetype": "Archetype" } self._class_name = "SomeClass" self._aa = [1,2,3] self._orphans = [4,5,6] self._subtrees = ["Subtree1", "Subtree2"] self._tree_type = "TreeType" self.sut = TreeFactory(self._data_provider, self._aa_factory, self._logger) def _setup_tree(self, tree): def _create_all_aa(aa_nodes, lineage, class_name, tree_name, tree_type, y_subclass): if (aa_nodes is tree["alternateadvancementnode_list"] and lineage is self._lineage and class_name == self._class_name and tree_name == tree["name"]): return self._aa, self._orphans, self._subtrees self._data_provider.tree.return_value = { "alternateadvancement_list": [tree]} self._aa_factory.create_all.side_effect = _create_all_aa def test_create_maps_basic_properties(self): tree_soe_id = 1 tree = TreeBuilder()\ .with_id(tree_soe_id)\ .is_warder_tree()\ .build() self._setup_tree(tree) result = self.sut.create(tree_soe_id, self._lineage, self._class_name) self.assertEqual(result.id, 1) self.assertEqual(result.soe_id, tree_soe_id) self.assertEqual(result.name, tree["name"]) self.assertEqual(result.is_warder_tree, True) def test_create_populates_aa(self): aa_node = AABuilder().with_id(1).name("SomeAA").build() tree = TreeBuilder()\ .with_aa([aa_node])\ .build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.aa, self._aa) def test_create_populates_max_points(self): tree = TreeBuilder()\ .max_points(150)\ .build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.max_points, 150) def test_create_populates_x_y_ratio_and_subclasses(self): tree = TreeBuilder()\ .x_subclass("XSubclass")\ .y_subclass("YSubclass")\ .x_y_ratio(20, 2)\ .build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.x_y_ratio, 10) self.assertEqual(result.x_subclass, "XSubclass") self.assertEqual(result.y_subclass, "YSubclass") def test_create_name_equal_to_archetype_sets_type(self): tree = TreeBuilder().name(self._lineage["archetype"]).build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.type, "Archetype") def test_create_has_prismatic_subtree_name_adds_prismatic_suffix(self): self._subtrees = ["Prismatic"] tree = TreeBuilder().name(self._class_name).build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.name, self._class_name + " (Prismatic)") self.assertEqual(result.type, "ClassPrismatic") def test_create_name_equal_to_class_name_sets_type(self): tree = TreeBuilder().name(self._class_name).build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.type, "Class") def test_create_is_warder_tree_sets_warder_type(self): tree = TreeBuilder().is_warder_tree().build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.type, "Warder") def test_create_sets_type_to_tree_name_without_spaces(self): tree = TreeBuilder().name("Tradeskill Prestige").build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.type, "TradeskillPrestige")
class TestTreeFactory(unittest.TestCase): def setUp(self): self._data_provider = MagicMock() self._aa_factory = MagicMock() self._logger = MagicMock() self._lineage = {"family": "Family", "archetype": "Archetype"} self._class_name = "SomeClass" self._aa = [1, 2, 3] self._orphans = [4, 5, 6] self._subtrees = ["Subtree1", "Subtree2"] self._tree_type = "TreeType" self.sut = TreeFactory(self._data_provider, self._aa_factory, self._logger) def _setup_tree(self, tree): def _create_all_aa(aa_nodes, lineage, class_name, tree_name, tree_type, y_subclass): if (aa_nodes is tree["alternateadvancementnode_list"] and lineage is self._lineage and class_name == self._class_name and tree_name == tree["name"]): return self._aa, self._orphans, self._subtrees self._data_provider.tree.return_value = { "alternateadvancement_list": [tree] } self._aa_factory.create_all.side_effect = _create_all_aa def test_create_maps_basic_properties(self): tree_soe_id = 1 tree = TreeBuilder()\ .with_id(tree_soe_id)\ .is_warder_tree()\ .build() self._setup_tree(tree) result = self.sut.create(tree_soe_id, self._lineage, self._class_name) self.assertEqual(result.id, 1) self.assertEqual(result.soe_id, tree_soe_id) self.assertEqual(result.name, tree["name"]) self.assertEqual(result.is_warder_tree, True) def test_create_populates_aa(self): aa_node = AABuilder().with_id(1).name("SomeAA").build() tree = TreeBuilder()\ .with_aa([aa_node])\ .build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.aa, self._aa) def test_create_populates_max_points(self): tree = TreeBuilder()\ .max_points(150)\ .build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.max_points, 150) def test_create_populates_x_y_ratio_and_subclasses(self): tree = TreeBuilder()\ .x_subclass("XSubclass")\ .y_subclass("YSubclass")\ .x_y_ratio(20, 2)\ .build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.x_y_ratio, 10) self.assertEqual(result.x_subclass, "XSubclass") self.assertEqual(result.y_subclass, "YSubclass") def test_create_name_equal_to_archetype_sets_type(self): tree = TreeBuilder().name(self._lineage["archetype"]).build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.type, "Archetype") def test_create_has_prismatic_subtree_name_adds_prismatic_suffix(self): self._subtrees = ["Prismatic"] tree = TreeBuilder().name(self._class_name).build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.name, self._class_name + " (Prismatic)") self.assertEqual(result.type, "ClassPrismatic") def test_create_name_equal_to_class_name_sets_type(self): tree = TreeBuilder().name(self._class_name).build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.type, "Class") def test_create_is_warder_tree_sets_warder_type(self): tree = TreeBuilder().is_warder_tree().build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.type, "Warder") def test_create_sets_type_to_tree_name_without_spaces(self): tree = TreeBuilder().name("Tradeskill Prestige").build() self._setup_tree(tree) result = self.sut.create(0, self._lineage, self._class_name) self.assertEqual(result.type, "TradeskillPrestige")
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))