|
| 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