Skip to content

Commit 61ec540

Browse files
test(json): add tests for jsonb functions and json/jsonb interop
1 parent 62d8f95 commit 61ec540

File tree

1 file changed

+112
-1
lines changed

1 file changed

+112
-1
lines changed

testing/json.test

Lines changed: 112 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,6 @@ do_execsql_test json_array_nested {
238238
SELECT json_array(json_array(1,2,3), json('[1,2,3]'), '[1,2,3]')
239239
} {{[[1,2,3],[1,2,3],"[1,2,3]"]}}
240240

241-
242241
do_execsql_test json_extract_null {
243242
SELECT json_extract(null, '$')
244243
} {{}}
@@ -750,6 +749,118 @@ do_execsql_test_in_memory_error_content json_replace_blob_error {
750749
SELECT json_replace('{"field":1}', '$.field', a) FROM t;
751750
} {JSON cannot hold BLOB values}
752751

752+
do_execsql_test_in_memory_error_content json_array_blob_error {
753+
CREATE TABLE t(a);
754+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
755+
SELECT json_array(a) FROM t;
756+
} {JSON cannot hold BLOB values}
757+
758+
do_execsql_test_in_memory_error_content jsonb_object_blob_error {
759+
CREATE TABLE t(a);
760+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
761+
SELECT jsonb_object('a', a) FROM t;
762+
} {JSON cannot hold BLOB values}
763+
764+
do_execsql_test_in_memory_error_content jsonb_set_blob_error {
765+
CREATE TABLE t(a);
766+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
767+
SELECT jsonb_set('{}', '$.field', a) FROM t;
768+
} {JSON cannot hold BLOB values}
769+
770+
do_execsql_test_in_memory_error_content jsonb_insert_blob_error {
771+
CREATE TABLE t(a);
772+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
773+
SELECT jsonb_insert('{}', '$.field', a) FROM t;
774+
} {JSON cannot hold BLOB values}
775+
776+
do_execsql_test_in_memory_error_content jsonb_replace_blob_error {
777+
CREATE TABLE t(a);
778+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
779+
SELECT jsonb_replace('{"field":1}', '$.field', a) FROM t;
780+
} {JSON cannot hold BLOB values}
781+
782+
do_execsql_test_in_memory_error_content jsonb_array_blob_error {
783+
CREATE TABLE t(a);
784+
INSERT INTO t VALUES (x'74727565'); -- ASCII "true";
785+
SELECT jsonb_array(a) FROM t;
786+
} {JSON cannot hold BLOB values}
787+
788+
do_execsql_test_on_specific_db {:memory:} jsonb_object_with_json_conversion {
789+
CREATE TABLE t1(data TEXT);
790+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
791+
SELECT json(jsonb_object('original', json(data), 'new', 'value')) FROM t1;
792+
} {{{"original":{"name":"Alice","age":30},"new":"value"}}}
793+
794+
do_execsql_test_on_specific_db {:memory:} json_object_with_jsonb_conversion {
795+
CREATE TABLE t1(data BLOB);
796+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
797+
SELECT json_object('original', json(data), 'new', 'value') FROM t1;
798+
} {{{"original":{"name":"Bob","age":25},"new":"value"}}}
799+
800+
do_execsql_test_on_specific_db {:memory:} jsonb_set_with_json_conversion {
801+
CREATE TABLE t1(data TEXT);
802+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
803+
SELECT json(jsonb_set(json(data), '$.city', '"NY"')) FROM t1;
804+
} {{{"name":"Alice","age":30,"city":"\"NY\""}}}
805+
806+
807+
do_execsql_test_on_specific_db {:memory:} json_set_with_jsonb_conversion {
808+
CREATE TABLE t1(data BLOB);
809+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
810+
SELECT json_set(json(data), '$.city', '"NY"') FROM t1;
811+
} {{{"name":"Bob","age":25,"city":"\"NY\""}}}
812+
813+
814+
do_execsql_test_on_specific_db {:memory:} jsonb_insert_with_json_conversion {
815+
CREATE TABLE t1(data TEXT);
816+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
817+
SELECT json(jsonb_insert(json(data), '$.city', '"NY"')) FROM t1;
818+
} {{{"name":"Alice","age":30,"city":"\"NY\""}}}
819+
820+
821+
do_execsql_test_on_specific_db {:memory:} json_insert_with_jsonb_conversion {
822+
CREATE TABLE t1(data BLOB);
823+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
824+
SELECT json_insert(json(data), '$.city', '"NY"') FROM t1;
825+
} {{{"name":"Bob","age":25,"city":"\"NY\""}}}
826+
827+
828+
do_execsql_test_on_specific_db {:memory:} jsonb_replace_with_json_conversion {
829+
CREATE TABLE t1(data TEXT);
830+
INSERT INTO t1 VALUES ('{"name":"Alice","age":30}');
831+
SELECT json(jsonb_replace(json(data), '$.age', '31')) FROM t1;
832+
} {{{"name":"Alice","age":"31"}}}
833+
834+
do_execsql_test_on_specific_db {:memory:} json_replace_with_jsonb_conversion {
835+
CREATE TABLE t1(data BLOB);
836+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob","age":25}'));
837+
SELECT json_replace(json(data), '$.age', '26') FROM t1;
838+
} {{{"name":"Bob","age":"26"}}}
839+
840+
do_execsql_test_on_specific_db {:memory:} jsonb_array_with_json_conversion {
841+
CREATE TABLE t1(data TEXT);
842+
INSERT INTO t1 VALUES ('{"name":"Alice"}');
843+
SELECT json(jsonb_array(json(data), 'extra')) FROM t1;
844+
} {{[{"name":"Alice"},"extra"]}}
845+
846+
do_execsql_test_on_specific_db {:memory:} json_array_with_jsonb_conversion {
847+
CREATE TABLE t1(data BLOB);
848+
INSERT INTO t1 VALUES (jsonb('{"name":"Bob"}'));
849+
SELECT json_array(json(data), 'extra') FROM t1;
850+
} {{[{"name":"Bob"},"extra"]}}
851+
852+
do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_extract {
853+
CREATE TABLE t1(data BLOB);
854+
INSERT INTO t1 VALUES (jsonb('{"name":"Alice","age":30}'));
855+
SELECT json_extract(json(jsonb_set(data, '$.city', '"NY"')), '$.city') FROM t1;
856+
} {{"NY"}}
857+
858+
do_execsql_test_on_specific_db {:memory:} mixed_json_jsonb_json_object {
859+
CREATE TABLE t1(text_data TEXT, blob_data BLOB);
860+
INSERT INTO t1 VALUES ('{"a":1}', jsonb('{"b":2}'));
861+
SELECT json_object('text', json(text_data), 'blob', json(blob_data)) FROM t1;
862+
} {{{"text":{"a":1},"blob":{"b":2}}}}
863+
753864
do_execsql_test json_object_json_array {
754865
SELECT json_object('ex',json('[52,3]'));
755866
} {{{"ex":[52,3]}}}

0 commit comments

Comments
 (0)