Skip to content

Commit bd917dd

Browse files
test: add query test (box/box-codegen#968) (#1539)
1 parent 9d4542f commit bd917dd

3 files changed

Lines changed: 213 additions & 3 deletions

File tree

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "7146a71", "specHash": "86fcc6c", "version": "10.13.0" }
1+
{ "engineHash": "7b5a612", "specHash": "86fcc6c", "version": "10.13.0" }

docs/query.md

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,19 @@ This operation is performed by calling function `create_query_v2026_r0`.
1414
See the endpoint docs at
1515
[API Reference](https://developer.box.com/reference/v2026.0/post-query/).
1616

17-
_Currently we don't have an example for calling `create_query_v2026_r0` in integration tests_
17+
<!-- sample post_query_v2026.0 -->
18+
19+
```python
20+
client.query.create_query_v2026_r0(
21+
CreateQueryV2026R0Query(
22+
predicate=predicate,
23+
params={"name": "John", "age": 50},
24+
ancestors=[QueryAncestorReferenceV2026R0(id="0", type="folder")],
25+
),
26+
limit=10,
27+
fields=["box:item:name", search_from],
28+
)
29+
```
1830

1931
### Arguments
2032

@@ -51,7 +63,23 @@ This operation is performed by calling function `create_query_insight_v2026_r0`.
5163
See the endpoint docs at
5264
[API Reference](https://developer.box.com/reference/v2026.0/post-query-insights/).
5365

54-
_Currently we don't have an example for calling `create_query_insight_v2026_r0` in integration tests_
66+
<!-- sample post_query_insights_v2026.0 -->
67+
68+
```python
69+
client.query.create_query_insight_v2026_r0(
70+
CreateQueryInsightV2026R0Query(
71+
predicate=predicate,
72+
params={"minAmount": 0},
73+
ancestors=[QueryAncestorReferenceV2026R0(id="0", type="folder")],
74+
group_by=[
75+
QueryInsightsGroupByV2026R0(
76+
field="".join([md_prefix, ".category"]), bucket_limit=5
77+
)
78+
],
79+
),
80+
metrics,
81+
)
82+
```
5583

5684
### Arguments
5785

test/query.py

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
from typing import Dict
2+
3+
from box_sdk_gen.client import BoxClient
4+
5+
from box_sdk_gen.schemas.metadata_template import MetadataTemplate
6+
7+
from box_sdk_gen.managers.metadata_templates import CreateMetadataTemplateFields
8+
9+
from box_sdk_gen.managers.metadata_templates import (
10+
CreateMetadataTemplateFieldsTypeField,
11+
)
12+
13+
from box_sdk_gen.schemas.file_full import FileFull
14+
15+
from box_sdk_gen.schemas.metadata_full import MetadataFull
16+
17+
from box_sdk_gen.managers.file_metadata import CreateFileMetadataByIdScope
18+
19+
from box_sdk_gen.schemas.v2026_r0.query_results_v2026_r0 import QueryResultsV2026R0
20+
21+
from box_sdk_gen.managers.query import CreateQueryV2026R0Query
22+
23+
from box_sdk_gen.schemas.v2026_r0.query_ancestor_reference_v2026_r0 import (
24+
QueryAncestorReferenceV2026R0,
25+
)
26+
27+
from box_sdk_gen.managers.metadata_templates import DeleteMetadataTemplateScope
28+
29+
from box_sdk_gen.managers.metadata_templates import (
30+
CreateMetadataTemplateFieldsOptionsField,
31+
)
32+
33+
from box_sdk_gen.schemas.v2026_r0.query_insights_metric_definition_v2026_r0 import (
34+
QueryInsightsMetricDefinitionV2026R0TypeField,
35+
)
36+
37+
from box_sdk_gen.schemas.v2026_r0.query_insights_v2026_r0 import QueryInsightsV2026R0
38+
39+
from box_sdk_gen.managers.query import CreateQueryInsightV2026R0Query
40+
41+
from box_sdk_gen.schemas.v2026_r0.query_insights_group_by_v2026_r0 import (
42+
QueryInsightsGroupByV2026R0,
43+
)
44+
45+
from box_sdk_gen.internal.utils import get_uuid
46+
47+
from box_sdk_gen.internal.utils import delay_in_seconds
48+
49+
from test.commons import get_default_client
50+
51+
from test.commons import upload_new_file
52+
53+
from box_sdk_gen.schemas.v2026_r0.query_insights_metric_definition_v2026_r0 import (
54+
QueryInsightsMetricDefinitionV2026R0,
55+
)
56+
57+
client: BoxClient = get_default_client()
58+
59+
60+
def testCreateQueryV2026R0():
61+
template_key: str = ''.join(['key', get_uuid()])
62+
template: MetadataTemplate = client.metadata_templates.create_metadata_template(
63+
'enterprise',
64+
template_key,
65+
template_key=template_key,
66+
fields=[
67+
CreateMetadataTemplateFields(
68+
type=CreateMetadataTemplateFieldsTypeField.STRING,
69+
key='name',
70+
display_name='name',
71+
),
72+
CreateMetadataTemplateFields(
73+
type=CreateMetadataTemplateFieldsTypeField.FLOAT,
74+
key='age',
75+
display_name='age',
76+
),
77+
CreateMetadataTemplateFields(
78+
type=CreateMetadataTemplateFieldsTypeField.DATE,
79+
key='birthDate',
80+
display_name='birthDate',
81+
),
82+
],
83+
)
84+
assert template.template_key == template_key
85+
file: FileFull = upload_new_file()
86+
metadata: MetadataFull = client.file_metadata.create_file_metadata_by_id(
87+
file.id,
88+
CreateFileMetadataByIdScope.ENTERPRISE,
89+
template_key,
90+
{'name': 'John', 'age': 23, 'birthDate': '2001-01-03T02:20:50.520Z'},
91+
)
92+
assert metadata.template == template_key
93+
assert metadata.scope == template.scope
94+
delay_in_seconds(10)
95+
search_from: str = ''.join([template.scope, ':', template.template_key])
96+
md_prefix: str = ''.join(
97+
['metadata.', template.scope, '."', template.template_key, '"']
98+
)
99+
predicate: str = ''.join(
100+
[md_prefix, '.name = :name AND ', md_prefix, '.age < :age']
101+
)
102+
query_result: QueryResultsV2026R0 = client.query.create_query_v2026_r0(
103+
CreateQueryV2026R0Query(
104+
predicate=predicate,
105+
params={'name': 'John', 'age': 50},
106+
ancestors=[QueryAncestorReferenceV2026R0(id='0', type='folder')],
107+
),
108+
limit=10,
109+
fields=['box:item:name', search_from],
110+
)
111+
assert len(query_result.entries) >= 0
112+
client.metadata_templates.delete_metadata_template(
113+
DeleteMetadataTemplateScope.ENTERPRISE, template.template_key
114+
)
115+
client.files.delete_file_by_id(file.id)
116+
117+
118+
def testCreateQueryInsightV2026R0():
119+
template_key: str = ''.join(['key', get_uuid()])
120+
template: MetadataTemplate = client.metadata_templates.create_metadata_template(
121+
'enterprise',
122+
template_key,
123+
template_key=template_key,
124+
fields=[
125+
CreateMetadataTemplateFields(
126+
type=CreateMetadataTemplateFieldsTypeField.ENUM,
127+
key='category',
128+
display_name='category',
129+
options=[
130+
CreateMetadataTemplateFieldsOptionsField(key='Sales'),
131+
CreateMetadataTemplateFieldsOptionsField(key='Support'),
132+
],
133+
),
134+
CreateMetadataTemplateFields(
135+
type=CreateMetadataTemplateFieldsTypeField.FLOAT,
136+
key='amount',
137+
display_name='amount',
138+
),
139+
],
140+
)
141+
assert template.template_key == template_key
142+
file: FileFull = upload_new_file()
143+
metadata: MetadataFull = client.file_metadata.create_file_metadata_by_id(
144+
file.id,
145+
CreateFileMetadataByIdScope.ENTERPRISE,
146+
template_key,
147+
{'category': 'Sales', 'amount': 150},
148+
)
149+
assert metadata.template == template_key
150+
delay_in_seconds(5)
151+
md_prefix: str = ''.join(
152+
['metadata.', template.scope, '."', template.template_key, '"']
153+
)
154+
predicate: str = ''.join([md_prefix, '.amount > :minAmount'])
155+
metrics: Dict[str, QueryInsightsMetricDefinitionV2026R0] = {
156+
'totalAmount': QueryInsightsMetricDefinitionV2026R0(
157+
type=QueryInsightsMetricDefinitionV2026R0TypeField.SUM,
158+
field=''.join([md_prefix, '.amount']),
159+
),
160+
'countItems': QueryInsightsMetricDefinitionV2026R0(
161+
type=QueryInsightsMetricDefinitionV2026R0TypeField.COUNT,
162+
field=''.join([md_prefix, '.category']),
163+
),
164+
}
165+
insight_result: QueryInsightsV2026R0 = client.query.create_query_insight_v2026_r0(
166+
CreateQueryInsightV2026R0Query(
167+
predicate=predicate,
168+
params={'minAmount': 0},
169+
ancestors=[QueryAncestorReferenceV2026R0(id='0', type='folder')],
170+
group_by=[
171+
QueryInsightsGroupByV2026R0(
172+
field=''.join([md_prefix, '.category']), bucket_limit=5
173+
)
174+
],
175+
),
176+
metrics,
177+
)
178+
assert len(insight_result.insights) >= 0
179+
client.metadata_templates.delete_metadata_template(
180+
DeleteMetadataTemplateScope.ENTERPRISE, template.template_key
181+
)
182+
client.files.delete_file_by_id(file.id)

0 commit comments

Comments
 (0)