def test_json_contains_for_json(self): q = PostgreSQLQuery.select(JSON({"a": 1, "b": 2}).contains({"a": 1})) # gotta split this one up to avoid the indeterminate order sql = str(q) start, end = 9, -13 self.assertEqual("SELECT '{}'@>'{\"a\":1}'", sql[:start] + sql[end:]) members_set = set(sql[start:end].split(",")) self.assertSetEqual({'"a":1', '"b":2'}, members_set)
def test_json_value_from_dict_recursive(self): q = PostgreSQLQuery.select(JSON({"a": "z", "b": {"c": "foo"}, "d": 1})) # gotta split this one up to avoid the indeterminate order sql = str(q) start, end = 9, -2 self.assertEqual("SELECT '{}'", sql[:start] + sql[end:]) members_set = set(sql[start:end].split(",")) self.assertSetEqual({'"a":"z"', '"b":{"c":"foo"}', '"d":1'}, members_set)
def test_json_value_from_array_str(self): q = PostgreSQLQuery.select(JSON(["a", "b", "c"])) self.assertEqual('SELECT \'["a","b","c"]\'', str(q))
def test_json_value_from_array_num(self): q = PostgreSQLQuery.select(JSON([1, 2, 3])) self.assertEqual("SELECT '[1,2,3]'", str(q))
def test_json_value_from_dict(self): q = PostgreSQLQuery.select(JSON({"a": "foo"})) self.assertEqual('SELECT \'{"a":"foo"}\'', str(q))