PHP code example of spatie / tabular-assertions
1. Go to this page and download the library: Download spatie/tabular-assertions library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
spatie / tabular-assertions example snippets
test('it compares a table', function () {
$order = Order::factory()
->addItem('Pen', 2)
->addItem('Paper', 1)
->addItem('Pencil', 5)
->create();
expect($order->items)->toMatchTable('
| #id | #order_id | name | quantity |
| #1 | #1 | Pen | 2 |
| #2 | #1 | Paper | 1 |
| #3 | #1 | Pencil | 5 |
');
});
use PHPUnit\Framework\TestCase;
use Spatie\TabularAssertions\PHPUnit\TabularAssertions;
class PHPUnitTest extends TestCase
{
use TabularAssertions;
public function test_it_contains_users(): void
{
$order = Order::factory()
->addItem('Pen', 2)
->addItem('Paper', 1)
->addItem('Pencil', 5)
->create();
$this->assertMatchesTable('
| #id | #order_id | name | quantity |
| #1 | #1 | Pen | 2 |
| #2 | #1 | Paper | 1 |
| #3 | #1 | Pencil | 5 |
', $order->items);
}
}
expect($items[0]['order_id'])->toBe($order->id);
expect($items[0]['name'])->toBeDate('Pen');
expect($items[0]['quantity'])->toBe(2);
expect($items[1]['order_id'])->toBe($order->id);
expect($items[1]['name'])->toBeDate('Paper');
expect($items[1]['quantity'])->toBe(1);
// …
expect($items[0])->toBe([
'order_id' => $order->id,
'name' => 'Pen',
'quantity' => 2,
]);
expect($items[1])->toBe([
'order_id' => $order->id,
'date' => 'Paper',
'quantity' => 1,
]);
// …
expect($items)->toBe([
[$order->id, 'Pen', 2],
[$order->id, 'Paper', 1],
// …
]);
expect($items)->toMatchTable('
| #id | #order_id | name | quantity |
| #1 | #1 | Pen | 2 |
| #2 | #1 | Paper | 1 |
| #3 | #1 | Pencil | 5 |
');
expect($order->logs)->toLookLike("
| type | reason | #product_id | #tax_id | #shipping_id | #payment_id | price | paid | refunded |
| product | created | #1 | | | | 80_00 | 80_00 | 0_00 |
| tax | created | #1 | #1 | | | 5_00 | 5_00 | 0_00 |
| tax | created | #1 | #2 | | | 10_00 | 10_00 | 0_00 |
| shipping | created | #1 | | #1 | | 5_00 | 5_00 | 0_00 |
| product | paid | #1 | | | #1 | 0_00 | 0_00 | 2_00 |
| tax | paid | #1 | #1 | | #1 | 0_00 | 0_00 | 0_00 |
| tax | paid | #1 | #2 | | #1 | 0_00 | 0_00 | 0_00 |
| shipping | paid | #1 | | #1 | #1 | 0_00 | 0_00 | 0_00 |
");
expect(User::all())->toMatchTable('
| id | name | date_of_birth |
| 1 | Sebastian | 1992-02-01 00:00:00 |
');
expect()->extend('toMatchUsers', function (string $expected) {
$users = $this->value->map(function (User $user) {
return [
'id' => $user->id,
'name' => $user->name,
'date_of_birth' => $user->date_of_birth->format('Y-m-d'),
];
});
expect($users)->toBe($expected);
});
expect(User::all())->toMatchTable('
| id | name | date_of_birth |
| 1 | Sebastian | 1992-02-01 |
');
class UserTest extends TestCase
{
use TabularAssertions;
private function assertMatchesUsers(string $expected, Collection $users): void
{
$users = $users->map(function (User $user) {
return [
'id' => $user->id,
'name' => $user->name,
'date_of_birth' => $user->date_of_birth->format('Y-m-d'),
];
});
$this->assertMatchesTable($expected, $users);
}
}
expect(User::all())->toMatchTable('
| id | name | date_of_birth |
| 1 | Sebastian De Deyne | 1992-02-01 |
');
expect()->extend('toMatchUsers', function (string $expected) {
$users = $this->value->map(function (User $user) {
return [
'id' => $user->id,
'name' => $user->first_name . ' ' . $user->last_name,
'date_of_birth' => $user->date_of_birth->format('Y-m-d'),
];
});
expect($users)->toBe($expected);
});
bash
composer analyse