Skip to content

Commit d5ee0b8

Browse files
committed
* Fix Code Quality
* Update README.md
1 parent 7f9163e commit d5ee0b8

9 files changed

Lines changed: 112 additions & 74 deletions

File tree

README.md

Lines changed: 54 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -21,98 +21,102 @@ composer require codeception/verify --dev
2121

2222
## Usage
2323

24-
Use in any test `verify` function instead of `$this->assert*` methods:
24+
Use in any test `Verify` function instead of `$this->assert*` methods:
2525

2626
```php
27+
use Codeception\Verify\Verify;
28+
2729
$user = User::find(1);
2830

29-
// equal
30-
verify($user->getName())->equals('davert');
31-
verify("user have 5 posts", $user->getNumPosts())->equals(5);
32-
verify($user->getNumPosts())->notEquals(3);
31+
// equals
32+
Verify($user->getName())->equals('davert');
33+
34+
Verify($user->getNumPosts())
35+
->equals(5, 'user have 5 posts')
36+
->notEquals(3);
3337

3438
// contains
35-
verify('first user is admin', $user->getRoles())->contains('admin');
36-
verify("first user is not banned", $user->getRoles())->notContains('banned');
39+
Verify::Array($user->getRoles())
40+
->contains('admin', 'first user is admin')
41+
->notContains('banned', 'first user is not banned');
3742

38-
// greater / less
39-
$rate = $user->getRate();
40-
verify('first user rate is 7', $rate)->equals(7);
4143

42-
verify($rate)->greaterThan(5);
43-
verify($rate)->lessThan(10);
44-
verify($rate)->lessOrEquals(7);
45-
verify($rate)->greaterOrEquals(5);
44+
// greater / less
45+
Verify($user->getRate())
46+
->greaterThan(5)
47+
->lessThan(10)
48+
->equals(7, 'first user rate is 7');
4649

4750
// true / false / null
48-
verify($user->isAdmin())->true();
49-
verify($user->isBanned())->false();
50-
verify($user->invitedBy)->null();
51-
verify($user->getPosts())->notNull();
51+
Verify($user->isAdmin())->true();
52+
Verify($user->isBanned())->false();
53+
Verify($user->invitedBy)->null();
54+
Verify($user->getPosts())->notNull();
5255

5356
// empty
54-
verify($user->getComments())->isEmpty();
55-
verify($user->getRoles())->notEmpty();
57+
Verify($user->getComments())->empty();
58+
Verify($user->getRoles())->notEmpty();
5659

5760
// throws
58-
verify($callback)->throws();
59-
verify($callback)->throws(Exception::class);
60-
verify($callback)->throws(Exception::class, 'exception message');
61-
verify($callback)->throws(new Exception());
62-
verify($callback)->throws(new Exception('message'));
61+
Verify::Callable($callback)
62+
->throws()
63+
->throws(Exception::class)
64+
->throws(Exception::class, 'exception message')
65+
->throws(new Exception())
66+
->throws(new Exception('message'));
6367

6468
// does not throw
65-
verify($callback)->doesNotThrow();
66-
verify($callback)->throws(Exception::class);
67-
verify($callback)->doesNotThrow(new Exception());
69+
Verify::Callable($callback)
70+
->doesNotThrow()
71+
->throws(Exception::class)
72+
->doesNotThrow(new Exception());
6873

6974
// and many more !
7075
```
7176

72-
> ##### :page_facing_up: See Verifiers full list [here.][7]
73-
74-
Shorthands for testing truth/fallacy:
75-
76-
```php
77-
verify_that($user->isActivated());
78-
verify_not($user->isBanned());
79-
```
80-
81-
These two functions don't check for strict true/false matching, rather `empty` function is used.
82-
`verify_that` checks that result is not empty value, `verify_not` does the opposite.
77+
> :page_facing_up: **See Verifiers full list [here.][7]**
8378
8479
## Alternative Syntax
8580

86-
If you follow TDD/BDD you'd rather use `expect` instead of `verify`. Which are just an alias functions:
81+
If you follow TDD/BDD you'd rather use `Expect` instead of `Verify`. Which are just an alias function:
8782

8883
```php
89-
expect("user have 5 posts", $user->getNumPosts())->equals(5);
90-
expect_that($user->isActive());
91-
expect_not($user->isBanned());
84+
Expect($user->getNumPosts())->equals(5, 'user have 5 posts');
9285
```
9386

9487
## Extending
9588

96-
In order to add more assertions you can override `Codeception\Verify` class:
89+
In order to add more assertions you can extend the abstract class `Verify`:
9790

9891
```php
99-
class MyVerify extends \Codeception\Verify {
92+
use Codeception\Verify\Verify;
93+
use PHPUnit\Framework\Assert;
94+
95+
class MyVerify extends Verify {
96+
97+
//you can type $actual to only receive a specific data type
98+
99+
public function __construct($actual = null)
100+
{
101+
parent::__construct($actual);
102+
}
100103

101-
public function success()
104+
public function success(string $message = '')
102105
{
106+
Assert::assertTrue(true, $message);
103107
}
104108

105109
}
106110
```
107111

108-
Set the class name to `Codeception\Verify::$override` property to `verify` function use it:
112+
And use it!
109113

110114
```php
115+
$myVerify = new MyVerify;
111116

112-
\Codeception\Verify::$override = MyVerify::class;
117+
$myVerify->success('it works!');
113118

114-
// access overridden class
115-
verify('it works')->success();
119+
$myVerify::Mixed('this also')->notEquals('works');
116120
```
117121

118122
## License

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"require": {
1616
"php": "^7.3",
1717
"ext-dom": "*",
18-
"phpunit/phpunit": "^9.0"
18+
"phpunit/phpunit": "^9.3"
1919
},
2020
"autoload": {
2121
"files": [

src/Codeception/Exception/InvalidVerifyException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use InvalidArgumentException;
66

7-
class InvalidVerifyException extends InvalidArgumentException
7+
final class InvalidVerifyException extends InvalidArgumentException
88
{
99
public function __construct($verifyName, $actual)
1010
{

src/Codeception/Verify/Verifiers/VerifyArray.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public function count(int $expectedCount, string $message = ''): self
9595
* @param string $message
9696
* @return self
9797
*/
98-
public function hasKey($key, $message = ''): self
98+
public function hasKey($key, string $message = ''): self
9999
{
100100
Assert::assertArrayHasKey($key, $this->actual, $message);
101101
return $this;

src/Codeception/Verify/Verifiers/VerifyCallable.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public function doesNotThrow($throws = null, $message = false): self
6868
call_user_func($this->actual);
6969
} catch (Throwable $e) {
7070
if (!$throws) {
71-
throw new ExpectationFailedException("exception was not expected to be thrown");
71+
throw new ExpectationFailedException('exception was not expected to be thrown');
7272
}
7373

7474
$actualThrows = get_class($e);
@@ -77,10 +77,11 @@ public function doesNotThrow($throws = null, $message = false): self
7777
if ($throws !== $actualThrows) {
7878
return $this;
7979
}
80-
8180
if (!$message) {
8281
throw new ExpectationFailedException("exception '$throws' was not expected to be thrown");
83-
} elseif ($message === $actualMessage) {
82+
}
83+
84+
if ($message === $actualMessage) {
8485
throw new ExpectationFailedException("exception '$throws' with message '$message' was not expected to be thrown");
8586
}
8687
}

src/Codeception/Verify/Verifiers/VerifyMixed.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public function __construct($actual)
2525
* @param string $message
2626
* @return self
2727
*/
28-
public function empty($message = ''): self
28+
public function empty(string $message = ''): self
2929
{
3030
Assert::assertEmpty($this->actual, $message);
3131
return $this;
@@ -248,7 +248,7 @@ public function isNotArray(string $message = ''): self
248248
* @param string $message
249249
* @return self
250250
*/
251-
public function isNotBool($message = ''): self
251+
public function isNotBool(string $message = ''): self
252252
{
253253
Assert::assertIsNotBool($this->actual, $message);
254254
return $this;
@@ -651,7 +651,7 @@ public function true(string $message = ''): self
651651
* @param string $message
652652
* @return self
653653
*/
654-
public function equals($expected, $message = ''): self
654+
public function equals($expected, string $message = ''): self
655655
{
656656
Assert::assertEquals($expected, $this->actual, $message);
657657
return $this;
@@ -664,7 +664,7 @@ public function equals($expected, $message = ''): self
664664
* @param string $message
665665
* @return self
666666
*/
667-
public function notEquals($expected, $message = ''): self
667+
public function notEquals($expected, string $message = ''): self
668668
{
669669
Assert::assertNotEquals($expected, $this->actual, $message);
670670
return $this;

src/Codeception/Verify/Verify.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
use Codeception\Verify\Verifiers\VerifyFile;
1010
use Codeception\Verify\Verifiers\VerifyJsonFile;
1111
use Codeception\Verify\Verifiers\VerifyJsonString;
12+
use Codeception\Verify\Verifiers\VerifyMixed;
1213
use Codeception\Verify\Verifiers\VerifyObject;
1314
use Codeception\Verify\Verifiers\VerifyString;
1415
use Codeception\Verify\Verifiers\VerifyXmlFile;
@@ -30,6 +31,15 @@ protected function __construct($actual)
3031
$this->actual = $actual;
3132
}
3233

34+
/**
35+
* @param mixed $actual
36+
* @return self
37+
*/
38+
public function __invoke($actual): self
39+
{
40+
return $this($actual);
41+
}
42+
3343
public static function File(string $filename): VerifyFile
3444
{
3545
return new VerifyFile($filename);
@@ -55,7 +65,7 @@ public static function XmlString(string $xml): VerifyXmlString
5565
return new VerifyXmlString($xml);
5666
}
5767

58-
public static function Object(object $object): VerifyObject
68+
public static function BaseObject(object $object): VerifyObject
5969
{
6070
return new VerifyObject($object);
6171
}
@@ -88,4 +98,13 @@ public static function Callable(callable $callable): VerifyCallable
8898
{
8999
return new VerifyCallable($callable);
90100
}
101+
102+
/**
103+
* @param mixed $actual
104+
* @return VerifyMixed
105+
*/
106+
public static function Mixed($actual): VerifyMixed
107+
{
108+
return new VerifyMixed($actual);
109+
}
91110
}

tests/InheritanceTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<?php declare(strict_types=1);
22

3+
include_once __DIR__.'/../src/Codeception/bootstrap.php';
4+
35
use Codeception\Verify\Verify;
6+
use PHPUnit\Framework\Assert;
47
use PHPUnit\Framework\TestCase;
58

69
include __DIR__.'/../vendor/autoload.php';
@@ -9,6 +12,12 @@ final class InheritanceTest extends TestCase
912
{
1013
public function testVerifyCanBeExtended(): void
1114
{
15+
$myVerify = new MyVerify;
16+
17+
$myVerify->success();
18+
19+
$myVerify::Mixed('this also')->notEquals('works');
20+
1221
Verify(new MyVerify())->instanceOf(Verify::class);
1322
}
1423
}
@@ -20,4 +29,9 @@ public function __construct($actual = null)
2029
{
2130
parent::__construct($actual);
2231
}
32+
33+
public function success(string $message = '')
34+
{
35+
Assert::assertTrue(true, $message);
36+
}
2337
}

0 commit comments

Comments
 (0)