Source code for sqlobject.tests.test_jsonbcol
import pytest
from sqlobject import SQLObject, JsonbCol
from sqlobject.tests.dbtest import getConnection, setupClass
########################################
# Jsonb columns
########################################
[docs]class JsonbContainer(SQLObject):
    jsondata = JsonbCol(default=None)
    jsondata_none = JsonbCol(default=None)
    jsondata_list = JsonbCol(default=None) 
dictdata = dict(
    ship=u'USS Voyager',
    number='NCC-74656',
    crew=['Cpt. Janeway', 'Doctor', 'Lt. Torries', 'Seven of Nine'],
    races=('Borg', 'Kason',),
    distance2earth=70000,
    coming_home=True)
nonedata = None
listofdictsdata = [dict(Erath=7390000000),
                   dict(Vulcan=6000000000),
                   dict(Kronos='unknown')]
[docs]def test_jsonbCol():
    connection = getConnection()
    if connection.dbName != "postgres":
        pytest.skip("These tests require PostgreSQL")
    setupClass([JsonbContainer], force=True)
    my_jsonb = JsonbContainer(
        jsondata=dictdata,
        jsondata_none=nonedata,
        jsondata_list=listofdictsdata)
    iid = my_jsonb.id
    JsonbContainer._connection.cache.clear()
    my_jsonb_2 = JsonbContainer.get(iid)
    assert my_jsonb_2.jsondata['coming_home'] == dictdata['coming_home']
    assert my_jsonb_2.jsondata['crew'] == dictdata['crew']
    assert my_jsonb_2.jsondata['races'] == ['Borg', 'Kason']
    assert my_jsonb_2.jsondata_none is None
    assert my_jsonb_2.jsondata_list == listofdictsdata