Skip to content

Commit 4c090a8

Browse files
authored
PHPLIB-909: Add more error response tests (#1012)
* Require latest driver version * PHPLIB-909: Assert error responses for WriteExceptions
1 parent 9b61868 commit 4c090a8

File tree

4 files changed

+20
-12
lines changed

4 files changed

+20
-12
lines changed

.evergreen/config.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -704,13 +704,15 @@ axes:
704704
display_name: Driver Version
705705
values:
706706
- id: "oldest-supported"
707-
display_name: "PHPC 1.15.0"
707+
display_name: "PHPC 1.16.0"
708708
variables:
709-
EXTENSION_VERSION: "1.15.0"
709+
EXTENSION_BRANCH: "master"
710+
# EXTENSION_VERSION: "1.16.0"
710711
- id: "latest-stable"
711-
display_name: "PHPC (1.15.x)"
712+
display_name: "PHPC (1.16.x)"
712713
variables:
713-
EXTENSION_VERSION: "stable"
714+
EXTENSION_BRANCH: "master"
715+
# EXTENSION_VERSION: "stable"
714716
- id: "latest-dev"
715717
display_name: "PHPC (1.16-dev)"
716718
variables:

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"php": "^7.2 || ^8.0",
1313
"ext-hash": "*",
1414
"ext-json": "*",
15-
"ext-mongodb": "^1.15.0",
15+
"ext-mongodb": "^1.16.0",
1616
"jean85/pretty-package-versions": "^1.2 || ^2.0.1",
1717
"symfony/polyfill-php80": "^1.19"
1818
},

tests/UnifiedSpecTests/ExpectedError.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use MongoDB\Driver\Exception\ExecutionTimeoutException;
88
use MongoDB\Driver\Exception\RuntimeException;
99
use MongoDB\Driver\Exception\ServerException;
10+
use MongoDB\Driver\Exception\WriteException;
1011
use MongoDB\Tests\UnifiedSpecTests\Constraint\Matches;
1112
use PHPUnit\Framework\Assert;
1213
use stdClass;
@@ -15,6 +16,7 @@
1516
use function get_class;
1617
use function PHPUnit\Framework\assertArrayHasKey;
1718
use function PHPUnit\Framework\assertContainsOnly;
19+
use function PHPUnit\Framework\assertCount;
1820
use function PHPUnit\Framework\assertFalse;
1921
use function PHPUnit\Framework\assertInstanceOf;
2022
use function PHPUnit\Framework\assertIsArray;
@@ -30,6 +32,8 @@
3032
use function PHPUnit\Framework\assertStringContainsStringIgnoringCase;
3133
use function PHPUnit\Framework\assertThat;
3234
use function PHPUnit\Framework\assertTrue;
35+
use function PHPUnit\Framework\isInstanceOf;
36+
use function PHPUnit\Framework\logicalOr;
3337
use function property_exists;
3438
use function sprintf;
3539

@@ -166,8 +170,15 @@ public function assert(?Throwable $e = null): void
166170
}
167171

168172
if (isset($this->matchesResultDocument)) {
169-
assertInstanceOf(CommandException::class, $e);
170-
assertThat($e->getResultDocument(), $this->matchesResultDocument, 'CommandException result document matches');
173+
assertThat($e, logicalOr(isInstanceOf(CommandException::class), isInstanceOf(WriteException::class)));
174+
175+
if ($e instanceof CommandException) {
176+
assertThat($e->getResultDocument(), $this->matchesResultDocument, 'CommandException result document matches');
177+
} elseif ($e instanceof WriteException) {
178+
$writeErrors = $e->getWriteResult()->getErrorReplies();
179+
assertCount(1, $writeErrors);
180+
assertThat($writeErrors[0], $this->matchesResultDocument, 'WriteException result document matches');
181+
}
171182
}
172183

173184
if (! empty($this->excludedLabels) || ! empty($this->includedLabels)) {

tests/UnifiedSpecTests/UnifiedSpecTest.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,6 @@ class UnifiedSpecTest extends FunctionalTestCase
6565
'valid-pass/createEntities-operation: createEntities operation' => 'CSOT is not yet implemented (PHPC-1760)',
6666
'valid-pass/entity-cursor-iterateOnce: iterateOnce' => 'CSOT is not yet implemented (PHPC-1760)',
6767
'valid-pass/matches-lte-operator: special lte matching operator' => 'CSOT is not yet implemented (PHPC-1760)',
68-
// BulkWriteException cannot access server response
69-
'crud/bulkWrite-errorResponse: bulkWrite operations support errorResponse assertions' => 'BulkWriteException cannot access server response',
70-
'crud/deleteOne-errorResponse: delete operations support errorResponse assertions' => 'BulkWriteException cannot access server response',
71-
'crud/insertOne-errorResponse: insert operations support errorResponse assertions' => 'BulkWriteException cannot access server response',
72-
'crud/updateOne-errorResponse: update operations support errorResponse assertions' => 'BulkWriteException cannot access server response',
7368
];
7469

7570
/** @var UnifiedTestRunner */

0 commit comments

Comments
 (0)