def test_not_emails():
    for value in [
            "foobar",  # just a string
            "root@localhost",  # domain part must include a .
            "foo@[email protected]",  # more than one @ sign
    ]:
        assert None is render_cell(value, None, None, None, Datasette([]))
def test_settings_disable():
    metadata = {
        "databases": {
            "mydatabase": {
                "tables": {
                    "mytable": {
                        "plugins": {
                            "datasette-mailto-links": {
                                "columns": [],
                            }
                        }
                    }
                }
            }
        }
    }
    datasette = Datasette([], metadata=metadata)
    assert None is render_cell("*****@*****.**", "email", "mytable",
                               "mydatabase", datasette)
    markup = render_cell("*****@*****.**", "email", "some_other_table",
                         "mydatabase", datasette)
    assert str(markup).startswith('<a href="mailto:')
def test_emails():
    for value in [
            "*****@*****.**",
            "*****@*****.**",
            "*****@*****.**",
            "*****@*****.**",
            "*****@*****.**",
            "*****@*****.**",
            "*****@*****.**",
            "*****@*****.**",
            "*****@*****.**",
            "*****@*****.**",
    ]:
        markup = render_cell(value, None, None, None, Datasette([]))
        assert str(markup).startswith('<a href="mailto:')
def test_not_strings():
    for value in [None, 1, False, 23.9, -7]:
        assert None is render_cell(value, None, None, None, Datasette([]))
def test_escaping():
    markup = render_cell("foo@<script>alert('XSS');</script>.bar", None, None,
                         None, Datasette([]))
    assert None is not markup
    assert "<script>" not in str(markup)