Skip to content

Commit 1a2f226

Browse files
authored
feat: Add where(arrayContains) support (#9167)
1 parent fad4b0c commit 1a2f226

File tree

7 files changed

+226
-3
lines changed

7 files changed

+226
-3
lines changed

packages/cloud_firestore_odm/cloud_firestore_odm/example/lib/movie.g.dart

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/cloud_firestore_odm/cloud_firestore_odm/example/test_driver/collection_reference_test.dart

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -349,6 +349,59 @@ void main() {
349349
);
350350
});
351351

352+
group('arrayContains', () {
353+
test('supports whereFieldPath', () async {
354+
final collection = await initializeTest(MovieCollectionReference());
355+
356+
await collection.add(
357+
createMovie(title: 'A', genre: ['foo', 'unrelated']),
358+
);
359+
await collection.add(
360+
createMovie(title: 'B', genre: ['bar', 'unrelated']),
361+
);
362+
await collection.add(
363+
createMovie(title: 'C', genre: ['bar', 'unrelated']),
364+
);
365+
366+
final querySnap = await collection
367+
.whereFieldPath(
368+
FieldPath.fromString('genre'),
369+
arrayContains: 'bar',
370+
)
371+
.orderByTitle()
372+
.get();
373+
374+
expect(
375+
querySnap.docs.map((e) => e.data.title),
376+
['B', 'C'],
377+
);
378+
});
379+
380+
test('supports whereProperty', () async {
381+
final collection = await initializeTest(MovieCollectionReference());
382+
383+
await collection.add(
384+
createMovie(title: 'A', genre: ['foo', 'unrelated']),
385+
);
386+
await collection.add(
387+
createMovie(title: 'B', genre: ['bar', 'unrelated']),
388+
);
389+
await collection.add(
390+
createMovie(title: 'C', genre: ['bar', 'unrelated']),
391+
);
392+
393+
final querySnap = await collection
394+
.whereGenre(arrayContains: 'bar')
395+
.orderByTitle()
396+
.get();
397+
398+
expect(
399+
querySnap.docs.map((e) => e.data.title),
400+
['B', 'C'],
401+
);
402+
});
403+
});
404+
352405
test('whereFieldPath', () async {
353406
final collection = await initializeTest(MovieCollectionReference());
354407

packages/cloud_firestore_odm/cloud_firestore_odm_generator/cloud_firestore_odm_generator_integration_test/lib/simple.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class Model {
1616
class Nested {
1717
Nested({
1818
required this.value,
19+
required this.simple,
1920
required this.valueList,
2021
required this.boolList,
2122
required this.stringList,
@@ -29,6 +30,7 @@ class Nested {
2930
Map<String, Object?> toJson() => _$NestedToJson(this);
3031

3132
final Nested? value;
33+
final int? simple;
3234
final List<Nested>? valueList;
3335
final List<bool>? boolList;
3436
final List<String>? stringList;

packages/cloud_firestore_odm/cloud_firestore_odm_generator/cloud_firestore_odm_generator_integration_test/lib/simple.g.dart

Lines changed: 115 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)