Skip to content
Snippets Groups Projects
Select Git revision
  • 74d7bee962ec16c086dba1d6832111a5005bfe8e
  • main default protected
2 results

test_intermediary_to_er.py

Blame
  • user avatar
    Florian Maurer authored
    Draw relations between specific columns rather than just between the tables (because when there are multiple
    relations between two tables, that ends up looking very messy).
    8fa193e1
    History
    test_intermediary_to_er.py 1.47 KiB
    import re
    
    from eralchemy.main import _intermediary_to_markdown
    from tests.common import (
        child,
        child_id,
        child_parent_id,
        parent,
        parent_id,
        parent_name,
        relation,
    )
    
    column_re = re.compile(r'(?P<key>\*?)(?P<name>[^*].+) \{label:"(?P<type>.+)"\}')
    
    
    def test_all_to_er():
        tables = [child, parent]
        relations = [relation]
        output = _intermediary_to_markdown(tables, relations)
        for element in relations + tables:
            assert element.to_markdown() in output
    
    
    def assert_column_well_rendered_to_er(col):
        col_er = col.to_markdown().strip()
        col_parsed = column_re.match(col_er)
        assert col_parsed.group("key") == ("*" if col.is_key else "")
        assert col_parsed.group("name") == col.name
        assert col_parsed.group("type") == col.type
    
    
    def test_column_to_er():
        assert_column_well_rendered_to_er(parent_id)
        assert_column_well_rendered_to_er(parent_name)
        assert_column_well_rendered_to_er(child_id)
        assert_column_well_rendered_to_er(child_parent_id)
    
    
    def test_relation():
        assert relation.to_markdown() in [
            'parent."id" *--? child."parent_id"',
            'child."parent_id" *--? parent."id"',
        ]
    
    
    def assert_table_well_rendered_to_er(table):
        assert table.header_markdown == "[" + table.name + "]"
        table_er = table.to_markdown()
        for col in table.columns:
            assert col.to_markdown() in table_er
    
    
    def test_table():
        assert_table_well_rendered_to_er(child)
        assert_table_well_rendered_to_er(parent)