from ..parser import parse


def test_bold_bbcode(request_mock, user, snapshot):
    text = "Lorem [b]ipsum[/b]!"
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_italics_bbcode(request_mock, user, snapshot):
    text = "Lorem [i]ipsum[/i]!"
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_underline_bbcode(request_mock, user, snapshot):
    text = "Lorem [u]ipsum[/u]!"
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_inline_bbcode_can_be_mixed_with_markdown(request_mock, user, snapshot):
    text = "Lorem [b]**ipsum**[/b]!"
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_image_bbcode(request_mock, user, snapshot):
    text = "Lorem [img]https://placekitten.com/g/1200/500[/img] ipsum"
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_image_bbcode_is_case_insensitive(request_mock, user, snapshot):
    text = "Lorem [iMg]https://placekitten.com/g/1200/500[/ImG] ipsum"
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_url_bbcode(request_mock, user, snapshot):
    text = "Lorem [url]https://placekitten.com/g/1200/500[/url] ipsum"
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_url_bbcode_includes_nofollow_and_noopener(request_mock, user, snapshot):
    text = "Lorem [url]https://placekitten.com/g/1200/500[/url] ipsum"
    result = parse(text, request_mock, user, minify=False)
    assert 'rel="nofollow noopener"' in result["parsed_text"]


def test_url_bbcode_with_link_text(request_mock, user, snapshot):
    text = "Lorem [url=https://placekitten.com/g/1200/500]dolor[/url] ipsum"
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_url_bbcode_with_long_link_text(request_mock, user, snapshot):
    text = "Lorem [url=https://placekitten.com/g/1200/500]dolor met[/url] ipsum"
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_url_bbcode_with_quotes_and_link_text(request_mock, user, snapshot):
    text = 'Lorem [url="https://placekitten.com/g/1200/500"]dolor[/url] ipsum'
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])


def test_url_bbcode_with_quotes_and_long_link_text(request_mock, user, snapshot):
    text = 'Lorem [url="https://placekitten.com/g/1200/500"]dolor met[/url] ipsum'
    result = parse(text, request_mock, user, minify=False)
    snapshot.assert_match(result["parsed_text"])