Skip to content
Snippets Groups Projects
Select Git revision
  • 823db2c5303d8ccce6ecbe3b9d58533e4d892cfa
  • main default protected
  • non-repudiation
  • v1.1
  • v1.0
  • v0.1
6 results

tmp.spthy

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