@@ -2325,16 +2325,19 @@ public function testCreateDocumentsWithDifferentAttributes(): void
23252325 ]),
23262326 ];
23272327
2328- $documents = static::getDatabase()->createDocuments($collection, $documents);
2328+ $results = [];
2329+ $count = static::getDatabase()->createDocuments($collection, $documents, onNext: function ($doc) use (&$results) {
2330+ $results[] = $doc;
2331+ });
23292332
2330- $this->assertEquals(2, count($documents) );
2333+ $this->assertEquals(2, $count );
23312334
2332- $this->assertEquals('text📝', $documents [0]->getAttribute('string'));
2333- $this->assertEquals(5, $documents [0]->getAttribute('integer'));
2334- $this->assertEquals('not_default', $documents [0]->getAttribute('string_default'));
2335- $this->assertEquals('text📝', $documents [1]->getAttribute('string'));
2336- $this->assertNull($documents [1]->getAttribute('integer'));
2337- $this->assertEquals('default', $documents [1]->getAttribute('string_default'));
2335+ $this->assertEquals('text📝', $results [0]->getAttribute('string'));
2336+ $this->assertEquals(5, $results [0]->getAttribute('integer'));
2337+ $this->assertEquals('not_default', $results [0]->getAttribute('string_default'));
2338+ $this->assertEquals('text📝', $results [1]->getAttribute('string'));
2339+ $this->assertNull($results [1]->getAttribute('integer'));
2340+ $this->assertEquals('default', $results [1]->getAttribute('string_default'));
23382341
23392342 /**
23402343 * Expect fail, mix of internalId and no internalId
@@ -2406,11 +2409,14 @@ public function testCreateOrUpdateDocuments(): void
24062409 ]),
24072410 ];
24082411
2409- $documents = static::getDatabase()->createOrUpdateDocuments(__FUNCTION__, $documents);
2412+ $results = [];
2413+ $count = static::getDatabase()->createOrUpdateDocuments(__FUNCTION__, $documents, onNext: function ($doc) use (&$results) {
2414+ $results[] = $doc;
2415+ });
24102416
2411- $this->assertEquals(2, count($documents) );
2417+ $this->assertEquals(2, $count );
24122418
2413- foreach ($documents as $document) {
2419+ foreach ($results as $document) {
24142420 $this->assertNotEmpty(true, $document->getId());
24152421 $this->assertIsString($document->getAttribute('string'));
24162422 $this->assertEquals('text📝', $document->getAttribute('string')); // Also makes sure an emoji is working
@@ -2439,11 +2445,14 @@ public function testCreateOrUpdateDocuments(): void
24392445 $documents[1]->setAttribute('string', 'new text📝');
24402446 $documents[1]->setAttribute('integer', 10);
24412447
2442- $documents = static::getDatabase()->createOrUpdateDocuments(__FUNCTION__, $documents);
2448+ $results = [];
2449+ $count = static::getDatabase()->createOrUpdateDocuments(__FUNCTION__, $documents, onNext: function ($doc) use (&$results) {
2450+ $results[] = $doc;
2451+ });
24432452
2444- $this->assertEquals(2, count($documents) );
2453+ $this->assertEquals(2, $count );
24452454
2446- foreach ($documents as $document) {
2455+ foreach ($results as $document) {
24472456 $this->assertNotEmpty(true, $document->getId());
24482457 $this->assertIsString($document->getAttribute('string'));
24492458 $this->assertEquals('new text📝', $document->getAttribute('string')); // Also makes sure an emoji is working
@@ -2576,13 +2585,17 @@ public function testCreateOrUpdateDocumentsPermissions(): void
25762585
25772586 static::getDatabase()->createOrUpdateDocuments(__FUNCTION__, [$document]);
25782587
2579- $documents = static::getDatabase()->createOrUpdateDocuments(
2588+ $results = [];
2589+ $count = static::getDatabase()->createOrUpdateDocuments(
25802590 __FUNCTION__,
2581- [$document->setAttribute('string', 'updated')]
2591+ [$document->setAttribute('string', 'updated')],
2592+ onNext: function ($doc) use (&$results) {
2593+ $results[] = $doc;
2594+ }
25822595 );
25832596
2584- $this->assertEquals(1, count($documents) );
2585- $this->assertEquals('updated', $documents [0]->getAttribute('string'));
2597+ $this->assertEquals(1, $count );
2598+ $this->assertEquals('updated', $results [0]->getAttribute('string'));
25862599
25872600 $document = new Document([
25882601 '$id' => 'third',
@@ -2602,13 +2615,17 @@ public function testCreateOrUpdateDocumentsPermissions(): void
26022615 Permission::delete(Role::user('user1')),
26032616 ];
26042617
2605- $documents = static::getDatabase()->createOrUpdateDocuments(
2618+ $results = [];
2619+ $count = static::getDatabase()->createOrUpdateDocuments(
26062620 __FUNCTION__,
2607- [$document->setAttribute('$permissions', $newPermissions)]
2621+ [$document->setAttribute('$permissions', $newPermissions)],
2622+ onNext: function ($doc) use (&$results) {
2623+ $results[] = $doc;
2624+ }
26082625 );
26092626
2610- $this->assertEquals(1, count($documents) );
2611- $this->assertEquals($newPermissions, $documents [0]->getPermissions());
2627+ $this->assertEquals(1, $count );
2628+ $this->assertEquals($newPermissions, $results [0]->getPermissions());
26122629
26132630 $document = static::getDatabase()->getDocument(__FUNCTION__, 'third');
26142631
@@ -16783,39 +16800,45 @@ public function testDeleteBulkDocuments(): void
1678316800 */
1678416801 $selects = ['$internalId', '$id', '$collection', '$permissions', '$updatedAt'];
1678516802
16786- $this->assertCount(2, static::getDatabase()->deleteDocuments(
16787- 'bulk_delete',
16788- [
16803+ $count = static::getDatabase()->deleteDocuments(
16804+ collection: 'bulk_delete',
16805+ queries: [
1678916806 Query::select([...$selects, '$createdAt']),
1679016807 Query::cursorAfter($docs[6]),
1679116808 Query::greaterThan('$createdAt', '2000-01-01'),
1679216809 Query::orderAsc('$createdAt'),
1679316810 Query::orderAsc(),
1679416811 Query::limit(2),
1679516812 ],
16796- 1
16797- ));
16813+ batchSize: 1
16814+ );
16815+
16816+ $this->assertEquals(2, $count);
1679816817
1679916818 // TEST: Bulk Delete All Documents
16800- $this->assertCount (8, static::getDatabase()->deleteDocuments('bulk_delete'));
16819+ $this->assertEquals (8, static::getDatabase()->deleteDocuments('bulk_delete'));
1680116820
1680216821 $docs = static::getDatabase()->find('bulk_delete');
1680316822 $this->assertCount(0, $docs);
1680416823
1680516824 // TEST: Bulk delete documents with queries.
1680616825 $this->propagateBulkDocuments('bulk_delete');
1680716826
16808- $modified = static::getDatabase()->deleteDocuments('bulk_delete', [
16827+ $results = [];
16828+ $count = static::getDatabase()->deleteDocuments('bulk_delete', [
1680916829 Query::greaterThanEqual('integer', 5)
16810- ]);
16811- $this->assertCount(5, $modified);
16830+ ], onNext: function ($doc) use (&$results) {
16831+ $results[] = $doc;
16832+ });
16833+
16834+ $this->assertEquals(5, $count);
1681216835
16813- foreach ($modified as $document) {
16836+ foreach ($results as $document) {
1681416837 $this->assertGreaterThanOrEqual(5, $document->getAttribute('integer'));
1681516838 }
1681616839
1681716840 $docs = static::getDatabase()->find('bulk_delete');
16818- $this->assertCount (5, $docs);
16841+ $this->assertEquals (5, $docs);
1681916842
1682016843 // TEST (FAIL): Can't delete documents in the past
1682116844 $oneHourAgo = (new \DateTime())->sub(new \DateInterval('PT1H'));
@@ -16843,30 +16866,32 @@ public function testDeleteBulkDocuments(): void
1684316866 Permission::delete(Role::any())
1684416867 ], false);
1684516868
16846- $this->assertCount (5, static::getDatabase()->deleteDocuments('bulk_delete'));
16847- $this->assertEquals(0, count($this->getDatabase()->find('bulk_delete')));
16869+ $this->assertEquals (5, static::getDatabase()->deleteDocuments('bulk_delete'));
16870+ $this->assertEquals(0, \ count($this->getDatabase()->find('bulk_delete')));
1684816871
1684916872 // TEST: Make sure we can't delete documents we don't have permissions for
1685016873 static::getDatabase()->updateCollection('bulk_delete', [
1685116874 Permission::create(Role::any()),
1685216875 ], true);
1685316876 $this->propagateBulkDocuments('bulk_delete', documentSecurity: true);
1685416877
16855- $this->assertCount (0, static::getDatabase()->deleteDocuments('bulk_delete'));
16878+ $this->assertEquals (0, static::getDatabase()->deleteDocuments('bulk_delete'));
1685616879
1685716880 $documents = Authorization::skip(function () {
1685816881 return static::getDatabase()->find('bulk_delete');
1685916882 });
1686016883
16861- $this->assertCount (10, $documents);
16884+ $this->assertEquals (10, \count( $documents) );
1686216885
1686316886 static::getDatabase()->updateCollection('bulk_delete', [
1686416887 Permission::create(Role::any()),
1686516888 Permission::read(Role::any()),
1686616889 Permission::delete(Role::any())
1686716890 ], false);
16891+
1686816892 static::getDatabase()->deleteDocuments('bulk_delete');
16869- $this->assertEquals(0, count($this->getDatabase()->find('bulk_delete')));
16893+
16894+ $this->assertEquals(0, \count($this->getDatabase()->find('bulk_delete')));
1687016895
1687116896 // Teardown
1687216897 static::getDatabase()->deleteCollection('bulk_delete');
@@ -16906,30 +16931,30 @@ public function testDeleteBulkDocumentsQueries(): void
1690616931 // Test limit
1690716932 $this->propagateBulkDocuments('bulk_delete_queries');
1690816933
16909- $this->assertCount (5, static::getDatabase()->deleteDocuments('bulk_delete_queries', [Query::limit(5)]));
16910- $this->assertCount (5, static::getDatabase()->find('bulk_delete_queries'));
16934+ $this->assertEquals (5, static::getDatabase()->deleteDocuments('bulk_delete_queries', [Query::limit(5)]));
16935+ $this->assertEquals (5, static::getDatabase()->find('bulk_delete_queries'));
1691116936
16912- $this->assertCount (5, static::getDatabase()->deleteDocuments('bulk_delete_queries', [Query::limit(5)]));
16913- $this->assertCount (0, static::getDatabase()->find('bulk_delete_queries'));
16937+ $this->assertEquals (5, static::getDatabase()->deleteDocuments('bulk_delete_queries', [Query::limit(5)]));
16938+ $this->assertEquals (0, static::getDatabase()->find('bulk_delete_queries'));
1691416939
1691516940 // Test Limit more than batchSize
1691616941 $this->propagateBulkDocuments('bulk_delete_queries', Database::DELETE_BATCH_SIZE * 2);
16917- $this->assertCount (Database::DELETE_BATCH_SIZE * 2, static::getDatabase()->find('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE * 2)]));
16918- $this->assertCount (Database::DELETE_BATCH_SIZE + 2, static::getDatabase()->deleteDocuments('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE + 2)]));
16919- $this->assertCount (Database::DELETE_BATCH_SIZE - 2, static::getDatabase()->find('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE * 2)]));
16920- $this->assertCount (Database::DELETE_BATCH_SIZE - 2, $this->getDatabase()->deleteDocuments('bulk_delete_queries'));
16942+ $this->assertEquals (Database::DELETE_BATCH_SIZE * 2, static::getDatabase()->find('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE * 2)]));
16943+ $this->assertEquals (Database::DELETE_BATCH_SIZE + 2, static::getDatabase()->deleteDocuments('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE + 2)]));
16944+ $this->assertEquals (Database::DELETE_BATCH_SIZE - 2, static::getDatabase()->find('bulk_delete_queries', [Query::limit(Database::DELETE_BATCH_SIZE * 2)]));
16945+ $this->assertEquals (Database::DELETE_BATCH_SIZE - 2, $this->getDatabase()->deleteDocuments('bulk_delete_queries'));
1692116946
1692216947 // Test Offset
1692316948 $this->propagateBulkDocuments('bulk_delete_queries', 100);
16924- $this->assertCount (50, static::getDatabase()->deleteDocuments('bulk_delete_queries', [Query::offset(50)]));
16949+ $this->assertEquals (50, static::getDatabase()->deleteDocuments('bulk_delete_queries', [Query::offset(50)]));
1692516950
1692616951 $docs = static::getDatabase()->find('bulk_delete_queries', [Query::limit(100)]);
16927- $this->assertCount (50, $docs);
16952+ $this->assertEquals (50, \count( $docs) );
1692816953
16929- $lastDoc = end($docs);
16954+ $lastDoc = \ end($docs);
1693016955 $this->assertNotEmpty($lastDoc);
1693116956 $this->assertEquals('doc49', $lastDoc->getId());
16932- $this->assertCount (50, static::getDatabase()->deleteDocuments('bulk_delete_queries'));
16957+ $this->assertEquals (50, static::getDatabase()->deleteDocuments('bulk_delete_queries'));
1693316958
1693416959 static::getDatabase()->deleteCollection('bulk_delete_queries');
1693516960 }
@@ -17515,14 +17540,18 @@ public function testUpdateDocuments(): void
1751517540 }
1751617541
1751717542 // Test Update half of the documents
17518- $modified = static::getDatabase()->updateDocuments($collection, new Document([
17543+ $results = [];
17544+ $count = static::getDatabase()->updateDocuments($collection, new Document([
1751917545 'string' => 'text📝 updated',
1752017546 ]), [
1752117547 Query::greaterThanEqual('integer', 5),
17522- ]);
17523- $this->assertCount(5, $modified);
17548+ ], onNext: function($doc) use (&$results) {
17549+ $results[] = $doc;
17550+ });
1752417551
17525- foreach ($modified as $document) {
17552+ $this->assertEquals(5, $count);
17553+
17554+ foreach ($results as $document) {
1752617555 $this->assertEquals('text📝 updated', $document->getAttribute('string'));
1752717556 }
1752817557
@@ -17548,7 +17577,7 @@ public function testUpdateDocuments(): void
1754817577 }
1754917578
1755017579 // Test Update all documents
17551- $this->assertCount (10, static::getDatabase()->updateDocuments($collection, new Document([
17580+ $this->assertEquals (10, static::getDatabase()->updateDocuments($collection, new Document([
1755217581 'string' => 'text📝 updated all',
1755317582 ])));
1755417583
@@ -17565,7 +17594,7 @@ public function testUpdateDocuments(): void
1756517594
1756617595 try {
1756717596 $this->getDatabase()->withRequestTimestamp($oneHourAgo, function () use ($collection) {
17568- return static::getDatabase()->updateDocuments($collection, new Document([
17597+ static::getDatabase()->updateDocuments($collection, new Document([
1756917598 'string' => 'text📝 updated all',
1757017599 ]));
1757117600 });
@@ -17638,7 +17667,7 @@ public function testUpdateDocuments(): void
1763817667 });
1763917668
1764017669 // Test we can update more documents than batchSize
17641- $this->assertCount (10, static::getDatabase()->updateDocuments($collection, new Document([
17670+ $this->assertEquals (10, static::getDatabase()->updateDocuments($collection, new Document([
1764217671 'string' => 'batchSize Test'
1764317672 ]), batchSize: 2));
1764417673
@@ -17684,18 +17713,21 @@ public function testUpdateDocumentsQueries(): void
1768417713 // Test limit
1768517714 $this->propagateBulkDocuments($collection, 100);
1768617715
17687- $this->assertCount (10, static::getDatabase()->updateDocuments($collection, new Document([
17716+ $this->assertEquals (10, static::getDatabase()->updateDocuments($collection, new Document([
1768817717 'text' => 'text📝 updated',
1768917718 ]), [Query::limit(10)]));
17690- $this->assertCount(10, static::getDatabase()->find($collection, [Query::equal('text', ['text📝 updated'])]));
17691- $this->assertCount(100, static::getDatabase()->deleteDocuments($collection));
17692- $this->assertCount(0, static::getDatabase()->find($collection));
17719+
17720+ $this->assertEquals(10, \count(static::getDatabase()->find($collection, [Query::equal('text', ['text📝 updated'])])));
17721+ $this->assertEquals(100, static::getDatabase()->deleteDocuments($collection));
17722+ $this->assertEquals(0, \count(static::getDatabase()->find($collection)));
1769317723
1769417724 // Test Offset
1769517725 $this->propagateBulkDocuments($collection, 100);
17696- $this->assertCount (50, static::getDatabase()->updateDocuments($collection, new Document([
17726+ $this->assertEquals (50, static::getDatabase()->updateDocuments($collection, new Document([
1769717727 'text' => 'text📝 updated',
17698- ]), [Query::offset(50)]));
17728+ ]), [
17729+ Query::offset(50),
17730+ ]));
1769917731
1770017732 $docs = static::getDatabase()->find($collection, [Query::equal('text', ['text📝 updated']), Query::limit(100)]);
1770117733 $this->assertCount(50, $docs);
@@ -17704,7 +17736,7 @@ public function testUpdateDocumentsQueries(): void
1770417736 $this->assertNotEmpty($lastDoc);
1770517737 $this->assertEquals('doc99', $lastDoc->getId());
1770617738
17707- $this->assertCount (100, static::getDatabase()->deleteDocuments($collection));
17739+ $this->assertEquals (100, static::getDatabase()->deleteDocuments($collection));
1770817740 }
1770917741
1771017742 public function testUpdateDocumentsPermissions(): void
@@ -17752,7 +17784,7 @@ public function testUpdateDocumentsPermissions(): void
1775217784 ]));
1775317785 });
1775417786
17755- $affected = static::getDatabase()->updateDocuments($collection, new Document([
17787+ $modified = static::getDatabase()->updateDocuments($collection, new Document([
1775617788 '$permissions' => [
1775717789 Permission::read(Role::user('user2')),
1775817790 Permission::create(Role::user('user2')),
@@ -17765,8 +17797,8 @@ public function testUpdateDocumentsPermissions(): void
1776517797 return static::getDatabase()->find($collection);
1776617798 });
1776717799
17768- $this->assertCount (10, $affected );
17769- $this->assertCount (11, $documents);
17800+ $this->assertEquals (10, $modified );
17801+ $this->assertEquals (11, \count( $documents) );
1777017802
1777117803 $modifiedDocuments = array_filter($documents, function (Document $document) {
1777217804 return $document->getAttribute('$permissions') == [
@@ -17793,7 +17825,7 @@ public function testUpdateDocumentsPermissions(): void
1779317825 Authorization::setRole(Role::user('user2')->toString());
1779417826
1779517827 // Test Bulk permission update with data
17796- $affected = static::getDatabase()->updateDocuments($collection, new Document([
17828+ $modified = static::getDatabase()->updateDocuments($collection, new Document([
1779717829 '$permissions' => [
1779817830 Permission::read(Role::user('user3')),
1779917831 Permission::create(Role::user('user3')),
@@ -17803,7 +17835,7 @@ public function testUpdateDocumentsPermissions(): void
1780317835 'string' => 'text📝 updated',
1780417836 ]));
1780517837
17806- $this->assertCount (10, $affected );
17838+ $this->assertEquals (10, $modified );
1780717839
1780817840 $documents = Authorization::skip(function () use ($collection) {
1780917841 return $this->getDatabase()->find($collection);
0 commit comments