mirror of
https://github.com/pestphp/pest.git
synced 2026-03-06 07:47:22 +01:00
177 lines
5.4 KiB
PHP
177 lines
5.4 KiB
PHP
<?php
|
|
|
|
beforeEach(function () {
|
|
$this->count = 0;
|
|
});
|
|
|
|
afterEach(function () {
|
|
match ($this->name()) {
|
|
'__pest_evaluable_it_can_run_after_test' => expect($this->count)->toBe(1),
|
|
'__pest_evaluable_it_can_run_after_test_twice' => expect($this->count)->toBe(1),
|
|
'__pest_evaluable_it_does_not_run_when_skipped' => expect($this->count)->toBe(0),
|
|
'__pest_evaluable__something__→_it_does_not_run_when_skipped' => expect($this->count)->toBe(0),
|
|
'__pest_evaluable__something__→_it_can_run_after_test' => expect($this->count)->toBe(1),
|
|
'__pest_evaluable__something_2__→_it_can_run_after_test' => expect($this->count)->toBe(1),
|
|
'__pest_evaluable_high_order_test' => expect($this->count)->toBe(1),
|
|
'__pest_evaluable_high_order_test_with_skip' => expect($this->count)->toBe(0),
|
|
'__pest_evaluable_post__foo__→_defer_Closure_Object____→_expect_Closure_Object____→_toBe_1' => expect($this->count)->toBe(1),
|
|
default => $this->fail('Unexpected test name: '.$this->name()),
|
|
};
|
|
|
|
$this->count++;
|
|
});
|
|
|
|
it('can run after test', function () {
|
|
expect($this->count)->toBe(0);
|
|
|
|
$this->count++;
|
|
})->after(function () {
|
|
expect($this->count)->toBe(2);
|
|
|
|
$this->count++;
|
|
});
|
|
|
|
it('can run after test twice', function () {
|
|
expect($this->count)->toBe(0);
|
|
|
|
$this->count++;
|
|
})->after(function () {
|
|
expect($this->count)->toBe(2);
|
|
|
|
$this->count++;
|
|
})->after(function () {
|
|
expect($this->count)->toBe(3);
|
|
|
|
$this->count++;
|
|
});
|
|
|
|
it('does not run when skipped', function () {
|
|
dd('This should not run 1');
|
|
})->skip()->after(function () {
|
|
dd('This should not run 2');
|
|
});
|
|
|
|
afterEach(function () {
|
|
match ($this->name()) {
|
|
'__pest_evaluable_it_can_run_after_test' => expect($this->count)->toBe(3),
|
|
'__pest_evaluable_it_can_run_after_test_twice' => expect($this->count)->toBe(4),
|
|
'__pest_evaluable_it_does_not_run_when_skipped' => expect($this->count)->toBe(1),
|
|
'__pest_evaluable__something__→_it_does_not_run_when_skipped' => expect($this->count)->toBe(1),
|
|
'__pest_evaluable__something__→_it_can_run_after_test' => expect($this->count)->toBe(2),
|
|
'__pest_evaluable__something_2__→_it_can_run_after_test' => expect($this->count)->toBe(2),
|
|
'__pest_evaluable_high_order_test' => expect($this->count)->toBe(2),
|
|
'__pest_evaluable_high_order_test_with_skip' => expect($this->count)->toBe(1),
|
|
'__pest_evaluable_post__foo__→_defer_Closure_Object____→_expect_Closure_Object____→_toBe_1' => expect($this->count)->toBe(2),
|
|
|
|
default => $this->fail('Unexpected test name: '.$this->name()),
|
|
|
|
};
|
|
|
|
$this->count++;
|
|
});
|
|
|
|
afterEach(function () {
|
|
match ($this->name()) {
|
|
'__pest_evaluable_it_can_run_after_test' => expect($this->count)->toBe(4),
|
|
'__pest_evaluable_it_can_run_after_test_twice' => expect($this->count)->toBe(5),
|
|
'__pest_evaluable_it_does_not_run_when_skipped' => expect($this->count)->toBe(2),
|
|
'__pest_evaluable__something__→_it_does_not_run_when_skipped' => expect($this->count)->toBe(2),
|
|
'__pest_evaluable__something__→_it_can_run_after_test' => expect($this->count)->toBe(3),
|
|
'__pest_evaluable__something_2__→_it_can_run_after_test' => expect($this->count)->toBe(3),
|
|
'__pest_evaluable_high_order_test' => expect($this->count)->toBe(3),
|
|
'__pest_evaluable_high_order_test_with_skip' => expect($this->count)->toBe(2),
|
|
'__pest_evaluable_post__foo__→_defer_Closure_Object____→_expect_Closure_Object____→_toBe_1' => expect($this->count)->toBe(3),
|
|
default => $this->fail('Unexpected test name: '.$this->name()),
|
|
};
|
|
|
|
$this->count++;
|
|
});
|
|
|
|
describe('something', function () {
|
|
it('does not run when skipped', function () {
|
|
dd('This should not run 3');
|
|
})->skip()->after(function () {
|
|
dd('This should not run 4');
|
|
});
|
|
|
|
it('can run after test', function () {
|
|
expect($this->count)->toBe(0);
|
|
|
|
$this->count++;
|
|
})->after(function () {
|
|
expect($this->count)->toBe(5);
|
|
|
|
$this->count++;
|
|
})->after(function () {
|
|
expect($this->count)->toBe(6);
|
|
|
|
$this->count++;
|
|
});
|
|
})->after(function () {
|
|
expect($this->count)->toBe(4);
|
|
|
|
$this->count++;
|
|
});
|
|
|
|
describe('something 2', function () {
|
|
it('can run after test', function () {
|
|
expect($this->count)->toBe(0);
|
|
|
|
$this->count++;
|
|
})->after(function () {
|
|
expect($this->count)->toBe(6);
|
|
|
|
$this->count++;
|
|
});
|
|
})->after(function () {
|
|
expect($this->count)->toBe(4);
|
|
|
|
$this->count++;
|
|
})->after(function () {
|
|
expect($this->count)->toBe(5);
|
|
|
|
$this->count++;
|
|
});
|
|
|
|
test('high order test')
|
|
->defer(fn () => $this->count++)
|
|
->expect(fn () => $this->count)->toBe(1)
|
|
->after(function () {
|
|
expect($this->count)->toBe(4);
|
|
|
|
$this->count++;
|
|
});
|
|
|
|
test('high order test with skip')
|
|
->skip()
|
|
->defer(fn () => $this->count++)
|
|
->expect(fn () => $this->count)->toBe(1)
|
|
->after(function () {
|
|
dd('This should not run 5');
|
|
});
|
|
|
|
uses(Postable::class);
|
|
|
|
/**
|
|
* @return TestCase|TestCall|Gettable
|
|
*/
|
|
function post(string $route)
|
|
{
|
|
return test()->post($route);
|
|
}
|
|
|
|
trait Postable
|
|
{
|
|
/**
|
|
* @return TestCase|TestCall|Gettable
|
|
*/
|
|
public function post(string $route)
|
|
{
|
|
expect($route)->not->toBeEmpty();
|
|
|
|
return $this;
|
|
}
|
|
}
|
|
|
|
post('foo')->defer(fn () => $this->count++)->expect(fn () => $this->count)->toBe(1);
|