Compare commits

..

6 Commits

Author SHA1 Message Date
90fb8c602c release: v2.26.0 2023-11-29 09:09:09 +00:00
3974a65a18 Merge pull request #1017 from markhuot/patch-2
[2.x] Add `toSnapshot` early return
2023-11-29 08:50:28 +00:00
2a54b5819d #1017 adds early return toSnapshot test 2023-11-28 20:59:45 -05:00
7177791f1e Merge pull request #1020 from allanmcarvalho/2.x
Update Expectation.php
2023-11-23 17:42:51 +00:00
c743b10a87 Update Expectation.php
Removed @internal phpdoc
2023-11-23 13:15:50 -03:00
da20a62e49 Add toSnapshot() early return
Sometimes objects need native toString() and toArray() methods that are different from what you want to snapshot.

This adds an explicit toSnapshot() method that will be called first (when set) allowing for better snapshot values than the generic methods offer.
2023-11-21 22:56:21 -05:00
9 changed files with 30 additions and 7 deletions

View File

@ -34,8 +34,6 @@ use PHPUnit\Architecture\Elements\ObjectDescription;
use PHPUnit\Framework\ExpectationFailedException;
/**
* @internal
*
* @template TValue
*
* @property OppositeExpectation $not Creates the opposite expectation.

View File

@ -844,6 +844,7 @@ final class Expectation
$string = match (true) {
is_string($this->value) => $this->value,
is_object($this->value) && method_exists($this->value, 'toSnapshot') => $this->value->toSnapshot(),
is_object($this->value) && method_exists($this->value, '__toString') => $this->value->__toString(),
is_object($this->value) && method_exists($this->value, 'toString') => $this->value->toString(),
$this->value instanceof \Illuminate\Testing\TestResponse => $this->value->getContent(), // @phpstan-ignore-line

View File

@ -6,7 +6,7 @@ namespace Pest;
function version(): string
{
return '2.25.0';
return '2.26.0';
}
function testDirectory(string $file = ''): string

View File

@ -0,0 +1,3 @@
{
"key": " <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <h1>Snapshot<\/h1>\n <\/div>\n <\/div>\n <\/div>"
}

View File

@ -1,5 +1,5 @@
Pest Testing Framework 2.25.0.
Pest Testing Framework 2.26.0.
USAGE: pest <file> [options]

View File

@ -1,3 +1,3 @@
Pest Testing Framework 2.25.0.
Pest Testing Framework 2.26.0.

View File

@ -836,6 +836,7 @@
✓ within describe → pass with dataset with ('my-datas-set-value')
✓ pass with toArray
✓ pass with array
✓ pass with toSnapshot
✓ failures
✓ failures with custom message
✓ not failures
@ -1353,4 +1354,4 @@
WARN Tests\Visual\Version
- visual snapshot of help command output
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 963 passed (2281 assertions)
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 19 skipped, 964 passed (2282 assertions)

View File

@ -103,6 +103,26 @@ test('pass with array', function () {
])->toMatchSnapshot();
});
test('pass with `toSnapshot`', function () {
TestSuite::getInstance()->snapshots->save(json_encode(['key' => $this->snapshotable], JSON_PRETTY_PRINT));
$object = new class($this->snapshotable)
{
public function __construct(protected string $snapshotable)
{
}
public function toSnapshot()
{
return json_encode([
'key' => $this->snapshotable,
], JSON_PRETTY_PRINT);
}
};
expect($object)->toMatchSnapshot();
});
test('failures', function () {
TestSuite::getInstance()->snapshots->save($this->snapshotable);

View File

@ -16,7 +16,7 @@ $run = function () {
test('parallel', function () use ($run) {
expect($run('--exclude-group=integration'))
->toContain('Tests: 1 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 15 skipped, 952 passed (2266 assertions)')
->toContain('Tests: 1 deprecated, 4 warnings, 5 incomplete, 2 notices, 13 todos, 15 skipped, 953 passed (2267 assertions)')
->toContain('Parallel: 3 processes');
})->skipOnWindows();