Beispiel #1
0
def test_old_metadata_is_replaced(arg, sqlite_client_and_tmp_dir):
    client, tmp = sqlite_client_and_tmp_dir
    schema, name, _ = arg
    product = SQLiteRelation(arg, client=client)

    product.render({})

    product.save_metadata({
        'timestamp': datetime.now().timestamp(),
        'stored_source_code': 'some code'
    })

    product.save_metadata({
        'timestamp': datetime.now().timestamp(),
        'stored_source_code': 'some code'
    })

    query = "SELECT COUNT(*) FROM _metadata WHERE name='{}'".format(name)

    if schema is not None:
        query += " AND schema='{}'".format(schema)

    result = list(client.engine.execute(query))[0][0]

    assert result == 1
def test_sqlite_product_fetch_metadata_none_if_not_exists(tmp_directory):
    tmp = Path(tmp_directory)
    conn = SQLAlchemyClient('sqlite:///{}'.format(tmp / "database.db"))

    numbers = SQLiteRelation((None, 'numbers', 'table'), conn)
    numbers.render({})

    assert numbers.fetch_metadata() is None
def test_sqlite_product_fetch_metadata_none_if_empty_metadata(tmp_directory):
    tmp = Path(tmp_directory)
    conn = SQLAlchemyClient('sqlite:///{}'.format(tmp / "database.db"))

    df = pd.DataFrame({'a': np.arange(0, 100), 'b': np.arange(100, 200)})
    df.to_sql('numbers', conn.engine)

    numbers = SQLiteRelation((None, 'numbers', 'table'), conn)
    numbers.render({})

    assert numbers.fetch_metadata() is None
def test_sqlite_product_save_metadata(tmp_directory):
    tmp = Path(tmp_directory)
    conn = SQLAlchemyClient('sqlite:///{}'.format(tmp / "database.db"))

    numbers = SQLiteRelation((None, 'numbers', 'table'), conn)
    numbers.render({})

    numbers.metadata['timestamp'] = datetime.now().timestamp()
    numbers.metadata['stored_source_code'] = 'some code'

    numbers.save_metadata()

    fetched = numbers.fetch_metadata()

    assert fetched == numbers.metadata
def test_sqlite_product_delete(tmp_directory):
    """
    >>> import tempfile
    >>> tmp_directory = tempfile.mkdtemp()
    """
    tmp = Path(tmp_directory)
    conn = SQLAlchemyClient('sqlite:///{}'.format(tmp / "database.db"))

    df = pd.DataFrame({'a': np.arange(0, 100), 'b': np.arange(100, 200)})
    df.to_sql('numbers', conn.engine)

    numbers = SQLiteRelation((None, 'numbers', 'table'), conn)
    numbers.render({})
    numbers.delete()

    assert not numbers.exists()