blob: 641ca565d13354cc74d4253ddf49fb4b104a7c40 [file] [log] [blame] [edit]
// Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// Validating the fix related to
// https://github.com/google/googleapis.dart/issues/211
import 'package:googleapis/firestore/v1.dart';
import 'package:test/test.dart';
import 'package:test_integration/shared.dart';
import 'package:test_integration/test_integration.dart';
void main() {
test('firestore NULL_VALUE', () async {
await withClientFromDefaultCredentials([FirestoreApi.datastoreScope], (
client,
) async {
final firestore = FirestoreApi(client);
final documents = firestore.projects.databases.documents;
final input = Document(
fields: {'places': Value(nullValue: 'NULL_VALUE')},
);
print(prettyJsonEncode(input));
final document = await documents.patch(
input,
'$_documentsPath/googleapis_integration_test/test_document_id',
);
print(prettyJsonEncode(document));
});
});
// google/googleapis.dart#504
test('firestore documents.batchGet', () async {
await withClientFromDefaultCredentials([FirestoreApi.datastoreScope], (
client,
) async {
final firestore = FirestoreApi(client);
final documents = firestore.projects.databases.documents;
final input = Document(
fields: {'places': Value(nullValue: 'NULL_VALUE')},
);
print(prettyJsonEncode(input));
final document = await documents.createDocument(
input,
_documentsPath,
'googleapis_integration_test',
);
print(prettyJsonEncode(document));
final result = await documents.batchGet(
BatchGetDocumentsRequest(documents: [document.name!]),
_databaseId,
);
print(prettyJsonEncode(result));
});
});
// Regression test for https://github.com/google/googleapis.dart/issues/517
test('runAggregationQuery', () async {
final req = RunAggregationQueryRequest(
structuredAggregationQuery: StructuredAggregationQuery(
aggregations: [Aggregation(alias: 'count', count: Count())],
structuredQuery: StructuredQuery(
from: [CollectionSelector(collectionId: 'foo')],
),
),
);
await withClientFromDefaultCredentials([FirestoreApi.datastoreScope], (
client,
) async {
final firestore = FirestoreApi(client);
final documents = firestore.projects.databases.documents;
final res = await documents.runAggregationQuery(req, _documentsPath);
expect(res, isA<List>().having((p0) => p0.length, 'length', 1));
});
});
}
String get _databaseId =>
'projects/${readConfig('project_name')}/databases/(default)';
String get _documentsPath => '$_databaseId/documents';