import pytest
from markitect.parser import parse_markdown_to_ast

def test_markdown_parser_converts_heading_and_paragraph_to_ast_tokens():
    md_content = "# Heading\nThis is a paragraph."
    expected_ast = [
    {
        'type': 'heading_open',
        'tag': 'h1',
        'attrs': {},
        'map': [0, 1],
        'nesting': 1,
        'level': 0,
        'content': '',
        'markup': '#',
        'info': '',
        'meta': {},
        'block': True,
        'hidden': False
    },
    {
        'type': 'inline',
        'tag': '',
        'attrs': {},
        'map': [0, 1],
        'nesting': 0,
        'level': 1,
        'children': [
            {
                'type': 'text',
                'tag': '',
                'attrs': {},
                'nesting': 0,
                'level': 0,
                'content': 'Heading',
                'markup': '',
                'info': '',
                'meta': {},
                'block': False,
                'hidden': False
            }
        ],
        'content': 'Heading',
        'markup': '',
        'info': '',
        'meta': {},
        'block': True,
        'hidden': False
    },
    {
        'type': 'heading_close',
        'tag': 'h1',
        'attrs': {},
        'nesting': -1,
        'level': 0,
        'content': '',
        'markup': '#',
        'info': '',
        'meta': {},
        'block': True,
        'hidden': False
    },
    {
        'type': 'paragraph_open',
        'tag': 'p',
        'attrs': {},
        'map': [1, 2],
        'nesting': 1,
        'level': 0,
        'content': '',
        'markup': '',
        'info': '',
        'meta': {},
        'block': True,
        'hidden': False
    },
    {
        'type': 'inline',
        'tag': '',
        'attrs': {},
        'map': [1, 2],
        'nesting': 0,
        'level': 1,
        'children': [
            {
                'type': 'text',
                'tag': '',
                'attrs': {},
                'nesting': 0,
                'level': 0,
                'content': 'This is a paragraph.',
                'markup': '',
                'info': '',
                'meta': {},
                'block': False,
                'hidden': False
            }
        ],
        'content': 'This is a paragraph.',
        'markup': '',
        'info': '',
        'meta': {},
        'block': True,
        'hidden': False
    },
    {
        'type': 'paragraph_close',
        'tag': 'p',
        'attrs': {},
        'nesting': -1,
        'level': 0,
        'content': '',
        'markup': '',
        'info': '',
        'meta': {},
        'block': True,
        'hidden': False
    }
]
    assert parse_markdown_to_ast(md_content) == expected_ast
