Skip to content

Commit c17ab57

Browse files
authored
sdk change and test (#405)
1 parent 5470ad3 commit c17ab57

File tree

2 files changed

+80
-3
lines changed

2 files changed

+80
-3
lines changed

lib/src/app/data.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ class DataClient {
359359
String methodName,
360360
DateTime? startTime,
361361
DateTime? endTime,
362+
Map<String, dynamic>? additionalParams,
362363
) async {
363364
final interval = CaptureInterval();
364365
if (startTime != null) {
@@ -374,6 +375,9 @@ class DataClient {
374375
..resourceSubtype = resourceSubtype
375376
..methodName = methodName
376377
..interval = interval;
378+
if (additionalParams != null) {
379+
request.additionalParameters = additionalParams.toStruct();
380+
}
377381

378382
return _dataClient
379383
.exportTabularData(request)
@@ -1548,12 +1552,16 @@ class DataClient {
15481552
String resourceName,
15491553
String resourceSubtype,
15501554
String methodName,
1555+
Map<String, dynamic>? additionalParams,
15511556
) async {
15521557
final request = GetLatestTabularDataRequest()
15531558
..partId = partId
15541559
..resourceName = resourceName
15551560
..resourceSubtype = resourceSubtype
15561561
..methodName = methodName;
1562+
if (additionalParams != null) {
1563+
request.additionalParameters = additionalParams.toStruct();
1564+
}
15571565

15581566
final response = await _dataClient.getLatestTabularData(request);
15591567

test/unit_test/app/data_client_test.dart

Lines changed: 72 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ void main() {
268268
),
269269
]));
270270

271-
final response = await dataClient.exportTabularData('partId1', 'resourceName1', 'resourceSubtype1', 'methodName', null, null);
271+
final response = await dataClient.exportTabularData('partId1', 'resourceName1', 'resourceSubtype1', 'methodName', null, null, null);
272272
var index = 0;
273273
for (final point in response) {
274274
expect(point.partId, equals(data[index].partId));
@@ -288,6 +288,75 @@ void main() {
288288
}
289289
});
290290

291+
test('exportTabularData_withAdditionalParams', () async {
292+
final timeCaptured = DateTime.utc(2023, 1, 1);
293+
final Map<String, dynamic> methodParams = {'param1': 'value1', 'param2': 42};
294+
final Map<String, dynamic> payload = {'key': 'value'};
295+
final Map<String, dynamic> additionalParams = {'filter': 'test', 'limit': 100, 'includeMetadata': true};
296+
297+
final data = TabularDataPoint(
298+
partId: 'partId1',
299+
resourceName: 'resourceName1',
300+
resourceSubtype: 'resourceSubtype1',
301+
methodName: 'Readings',
302+
timeCaptured: timeCaptured,
303+
organizationId: 'orgId1',
304+
locationId: 'locationId1',
305+
robotName: 'robot1',
306+
robotId: 'robotId1',
307+
partName: 'part1',
308+
methodParameters: methodParams,
309+
tags: [],
310+
payload: payload,
311+
);
312+
313+
when(serviceClient.exportTabularData(any)).thenAnswer((invocation) {
314+
final request = invocation.positionalArguments[0] as ExportTabularDataRequest;
315+
// Verify that additional parameters are passed correctly
316+
expect(request.additionalParameters, isNotNull);
317+
expect(request.additionalParameters!.fields['filter']!.stringValue, equals('test'));
318+
expect(request.additionalParameters!.fields['limit']!.numberValue, equals(100));
319+
expect(request.additionalParameters!.fields['includeMetadata']!.boolValue, equals(true));
320+
321+
return MockResponseStream.list([
322+
ExportTabularDataResponse(
323+
partId: 'partId1',
324+
resourceName: 'resourceName1',
325+
resourceSubtype: 'resourceSubtype1',
326+
methodName: 'Readings',
327+
timeCaptured: Timestamp.fromDateTime(timeCaptured),
328+
organizationId: 'orgId1',
329+
locationId: 'locationId1',
330+
robotName: 'robot1',
331+
robotId: 'robotId1',
332+
partName: 'part1',
333+
methodParameters: methodParams.toStruct(),
334+
tags: [],
335+
payload: payload.toStruct(),
336+
),
337+
]);
338+
});
339+
340+
final response =
341+
await dataClient.exportTabularData('partId1', 'resourceName1', 'resourceSubtype1', 'methodName', null, null, additionalParams);
342+
343+
expect(response, hasLength(1));
344+
final point = response.first;
345+
expect(point.partId, equals(data.partId));
346+
expect(point.resourceName, equals(data.resourceName));
347+
expect(point.resourceSubtype, equals(data.resourceSubtype));
348+
expect(point.methodName, equals(data.methodName));
349+
expect(point.timeCaptured, equals(data.timeCaptured));
350+
expect(point.organizationId, equals(data.organizationId));
351+
expect(point.locationId, equals(data.locationId));
352+
expect(point.robotName, equals(data.robotName));
353+
expect(point.robotId, equals(data.robotId));
354+
expect(point.partName, equals(data.partName));
355+
expect(point.methodParameters, equals(data.methodParameters));
356+
expect(point.tags, equals(data.tags));
357+
expect(point.payload, equals(data.payload));
358+
});
359+
291360
test('deleteTabularData', () async {
292361
when(serviceClient.deleteTabularData(any))
293362
.thenAnswer((_) => MockResponseFuture.value(DeleteTabularDataResponse()..deletedCount = Int64(12)));
@@ -410,7 +479,7 @@ void main() {
410479
timeSynced: Timestamp.fromDateTime(timeSynced),
411480
payload: payload.toStruct())));
412481

413-
final response = await dataClient.getLatestTabularData('part-id', 'resource-name', 'resource-subtype', 'method-name');
482+
final response = await dataClient.getLatestTabularData('part-id', 'resource-name', 'resource-subtype', 'method-name', null);
414483

415484
expect(response?.timeCaptured, equals(timeCaptured));
416485
expect(response?.timeSynced, equals(timeSynced));
@@ -421,7 +490,7 @@ void main() {
421490
// Test null response
422491
when(serviceClient.getLatestTabularData(any)).thenAnswer((_) => MockResponseFuture.value(GetLatestTabularDataResponse()));
423492

424-
final nullResponse = await dataClient.getLatestTabularData('part-id', 'resource-name', 'resource-subtype', 'method-name');
493+
final nullResponse = await dataClient.getLatestTabularData('part-id', 'resource-name', 'resource-subtype', 'method-name', null);
425494

426495
expect(nullResponse, isNull);
427496
});

0 commit comments

Comments
 (0)