Add roadmap generation for milestone text_alignment

This commit is contained in:
Patrick Shechet
2023-11-11 12:09:01 -07:00
parent 859904ed52
commit a6adfb4f65
3 changed files with 100 additions and 4 deletions
+4 -3
View File
@@ -7,6 +7,7 @@ from PIL import Image, ImageChops
from src.tests.roadmap_generators import roadmap_generator
from src.tests.roadmap_generators.colour_theme import ColourTheme
from src.tests.roadmap_generators.colour_theme_extensive import ColourThemeExtensive
from src.tests.roadmap_generators.milestone_text_alignment import MilestoneTextAlignment
from src.tests.roadmap_generators.roadmap_abc import RoadmapABC
dir_for_examples = "example_roadmaps"
@@ -80,16 +81,16 @@ def generate_and_compare_roadmap_for_specific_platform(operating_system, roadmap
class TestCompareGeneratedRoadmaps:
@pytest.mark.ubuntu
@pytest.mark.parametrize("roadmap_class_to_test", [ColourThemeExtensive, ColourTheme])
@pytest.mark.parametrize("roadmap_class_to_test", [ColourThemeExtensive, ColourTheme, MilestoneTextAlignment])
def test_compare_generated_roadmaps_on_ubuntu(self, roadmap_class_to_test, operating_system_ubuntu):
generate_and_compare_roadmap_for_specific_platform(operating_system_ubuntu, roadmap_class_to_test)
@pytest.mark.macos
@pytest.mark.parametrize("roadmap_class_to_test", [ColourThemeExtensive, ColourTheme])
@pytest.mark.parametrize("roadmap_class_to_test", [ColourThemeExtensive, ColourTheme, MilestoneTextAlignment])
def test_compare_generated_roadmaps_on_macos(self, roadmap_class_to_test, operating_system_macos):
generate_and_compare_roadmap_for_specific_platform(operating_system_macos, roadmap_class_to_test)
@pytest.mark.windows
@pytest.mark.parametrize("roadmap_class_to_test", [ColourThemeExtensive, ColourTheme])
@pytest.mark.parametrize("roadmap_class_to_test", [ColourThemeExtensive, ColourTheme, MilestoneTextAlignment])
def test_compare_generated_roadmaps_on_windows(self, roadmap_class_to_test, operating_system_windows):
generate_and_compare_roadmap_for_specific_platform(operating_system_windows, roadmap_class_to_test)
@@ -0,0 +1,94 @@
import sys
from src.roadmapper.roadmap import Roadmap
from src.roadmapper.timelinemode import TimelineMode
from src.tests.roadmap_generators.roadmap_abc import RoadmapABC
class MilestoneTextAlignment(RoadmapABC):
def generate_and_save_as(
self,
file_name: str = "example.png",
) -> None:
roadmap: Roadmap = self.generate()
roadmap.draw()
roadmap.save(file_name)
def generate(self) -> Roadmap:
width = 1200
height = 1000
auto_height = True
mode = TimelineMode.MONTHLY
start_date = "2023-01-01"
number_of_items = 12
show_generic_dates = False
roadmap = Roadmap(width, height, auto_height=auto_height, show_marker=False)
roadmap.set_title("2023 Milestone Alignment")
roadmap.set_subtitle("GodZone Corporation")
roadmap.set_timeline(
mode=mode,
start=start_date,
number_of_items=number_of_items,
show_generic_dates=show_generic_dates,
)
group = roadmap.add_group("Milestone Alignment", text_alignment="left")
# Group containing each version of left align milsetone text
left_task = group.add_task(
"Left align", start_date, "2023-12-31"
)
left_task.add_milestone(
"default left", "2023-05-01", text_alignment="left"
)
left_task.add_milestone(
"percent left", "2023-07-01", text_alignment="left:75%"
)
left_task.add_milestone(
"units left", "2023-11-01", text_alignment="left:10"
)
# Group containing each version of right align milestone text
right_task = group.add_task(
"Right align", start_date, "2023-12-31"
)
right_task.add_milestone(
"default right", "2023-02-01", text_alignment="right"
)
right_task.add_milestone(
"percent right", "2023-05-01", text_alignment="right:75%"
)
right_task.add_milestone(
"units right", "2023-08-01", text_alignment="right:10"
)
# Group containing each version of none align milestone text
center_task = group.add_task(
"Center align", start_date, "2023-12-31"
)
center_task.add_milestone(
"not specified (center)", "2023-02-15"
)
center_task.add_milestone(
"percent right", "2023-02-15", text_alignment="center"
)
roadmap.set_footer("Generated by Roadmapper")
return roadmap
def is_arg_given():
return len(sys.argv) > 1
if __name__ == '__main__':
if is_arg_given():
example_name = sys.argv[1]
ColourTheme().generate_and_save_as(file_name=example_name)
else:
ColourTheme.generate_and_save_as()
@@ -4,11 +4,12 @@ from typing import Type
from src.tests.roadmap_generators.colour_theme import ColourTheme
from src.tests.roadmap_generators.colour_theme_extensive import ColourThemeExtensive
from src.tests.roadmap_generators.milestone_text_alignment import MilestoneTextAlignment
from src.tests.roadmap_generators.roadmap_abc import RoadmapABC
file_ending = ".png"
file_directory = ""
all_roadmaps_to_generate: [RoadmapABC] = [ColourThemeExtensive, ColourTheme]
all_roadmaps_to_generate: [RoadmapABC] = [ColourThemeExtensive, ColourTheme, MilestoneTextAlignment]
def append_trailing_slash_if_necessary(directory) -> str: