Coverage for databases/tests/arrays/test_json.py: 100%
40 statements
« prev ^ index » next coverage.py v7.2.7, created at 2024-08-27 18:25 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2024-08-27 18:25 +0000
1import pytest
3from prisma import Json, Prisma
6@pytest.mark.asyncio
7async def test_updating_json(client: Prisma) -> None:
8 """Updating a Json[] value"""
9 models = [
10 await client.lists.create({}),
11 await client.lists.create(
12 data={
13 'json_objects': [Json('foo'), Json(['foo', 'bar'])],
14 },
15 ),
16 ]
18 model = await client.lists.update(
19 where={
20 'id': models[1].id,
21 },
22 data={
23 'json_objects': {
24 'set': [Json.keys(hello=123)],
25 },
26 },
27 )
28 assert model is not None
29 assert model.json_objects == [{'hello': 123}]
31 model = await client.lists.update(
32 where={
33 'id': models[1].id,
34 },
35 data={
36 'json_objects': [Json.keys(world=None)],
37 },
38 )
39 assert model is not None
40 assert model.json_objects == [{'world': None}]
43@pytest.mark.asyncio
44async def test_filtering_json(client: Prisma) -> None:
45 """Searching for records by a Json[] value"""
46 expected_raw: list[object] = [[], {'country': 'Scotland'}]
47 expected_objects = [Json([]), Json.keys(country='Scotland')]
49 async with client.batch_() as batcher:
50 batcher.lists.create({})
51 batcher.lists.create(
52 data={
53 'json_objects': [],
54 },
55 )
56 batcher.lists.create(
57 data={
58 'json_objects': expected_objects,
59 },
60 )
62 model = await client.lists.find_first(
63 where={
64 'json_objects': {
65 'equals': None,
66 },
67 },
68 )
69 assert model is not None
70 assert model.json_objects == []
72 model = await client.lists.find_first(
73 where={
74 'json_objects': {
75 'equals': expected_objects,
76 },
77 },
78 )
79 assert model is not None
80 assert model.json_objects == expected_raw
82 model = await client.lists.find_first(
83 where={
84 'json_objects': {
85 'has': Json([]),
86 },
87 },
88 )
89 assert model is not None
90 assert model.json_objects == expected_raw
92 model = await client.lists.find_first(
93 where={
94 'json_objects': {
95 'has': Json(['foo']),
96 },
97 },
98 )
99 assert model is None
101 model = await client.lists.find_first(
102 where={
103 'json_objects': {
104 'has_some': [*expected_objects, Json(['foo'])],
105 },
106 },
107 )
108 assert model is not None
109 assert model.json_objects == expected_raw
111 model = await client.lists.find_first(
112 where={
113 'json_objects': {
114 'has_every': [*expected_objects, Json(['foo'])],
115 },
116 },
117 )
118 assert model is None
120 model = await client.lists.find_first(
121 where={
122 'json_objects': {
123 'has_every': [*expected_objects[:2]],
124 },
125 },
126 )
127 assert model is not None
128 assert model.json_objects == expected_raw
130 count = await client.lists.count(
131 where={
132 'json_objects': {
133 'is_empty': True,
134 },
135 },
136 )
137 assert count == 1