Skip to content

Commit 065b481

Browse files
authored
Merge pull request #644 from utopia-php/dat-588
Refactor DocumentTests to improve test coverage and structure
2 parents 0e9b85b + 6a79949 commit 065b481

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

src/Database/Database.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4103,8 +4103,8 @@ public function updateDocument(string $collection, string $id, Document $documen
41034103
}
41044104

41054105
$collection = $this->silent(fn () => $this->getCollection($collection));
4106-
4107-
$document = $this->withTransaction(function () use ($collection, $id, $document) {
4106+
$newUpdatedAt = $document->getUpdatedAt();
4107+
$document = $this->withTransaction(function () use ($collection, $id, $document, $newUpdatedAt) {
41084108
$time = DateTime::now();
41094109
$old = Authorization::skip(fn () => $this->silent(
41104110
fn () => $this->getDocument($collection->getId(), $id, forUpdate: true)
@@ -4253,8 +4253,7 @@ public function updateDocument(string $collection, string $id, Document $documen
42534253
}
42544254

42554255
if ($shouldUpdate) {
4256-
$updatedAt = $document->getUpdatedAt();
4257-
$document->setAttribute('$updatedAt', ($updatedAt === null || !$this->preserveDates) ? $time : $updatedAt);
4256+
$document->setAttribute('$updatedAt', ($newUpdatedAt === null || !$this->preserveDates) ? $time : $newUpdatedAt);
42584257
}
42594258

42604259
// Check if document was updated after the request timestamp

tests/e2e/Adapter/Scopes/DocumentTests.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4837,6 +4837,23 @@ public function testSingleDocumentDateOperations(): void
48374837
$this->assertNotEquals($customDate, $updatedDoc7->getAttribute('$createdAt'));
48384838
$this->assertNotEquals($customDate, $updatedDoc7->getAttribute('$updatedAt'));
48394839

4840+
// Test checking updatedAt updates even old document exists
4841+
$database->setPreserveDates(true);
4842+
$doc11 = $database->createDocument($collection, new Document([
4843+
'$id' => 'doc11',
4844+
'$permissions' => [Permission::read(Role::any()), Permission::write(Role::any()),Permission::update(Role::any())],
4845+
'string' => 'no_dates',
4846+
'$createdAt' => $customDate
4847+
]));
4848+
4849+
$newUpdatedAt = $doc11->getUpdatedAt();
4850+
4851+
$newDoc11 = new Document([
4852+
'string' => 'no_dates_update',
4853+
]);
4854+
$updatedDoc7 = $database->updateDocument($collection, 'doc11', $newDoc11);
4855+
$this->assertNotEquals($newUpdatedAt, $updatedDoc7->getAttribute('$updatedAt'));
4856+
48404857
$database->setPreserveDates(false);
48414858
$database->deleteCollection($collection);
48424859
}

0 commit comments

Comments
 (0)