Esempio n. 1
0
def test_update_query():
    query = users.update().where(users.c.name == 'default')
    query = query.values(name='newname',
                         serial=5555,
                         t_list=['l3', 'l4'],
                         t_enum=MyEnum.ITEM_1,
                         t_int_enum=MyIntEnum.ITEM_2,
                         t_datetime=datetime(2030, 1, 1),
                         t_date=date(2030, 1, 1),
                         t_date_2=date(2030, 1, 1),
                         t_interval=timedelta(seconds=180),
                         t_boolean=False)
    new_query, new_params = connection.compile_query(query)
    assert query.parameters.get('version')
    assert query.parameters.get('serial') == 5555
    assert query.parameters.get('name') == 'newname'
    assert query.parameters.get('t_list') == ['l3', 'l4']
    assert query.parameters.get('t_enum') == MyEnum.ITEM_1
    assert query.parameters.get('t_int_enum') == MyIntEnum.ITEM_2
    assert query.parameters.get('t_datetime') == datetime(2030, 1, 1)
    assert query.parameters.get('t_date') == date(2030, 1, 1)
    assert query.parameters.get('t_date_2') == date(2030, 1, 1)
    assert query.parameters.get('t_interval') == timedelta(seconds=180)
    assert query.parameters.get('t_boolean') == False
    assert isinstance(query.parameters.get('version'), UUID)
Esempio n. 2
0
def test_insert_query_defaults_override():
    query = users.insert()
    query = query.values(
        name='username',
        serial=4444,
        t_list=['l1', 'l2'],
        t_enum=MyEnum.ITEM_1,
        t_int_enum=MyIntEnum.ITEM_2,
        t_datetime=datetime(2020, 1, 1),
        t_date=date(2020, 1, 1),
        t_date_2=date(2020, 1, 1),
        t_interval=timedelta(seconds=120),
        t_boolean=False
    )
    new_query, new_params = connection.compile_query(query)
    assert query.parameters.get('version')
    assert query.parameters.get('serial') == 4444
    assert query.parameters.get('name') == 'username'
    assert query.parameters.get('t_list') == ['l1', 'l2']
    assert query.parameters.get('t_enum') == MyEnum.ITEM_1
    assert query.parameters.get('t_int_enum') == MyIntEnum.ITEM_2
    assert query.parameters.get('t_datetime') == datetime(2020, 1, 1)
    assert query.parameters.get('t_date') == date(2020, 1, 1)
    assert query.parameters.get('t_date_2') == date(2020, 1, 1)
    assert query.parameters.get('t_interval') == timedelta(seconds=120)
    assert query.parameters.get('t_boolean') == False
    assert isinstance(query.parameters.get('version'), UUID)
Esempio n. 3
0
def test_update_query():
    query = users.update().where(users.c.name == 'default')
    query = query.values(
        name='newname',
        serial=5555,
        t_list=['l3', 'l4'],
        t_enum=MyEnum.ITEM_1,
        t_int_enum=MyIntEnum.ITEM_2,
        t_datetime=datetime(2030, 1, 1),
        t_date=date(2030, 1, 1),
        t_date_2=date(2030, 1, 1),
        t_interval=timedelta(seconds=180),
        t_boolean=False
    )
    new_query, new_params = connection.compile_query(query)
    assert query.parameters.get('version')
    assert query.parameters.get('serial') == 5555
    assert query.parameters.get('name') == 'newname'
    assert query.parameters.get('t_list') == ['l3', 'l4']
    assert query.parameters.get('t_enum') == MyEnum.ITEM_1
    assert query.parameters.get('t_int_enum') == MyIntEnum.ITEM_2
    assert query.parameters.get('t_datetime') == datetime(2030, 1, 1)
    assert query.parameters.get('t_date') == date(2030, 1, 1)
    assert query.parameters.get('t_date_2') == date(2030, 1, 1)
    assert query.parameters.get('t_interval') == timedelta(seconds=180)
    assert query.parameters.get('t_boolean') == False
    assert isinstance(query.parameters.get('version'), UUID)
Esempio n. 4
0
def test_insert_query_defaults_override():
    query = users.insert()
    query = query.values(name='username',
                         serial=4444,
                         t_list=['l1', 'l2'],
                         t_enum=MyEnum.ITEM_1,
                         t_int_enum=MyIntEnum.ITEM_2,
                         t_datetime=datetime(2020, 1, 1),
                         t_date=date(2020, 1, 1),
                         t_date_2=date(2020, 1, 1),
                         t_interval=timedelta(seconds=120),
                         t_boolean=False)
    new_query, new_params = connection.compile_query(query)
    assert query.parameters.get('version')
    assert query.parameters.get('serial') == 4444
    assert query.parameters.get('name') == 'username'
    assert query.parameters.get('t_list') == ['l1', 'l2']
    assert query.parameters.get('t_enum') == MyEnum.ITEM_1
    assert query.parameters.get('t_int_enum') == MyIntEnum.ITEM_2
    assert query.parameters.get('t_datetime') == datetime(2020, 1, 1)
    assert query.parameters.get('t_date') == date(2020, 1, 1)
    assert query.parameters.get('t_date_2') == date(2020, 1, 1)
    assert query.parameters.get('t_interval') == timedelta(seconds=120)
    assert query.parameters.get('t_boolean') == False
    assert isinstance(query.parameters.get('version'), UUID)
def test_compile_create_table_ddl():
    create_statement = CreateTable(ddl_test_table)
    result, params = connection.compile_query(create_statement)
    assert result == (
        '\nCREATE TABLE ddl_test_table (\n\tint_col'
        ' INTEGER, \n\tstr_col VARCHAR\n)\n\n'
    )
    assert len(params) == 0
Esempio n. 6
0
def test_compile_query():
    ids = list(range(1, 4))
    query = file_table.update() \
        .values(id=None) \
        .where(file_table.c.id.in_(ids))
    q, p = connection.compile_query(query)
    assert q == 'UPDATE meows SET id=$1 WHERE meows.id IN ($2, $3, $4)'
    assert p == [None, 1, 2, 3]
Esempio n. 7
0
def test_compile_query():
    ids = list(range(1, 4))
    query = file_table.update() \
        .values(id=None) \
        .where(file_table.c.id.in_(ids))
    q, p = connection.compile_query(query)
    assert q == 'UPDATE meows SET id=$1 WHERE meows.id IN ($2, $3, $4)'
    assert p == [None, 1, 2, 3]
Esempio n. 8
0
async def test__replace_keys_colon():
    sql = sa.text('SELECT :id, my_date::DATE FROM users')
    params = {
        'id': 123,
    }
    sql = sql.params(**params)

    q, p = connection.compile_query(sql)
    assert q == 'SELECT $1, my_date::DATE FROM users'
    assert p == [123]
Esempio n. 9
0
def test_compile_query_no_debug(caplog):
    """Validates that no output is printed when
    the debug flag is disabled."""
    ids = list(range(1, 3))
    query = file_table.update() \
        .values(id=None) \
        .where(file_table.c.id.in_(ids))

    with caplog.at_level(logging.WARNING, logger='asyncpgsa.query'):
        results, _ = connection.compile_query(query)
        msgs = [record.msg for record in caplog.records]
        assert results not in msgs
Esempio n. 10
0
async def test_compile_query_debug(caplog):
    """Validates that the query is printed to stdout
    when the debug flag is enabled."""
    ids = list(range(1, 3))
    query = file_table.update() \
        .values(id=None) \
        .where(file_table.c.id.in_(ids))

    with caplog.atLevel(logging.DEBUG, logger='asyncpgsa.query'):
        results, _ = connection.compile_query(query)
        msgs = [record.msg for record in caplog.records()]
        assert results in msgs
Esempio n. 11
0
async def test_compile_query_debug(caplog):
    """Validates that the query is printed to stdout
    when the debug flag is enabled."""
    ids = list(range(1, 3))
    query = file_table.update() \
        .values(id=None) \
        .where(file_table.c.id.in_(ids))

    with caplog.atLevel(logging.DEBUG, logger='asyncpgsa.query'):
        results, _ = connection.compile_query(query)
        msgs = [record.msg for record in caplog.records()]
        assert results in msgs
Esempio n. 12
0
def test_compile_query_no_debug(caplog):
    """Validates that no output is printed when
    the debug flag is disabled."""
    ids = list(range(1, 3))
    query = file_table.update() \
        .values(id=None) \
        .where(file_table.c.id.in_(ids))

    with caplog.at_level(logging.WARNING, logger='asyncpgsa.query'):
        results, _ = connection.compile_query(query)
        msgs = [record.msg for record in caplog.records]
        assert results not in msgs
Esempio n. 13
0
def test_insert_query_defaults():
    query = users.insert()
    new_query, new_params = connection.compile_query(query)
    assert query.parameters.get('name') == name_default
    assert query.parameters.get('t_list') == t_list_default
    assert query.parameters.get('t_enum') == t_enum_default
    assert query.parameters.get('t_int_enum') == t_int_enum_default
    assert query.parameters.get('t_datetime') == t_datetime_default
    assert query.parameters.get('t_date') == t_date_default
    assert query.parameters.get('t_date_2') == t_date_2_default()
    assert query.parameters.get('t_interval') == t_interval_default
    assert isinstance(query.parameters.get('version'), UUID)
    assert query.parameters.get('t_boolean') == t_boolean_default
Esempio n. 14
0
def test_insert_query_defaults():
    query = users.insert()
    new_query, new_params = connection.compile_query(query)
    serial_default = query.parameters.get('serial')
    assert serial_default.name == 'nextval'
    assert serial_default.clause_expr.element.clauses[0].value == 'serial_seq'
    assert query.parameters.get('name') == name_default
    assert query.parameters.get('t_list') == t_list_default
    assert query.parameters.get('t_enum') == t_enum_default
    assert query.parameters.get('t_int_enum') == t_int_enum_default
    assert query.parameters.get('t_datetime') == t_datetime_default
    assert query.parameters.get('t_date') == t_date_default
    assert query.parameters.get('t_date_2') == t_date_2_default()
    assert query.parameters.get('t_interval') == t_interval_default
    assert isinstance(query.parameters.get('version'), UUID)
    assert query.parameters.get('t_boolean') == t_boolean_default
Esempio n. 15
0
async def test_compile_query(monkeypatch):
    def mock(*args):
        return 'bob'
    monkeypatch.setattr('asyncpgsa.connection._get_keys', mock)

    def mock(*args):
        return 'bob', 'sally'
    monkeypatch.setattr('asyncpgsa.connection._replace_keys',
                        mock)
    ids = list(range(1, 40))
    query = file_table.update() \
        .values(id=None) \
        .where(file_table.c.id.in_(ids))

    results = connection.compile_query(query)
    assert ('bob', 'sally') == results
Esempio n. 16
0
def test_insert_query_defaults():
    query = users.insert()
    new_query, new_params = connection.compile_query(query)
    serial_default = query.parameters.get('serial')
    assert serial_default.name == 'nextval'
    assert serial_default.clause_expr.element.clauses[0].value == 'serial_seq'
    assert query.parameters.get('name') == name_default
    assert query.parameters.get('t_list') == t_list_default
    assert query.parameters.get('t_enum') == t_enum_default
    assert query.parameters.get('t_int_enum') == t_int_enum_default
    assert query.parameters.get('t_datetime') == t_datetime_default
    assert query.parameters.get('t_date') == t_date_default
    assert query.parameters.get('t_date_2') == t_date_2_default()
    assert query.parameters.get('t_interval') == t_interval_default
    assert isinstance(query.parameters.get('version'), UUID)
    assert query.parameters.get('t_boolean') == t_boolean_default
Esempio n. 17
0
async def test_compile_query(monkeypatch):
    def mock(*args):
        return 'bob'
    monkeypatch.setattr('asyncpgsa.connection._get_keys', mock)

    def mock(*args):
        return 'bob', 'sally'
    monkeypatch.setattr('asyncpgsa.connection._replace_keys',
                        mock)
    ids = list(range(1, 40))
    query = file_table.update() \
        .values(id=None) \
        .where(file_table.c.id.in_(ids))

    results = connection.compile_query(query)
    assert ('bob', 'sally') == results
def test_compile_jsonb_with_custom_json_encoder():
    jsonb_table = sa.Table(
        'meowsb', sa.MetaData(),
        sa.Column('data', postgresql.JSONB),
    )

    class JSONEncoder(json.JSONEncoder):
        def default(self, o):
            if isinstance(o, uuid.UUID):
                return str(o)
            else:
                return super().default(o)

    dialect = connection.get_dialect(
        json_serializer=partial(json.dumps, cls=JSONEncoder)
    )

    data = {
        'uuid4': uuid.uuid4(),
    }
    query = jsonb_table.insert().values(data=data)
    q, p = connection.compile_query(query, dialect=dialect)
    assert q == 'INSERT INTO meowsb (data) VALUES ($1)'
    assert p == ['{"uuid4": "%s"}' % data['uuid4']]
Esempio n. 19
0
def test_compile_query_with_custom_column_type():
    query = file_type_table.insert().values(type=FileTypes.PDF)
    q, p = connection.compile_query(query)
    assert q == 'INSERT INTO meows2 (type) VALUES ($1)'
    assert p == ['PDF']
Esempio n. 20
0
def test_compile_text_query():
    sql = sa.text('SELECT :id, my_date::DATE FROM users').params(id=123)
    q, p = connection.compile_query(sql)
    assert q == 'SELECT $1, my_date::DATE FROM users'
    assert p == [123]
Esempio n. 21
0
def test__insert_query_with_scalar_default():
    query = users.insert()
    new_query, new_params = connection.compile_query(query)
    assert query.parameters.get('name') == 'default'
Esempio n. 22
0
def test__insert_query_with_callable_default():
    query = users.insert().\
        values(name='username')
    new_query, new_params = connection.compile_query(query)
    assert query.parameters.get('id') is not None
    assert query.parameters.get('version') is not None
Esempio n. 23
0
def test_compile_query_with_custom_column_type():
    query = file_type_table.insert().values(type=FileTypes.PDF)
    q, p = connection.compile_query(query)
    assert q == 'INSERT INTO meows2 (type) VALUES ($1)'
    assert p == ['PDF']
Esempio n. 24
0
def test_compile_text_query():
    sql = sa.text('SELECT :id, my_date::DATE FROM users').params(id=123)
    q, p = connection.compile_query(sql)
    assert q == 'SELECT $1, my_date::DATE FROM users'
    assert p == [123]
Esempio n. 25
0
def test__update_query_with_callable_default():
    query = users.update().\
        values(name='newname').\
        where(users.c.name == 'default')
    new_query, new_params = connection.compile_query(query)
    assert query.parameters.get('version') is not None
def test_compile_drop_table_ddl():
    drop_statement = DropTable(ddl_test_table)
    drop_query, params = connection.compile_query(drop_statement)
    assert drop_query == '\nDROP TABLE ddl_test_table'
    assert len(params) == 0
Esempio n. 27
0
    def query(self, query, *args, **kwargs):
        compiled_q, compiled_args = compile_query(query)
        query, args = compiled_q, compiled_args or args

        return MockQueryContextManager(self.connection, query, args)
Esempio n. 28
0
    def query(self, query, *args, **kwargs):
        compiled_q, compiled_args = compile_query(query)
        query, args = compiled_q, compiled_args or args

        return MockQueryContextManager(self.connection, query, args)