Exemple #1
0
    def test_empty(self):
        namespace = ParsedNamespaces.from_name("", ['database', 'table'])

        assert bool(namespace) is False
        assert namespace.database is None
        assert namespace.table is None
        assert str(namespace) == ''
        assert repr(namespace) == 'Namespace<>'
Exemple #2
0
    def test_casting(self):
        namespace = ParsedNamespaces.from_name(
            name='my_db.my_table',
            namespaces=['catalog', 'database', 'table']
        )

        assert str(namespace) == '"my_db"."my_table"'
        assert bool(namespace) is True
        assert namespace.__bool__() == namespace.__nonzero__()  # Python 2/3 compatibility
        assert repr(namespace) == 'Namespace<"my_db"."my_table">'
Exemple #3
0
    def test_parent(self):
        namespace = ParsedNamespaces.from_name(
            name='my_db.my_table',
            namespaces=['catalog', 'database', 'table']
        )

        assert namespace.parent.name == '"my_db"'
        assert namespace.parent.as_dict() == {
            'catalog': None,
            'database': 'my_db'
        }
Exemple #4
0
    def test_simple(self):
        namespace = ParsedNamespaces.from_name(
            name='my_db.my_table',
            namespaces=['database', 'table']
        )

        assert namespace.database == 'my_db'
        assert namespace.table == 'my_table'
        assert namespace.as_dict() == {
            'database': 'my_db',
            'table': 'my_table'
        }
Exemple #5
0
    def test_separator(self):
        namespace = ParsedNamespaces.from_name(
            name='cat|my_db|my_table',
            namespaces=['catalog', 'database', 'table'],
            separator='|'
        )

        assert namespace.catalog == 'cat'
        assert namespace.database == 'my_db'
        assert namespace.table == 'my_table'
        assert namespace.as_dict() == {
            'catalog': 'cat',
            'database': 'my_db',
            'table': 'my_table'
        }
Exemple #6
0
    def test_quoted_names(self):
        namespace = ParsedNamespaces.from_name(
            name='`my_db`.`my . table`',
            namespaces=['catalog', 'database', 'table'],
            quote_char='`'
        )

        assert namespace.catalog is None
        assert namespace.database == 'my_db'
        assert namespace.table == 'my . table'
        assert namespace.as_dict() == {
            'catalog': None,
            'database': 'my_db',
            'table': 'my . table'
        }
Exemple #7
0
    def test_not_encapsulated(self):
        namespace = ParsedNamespaces.from_name('my_db.my_table', ['database', 'table'])
        assert namespace.as_dict() == {'database': 'my_db', 'table': 'my_table'}

        with pytest.raises(ValueError):
            ParsedNamespaces.from_name(namespace, ['schema', 'table'])
Exemple #8
0
 def test_nonexistent_namespace(self):
     with pytest.raises(AttributeError):
         ParsedNamespaces.from_name(
             name='my_table',
             namespaces=['table']
         ).database
Exemple #9
0
 def test_parsing_failure(self):
     with pytest.raises(ValueError):
         ParsedNamespaces.from_name(
             name='my_db.my_table',
             namespaces=['table']
         )