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

@ -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')
->expect(fn (string $greeting) => $greeting)
->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
it('asserts true is true')->assertTrue(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');
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 () {
expect(true)->toBeTrue(true);
$this->note('This is a runtime 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');
test('multiple notes', function () {

View File

@ -43,3 +43,39 @@ test('multiple times with repeat iterator with multiple dataset', function (stri
->toBeNumeric()
->toBeGreaterThan(0);
})->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;
})
->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 () {
expect(true)->toBeTrue();
})->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);
});
});