Add more tests

This commit is contained in:
jshayes
2024-10-13 00:41:04 -04:00
parent a6cd83665c
commit 7c639cdbbd
13 changed files with 341 additions and 11 deletions

View File

@ -15,7 +15,7 @@
↓ todo on describe → should not fail ↓ todo on describe → should not fail
↓ todo on describe → should run ↓ todo on describe → should run
TODO Tests\Features\Todo - 7 todos TODO Tests\Features\Todo - 11 todos
↓ something todo later ↓ something todo later
↓ something todo later chained ↓ something todo later chained
↓ something todo later chained and with function body ↓ something todo later chained and with function body
@ -24,6 +24,10 @@
↓ it may have an associated PR #1 ↓ it may have an associated PR #1
↓ it may have an associated note ↓ it may have an associated note
// a note // a note
↓ todo on describe → todo block → nested inside todo block → it should not execute
↓ todo on describe → todo block → it should not execute
↓ todo on beforeEach → todo block → nested inside todo block → it should not execute
↓ todo on beforeEach → todo block → it should not execute
PASS Tests\CustomTestCase\ChildTest PASS Tests\CustomTestCase\ChildTest
✓ override method ✓ override method
@ -34,6 +38,6 @@
PASS Tests\CustomTestCase\ParentTest PASS Tests\CustomTestCase\ParentTest
✓ override method ✓ override method
Tests: 17 todos, 3 passed (3 assertions) Tests: 21 todos, 3 passed (7 assertions)
Duration: x.xxs Duration: x.xxs

View File

@ -15,7 +15,7 @@
↓ todo on describe → should not fail ↓ todo on describe → should not fail
↓ todo on describe → should run ↓ todo on describe → should run
TODO Tests\Features\Todo - 7 todos TODO Tests\Features\Todo - 11 todos
↓ something todo later ↓ something todo later
↓ something todo later chained ↓ something todo later chained
↓ something todo later chained and with function body ↓ something todo later chained and with function body
@ -24,6 +24,10 @@
↓ it may have an associated PR #1 ↓ it may have an associated PR #1
↓ it may have an associated note ↓ it may have an associated note
// a note // a note
↓ todo on describe → todo block → nested inside todo block → it should not execute
↓ todo on describe → todo block → it should not execute
↓ todo on beforeEach → todo block → nested inside todo block → it should not execute
↓ todo on beforeEach → todo block → it should not execute
PASS Tests\CustomTestCase\ChildTest PASS Tests\CustomTestCase\ChildTest
✓ override method ✓ override method
@ -34,6 +38,6 @@
PASS Tests\CustomTestCase\ParentTest PASS Tests\CustomTestCase\ParentTest
✓ override method ✓ override method
Tests: 17 todos, 3 passed (3 assertions) Tests: 21 todos, 3 passed (7 assertions)
Duration: x.xxs Duration: x.xxs

View File

@ -15,7 +15,7 @@
↓ todo on describe → should not fail ↓ todo on describe → should not fail
↓ todo on describe → should run ↓ todo on describe → should run
TODO Tests\Features\Todo - 7 todos TODO Tests\Features\Todo - 11 todos
↓ something todo later ↓ something todo later
↓ something todo later chained ↓ something todo later chained
↓ something todo later chained and with function body ↓ something todo later chained and with function body
@ -24,6 +24,10 @@
↓ it may have an associated PR #1 ↓ it may have an associated PR #1
↓ it may have an associated note ↓ it may have an associated note
// a note // a note
↓ todo on describe → todo block → nested inside todo block → it should not execute
↓ todo on describe → todo block → it should not execute
↓ todo on beforeEach → todo block → nested inside todo block → it should not execute
↓ todo on beforeEach → todo block → it should not execute
PASS Tests\CustomTestCase\ChildTest PASS Tests\CustomTestCase\ChildTest
✓ override method ✓ override method
@ -34,6 +38,6 @@
PASS Tests\CustomTestCase\ParentTest PASS Tests\CustomTestCase\ParentTest
✓ override method ✓ override method
Tests: 17 todos, 3 passed (3 assertions) Tests: 21 todos, 3 passed (7 assertions)
Duration: x.xxs Duration: x.xxs

View File

@ -15,7 +15,7 @@
↓ todo on describe → should not fail ↓ todo on describe → should not fail
↓ todo on describe → should run ↓ todo on describe → should run
TODO Tests\Features\Todo - 7 todos TODO Tests\Features\Todo - 11 todos
↓ something todo later ↓ something todo later
↓ something todo later chained ↓ something todo later chained
↓ something todo later chained and with function body ↓ something todo later chained and with function body
@ -24,6 +24,10 @@
↓ it may have an associated PR #1 ↓ it may have an associated PR #1
↓ it may have an associated note ↓ it may have an associated note
// a note // a note
↓ todo on describe → todo block → nested inside todo block → it should not execute
↓ todo on describe → todo block → it should not execute
↓ todo on beforeEach → todo block → nested inside todo block → it should not execute
↓ todo on beforeEach → todo block → it should not execute
PASS Tests\CustomTestCase\ChildTest PASS Tests\CustomTestCase\ChildTest
✓ override method ✓ override method
@ -34,6 +38,6 @@
PASS Tests\CustomTestCase\ParentTest PASS Tests\CustomTestCase\ParentTest
✓ override method ✓ override method
Tests: 17 todos, 3 passed (3 assertions) Tests: 21 todos, 3 passed (7 assertions)
Duration: x.xxs Duration: x.xxs

View File

@ -43,6 +43,8 @@
✓ it gets executed before each test ✓ it gets executed before each test
✓ it gets executed before each test once again ✓ it gets executed before each test once again
✓ outer → inner → it should call all parent beforeEach functions ✓ outer → inner → it should call all parent beforeEach functions
✓ with expectations → nested block → test
✓ with expectations → test
PASS Tests\Features\BeforeEachProxiesToTestCallWithExpectations PASS Tests\Features\BeforeEachProxiesToTestCallWithExpectations
✓ runs 1 ✓ runs 1
@ -181,6 +183,10 @@
✓ it may be used with high order with dataset "informal" ✓ it may be used with high order with dataset "informal"
✓ it may be used with high order even when bound with dataset "formal" ✓ it may be used with high order even when bound with dataset "formal"
✓ it may be used with high order even when bound with dataset "informal" ✓ it may be used with high order even when bound with dataset "informal"
✓ with on nested describe → nested → before inner describe block with (1)
✓ with on nested describe → nested → describe → it should include the with value from all parent describe blocks with (1) / (2)
✓ with on nested describe → nested → describe → should include the with value from all parent describe blocks and the test with (1) / (2) / (3)
✓ with on nested describe → nested → after inner describe block with (1)
PASS Tests\Features\Depends PASS Tests\Features\Depends
✓ first ✓ first
@ -191,6 +197,12 @@
✓ depends run test only once ✓ depends run test only once
✓ it asserts true is true ✓ it asserts true is true
✓ depends works with the correct test name ✓ depends works with the correct test name
✓ describe block → first in describe
✓ describe block → second in describe
✓ describe block → third in describe
✓ describe block → nested describe → first in nested describe
✓ describe block → nested describe → second in nested describe
✓ describe block → nested describe → third in nested describe
PASS Tests\Features\DependsInheritance PASS Tests\Features\DependsInheritance
✓ it is a test ✓ it is a test
@ -1071,9 +1083,22 @@
✓ nested → it may have static note and runtime note ✓ nested → it may have static note and runtime note
// This is before each static note // This is before each static note
// This is describe static note // This is describe static note
// This is before each describe static note
// This is a static note within describe // This is a static note within describe
// This is before each runtime note // This is before each runtime note
// This is before each describe runtime note
// This is a runtime note within describe // This is a runtime note within describe
✓ nested → describe nested within describe → it may have a static note and runtime note
// This is before each static note
// This is describe static note
// This is before each describe static note
// This is a nested describe static note
// This is before each nested describe static note
// This is a static note within a nested describe
// This is before each runtime note
// This is before each describe runtime note
// This is before each nested describe runtime note
// This is a runtime note within a nested describe
✓ multiple notes ✓ multiple notes
// This is before each static note // This is before each static note
// This is before each runtime note // This is before each runtime note
@ -1203,6 +1228,23 @@
✓ multiple times with repeat iterator with multiple dataset ('c') / ('d') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('c') / ('d') @ repetition 2 of 2
✓ multiple times with repeat iterator with multiple dataset ('c') / ('e') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('c') / ('e') @ repetition 2 of 2
✓ multiple times with repeat iterator with multiple dataset ('c') / ('f') @ repetition 2 of 2 ✓ multiple times with repeat iterator with multiple dataset ('c') / ('f') @ repetition 2 of 2
✓ describe blocks → multiple times @ repetition 1 of 3
✓ describe blocks → multiple times @ repetition 2 of 3
✓ describe blocks → multiple times @ repetition 3 of 3
✓ describe blocks → describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 1 of 3
✓ describe blocks → describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 2 of 3
✓ describe blocks → describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 3 of 3
✓ describe blocks → describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 1 of 2
✓ describe blocks → describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 2 of 2
✓ describe blocks → describe with repeat → nested describe without repeat → test with no repeat should repeat the number of times specified in the parent's parent describe block @ repetition 1 of 3
✓ describe blocks → describe with repeat → nested describe without repeat → test with no repeat should repeat the number of times specified in the parent's parent describe block @ repetition 2 of 3
✓ describe blocks → describe with repeat → nested describe without repeat → test with no repeat should repeat the number of times specified in the parent's parent describe block @ repetition 3 of 3
✓ describe blocks → describe with repeat → nested describe without repeat → test with repeat should repeat the number of times specified in the test @ repetition 1 of 2
✓ describe blocks → describe with repeat → nested describe without repeat → test with repeat should repeat the number of times specified in the test @ repetition 2 of 2
✓ describe blocks → describe with repeat → nested describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 1 of 2
✓ describe blocks → describe with repeat → nested describe with repeat → test with no repeat should repeat the number of times specified in the parent describe block @ repetition 2 of 2
✓ describe blocks → describe with repeat → nested describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 1 of 2
✓ describe blocks → describe with repeat → nested describe with repeat → test with repeat should repeat the number of times specified in the test @ repetition 2 of 2
PASS Tests\Features\ScopedDatasets\Directory\NestedDirectory1\TestFileInNestedDirectoryWithDatasetsFile PASS Tests\Features\ScopedDatasets\Directory\NestedDirectory1\TestFileInNestedDirectoryWithDatasetsFile
✓ uses dataset with (1) ✓ uses dataset with (1)
@ -1259,6 +1301,12 @@
- it skips when skip after assertion - it skips when skip after assertion
- it can use something in the test case as a condition → This test was skipped - it can use something in the test case as a condition → This test was skipped
- it can user higher order callables and skip - it can user higher order callables and skip
- skip on describe → skipped tests → nested inside skipped block → it should not execute
- skip on describe → skipped tests → it should not execute
✓ skip on describe → it should execute
- skip on beforeEach → skipped tests → nested inside skipped block → it should not execute
- skip on beforeEach → skipped tests → it should not execute
✓ skip on beforeEach → it should execute
WARN Tests\Features\SkipOnPhp WARN Tests\Features\SkipOnPhp
✓ it can run on php version ✓ it can run on php version
@ -1279,7 +1327,7 @@
✓ nested → it may be associated with an ticket #1, #4, #5, #6, #3 ✓ nested → it may be associated with an ticket #1, #4, #5, #6, #3
// an note between an the ticket // an note between an the ticket
PASS Tests\Features\Todo - 7 todos PASS Tests\Features\Todo - 11 todos
↓ something todo later ↓ something todo later
↓ something todo later chained ↓ something todo later chained
↓ something todo later chained and with function body ↓ something todo later chained and with function body
@ -1289,6 +1337,12 @@
↓ it may have an associated PR #1 ↓ it may have an associated PR #1
↓ it may have an associated note ↓ it may have an associated note
// a note // a note
↓ todo on describe → todo block → nested inside todo block → it should not execute
↓ todo on describe → todo block → it should not execute
✓ todo on describe → it should execute
↓ todo on beforeEach → todo block → nested inside todo block → it should not execute
↓ todo on beforeEach → todo block → it should not execute
✓ todo on beforeEach → it should execute
WARN Tests\Features\Warnings WARN Tests\Features\Warnings
! warning → Undefined property: P\Tests\Features\Warnings::$fooqwdfwqdfqw ! warning → Undefined property: P\Tests\Features\Warnings::$fooqwdfwqdfqw
@ -1588,4 +1642,4 @@
WARN Tests\Visual\Version WARN Tests\Visual\Version
- visual snapshot of help command output - visual snapshot of help command output
Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 17 todos, 28 skipped, 1099 passed (2656 assertions) Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 21 todos, 32 skipped, 1133 passed (2702 assertions)

View File

@ -41,3 +41,13 @@ describe('outer', function () {
}); });
}); });
}); });
describe('with expectations', function () {
beforeEach()->expect(true)->toBeTrue();
describe('nested block', function () {
test('test', function () {});
});
test('test', function () {});
});

View File

@ -392,3 +392,25 @@ it('may be used with high order even when bound')
->with('greeting-bound') ->with('greeting-bound')
->expect(fn (string $greeting) => $greeting) ->expect(fn (string $greeting) => $greeting)
->throws(InvalidArgumentException::class); ->throws(InvalidArgumentException::class);
describe('with on nested describe', function () {
describe('nested', function () {
test('before inner describe block', function (...$args) {
expect($args)->toBe([1]);
});
describe('describe', function () {
it('should include the with value from all parent describe blocks', function (...$args) {
expect($args)->toBe([1, 2]);
});
test('should include the with value from all parent describe blocks and the test', function (...$args) {
expect($args)->toBe([1, 2, 3]);
})->with([3]);
})->with([2]);
test('after inner describe block', function (...$args) {
expect($args)->toBe([1]);
});
})->with([1]);
});

View File

@ -36,3 +36,39 @@ test('depends run test only once', function () use (&$runCounter) {
// Regression tests. See https://github.com/pestphp/pest/pull/216 // Regression tests. See https://github.com/pestphp/pest/pull/216
it('asserts true is true')->assertTrue(true); it('asserts true is true')->assertTrue(true);
test('depends works with the correct test name')->assertTrue(true)->depends('it asserts true is true'); test('depends works with the correct test name')->assertTrue(true)->depends('it asserts true is true');
describe('describe block', function () {
$runCounter = 0;
test('first in describe', function () use (&$runCounter) {
$runCounter++;
expect(true)->toBeTrue();
});
test('second in describe', function () use (&$runCounter) {
expect($runCounter)->toBe(1);
$runCounter++;
})->depends('first in describe');
test('third in describe', function () use (&$runCounter) {
expect($runCounter)->toBe(2);
})->depends('second in describe');
describe('nested describe', function () {
$runCounter = 0;
test('first in nested describe', function () use (&$runCounter) {
$runCounter++;
expect(true)->toBeTrue();
});
test('second in nested describe', function () use (&$runCounter) {
expect($runCounter)->toBe(1);
$runCounter++;
})->depends('first in nested describe');
test('third in nested describe', function () use (&$runCounter) {
expect($runCounter)->toBe(2);
})->depends('second in nested describe');
});
});

View File

@ -21,11 +21,27 @@ it('may have static note and runtime note', function () {
})->note('This is a static note'); })->note('This is a static note');
describe('nested', function () { describe('nested', function () {
beforeEach(function () {
$this->note('This is before each describe runtime note');
})->note('This is before each describe static note');
it('may have static note and runtime note', function () { it('may have static note and runtime note', function () {
expect(true)->toBeTrue(true); expect(true)->toBeTrue(true);
$this->note('This is a runtime note within describe'); $this->note('This is a runtime note within describe');
})->note('This is a static note within describe'); })->note('This is a static note within describe');
describe('describe nested within describe', function () {
beforeEach(function () {
$this->note('This is before each nested describe runtime note');
})->note('This is before each nested describe static note');
it('may have a static note and runtime note', function () {
expect(true)->toBeTrue(true);
$this->note('This is a runtime note within a nested describe');
})->note('This is a static note within a nested describe');
})->note('This is a nested describe static note');
})->note('This is describe static note'); })->note('This is describe static note');
test('multiple notes', function () { test('multiple notes', function () {

View File

@ -43,3 +43,39 @@ test('multiple times with repeat iterator with multiple dataset', function (stri
->toBeNumeric() ->toBeNumeric()
->toBeGreaterThan(0); ->toBeGreaterThan(0);
})->repeat(times: 2)->with(['a', 'b', 'c'], ['d', 'e', 'f']); })->repeat(times: 2)->with(['a', 'b', 'c'], ['d', 'e', 'f']);
describe('describe blocks', function () {
test('multiple times', function () {
expect(true)->toBeTrue();
})->repeat(times: 3);
describe('describe with repeat', function () {
test('test with no repeat should repeat the number of times specified in the parent describe block', function () {
expect(true)->toBeTrue();
});
test('test with repeat should repeat the number of times specified in the test', function () {
expect(true)->toBeTrue();
})->repeat(times: 2);
describe('nested describe without repeat', function () {
test("test with no repeat should repeat the number of times specified in the parent's parent describe block", function () {
expect(true)->toBeTrue();
});
test('test with repeat should repeat the number of times specified in the test', function () {
expect(true)->toBeTrue();
})->repeat(times: 2);
});
describe('nested describe with repeat', function () {
test('test with no repeat should repeat the number of times specified in the parent describe block', function () {
expect(true)->toBeTrue();
});
test('test with repeat should repeat the number of times specified in the test', function () {
expect(true)->toBeTrue();
})->repeat(times: 2);
})->repeat(times: 2);
})->repeat(times: 3);
});

View File

@ -54,3 +54,73 @@ it('can user higher order callables and skip')
return $this->shouldSkip; return $this->shouldSkip;
}) })
->toBeFalse(); ->toBeFalse();
describe('skip on describe', function () {
beforeEach(function () {
$this->ran = false;
});
afterEach(function () {
match ($this->name()) {
'__pest_evaluable__skip_on_describe__→__skipped_tests__→__nested_inside_skipped_block__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__skip_on_describe__→__skipped_tests__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__skip_on_describe__→_it_should_execute' => expect($this->ran)->toBe(true),
default => $this->fail('Unexpected test name: '.$this->name()),
};
});
describe('skipped tests', function () {
describe('nested inside skipped block', function () {
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
});
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
})->skip();
it('should execute', function () {
$this->ran = true;
expect($this->ran)->toBe(true);
});
});
describe('skip on beforeEach', function () {
beforeEach(function () {
$this->ran = false;
});
afterEach(function () {
match ($this->name()) {
'__pest_evaluable__skip_on_beforeEach__→__skipped_tests__→__nested_inside_skipped_block__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__skip_on_beforeEach__→__skipped_tests__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__skip_on_beforeEach__→_it_should_execute' => expect($this->ran)->toBe(true),
default => $this->fail('Unexpected test name: '.$this->name()),
};
});
describe('skipped tests', function () {
beforeEach()->skip();
describe('nested inside skipped block', function () {
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
});
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
});
it('should execute', function () {
$this->ran = true;
expect($this->ran)->toBe(true);
});
});

View File

@ -27,3 +27,73 @@ it('may have an associated PR', function () {
it('may have an associated note', function () { it('may have an associated note', function () {
expect(true)->toBeTrue(); expect(true)->toBeTrue();
})->todo(note: 'a note'); })->todo(note: 'a note');
describe('todo on describe', function () {
beforeEach(function () {
$this->ran = false;
});
afterEach(function () {
match ($this->name()) {
'__pest_evaluable__todo_on_describe__→__todo_block__→__nested_inside_todo_block__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__todo_on_describe__→__todo_block__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__todo_on_describe__→_it_should_execute' => expect($this->ran)->toBe(true),
default => $this->fail('Unexpected test name: '.$this->name()),
};
});
describe('todo block', function () {
describe('nested inside todo block', function () {
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
});
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
})->todo();
it('should execute', function () {
$this->ran = true;
expect($this->ran)->toBe(true);
});
});
describe('todo on beforeEach', function () {
beforeEach(function () {
$this->ran = false;
});
afterEach(function () {
match ($this->name()) {
'__pest_evaluable__todo_on_beforeEach__→__todo_block__→__nested_inside_todo_block__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__todo_on_beforeEach__→__todo_block__→_it_should_not_execute' => expect($this->ran)->toBe(false),
'__pest_evaluable__todo_on_beforeEach__→_it_should_execute' => expect($this->ran)->toBe(true),
default => $this->fail('Unexpected test name: '.$this->name()),
};
});
describe('todo block', function () {
beforeEach()->todo();
describe('nested inside todo block', function () {
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
});
it('should not execute', function () {
$this->ran = true;
$this->fail();
});
});
it('should execute', function () {
$this->ran = true;
expect($this->ran)->toBe(true);
});
});

View File

@ -16,7 +16,7 @@ $run = function () {
test('parallel', function () use ($run) { test('parallel', function () use ($run) {
expect($run('--exclude-group=integration')) expect($run('--exclude-group=integration'))
->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 17 todos, 19 skipped, 1089 passed (2632 assertions)') ->toContain('Tests: 2 deprecated, 4 warnings, 5 incomplete, 2 notices, 21 todos, 23 skipped, 1123 passed (2678 assertions)')
->toContain('Parallel: 3 processes'); ->toContain('Parallel: 3 processes');
})->skipOnWindows(); })->skipOnWindows();