<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
lucatume / codeception-snapshot-assertions example snippets
class WidgetTest extends Codeception\TestCase\Test
{
use tad\Codeception\SnapshotAssertions\SnapshotAssertions;
public function testDefaultContent(){
$widget = new Widget() ;
$this->assertMatchesHtmlSnapshot($widget->html());
}
public function testOutput(){
$widget = new Widget(['title' => 'Test Widget', 'content' => 'Some test content']) ;
$this->assertMatchesHtmlSnapshot($widget->html());
}
}
use Codeception\Test\Unit;
class WidgetTest extends Unit {
public function testDefaultContent():void {
$widget = new Widget() ;
$this->assertMatchesHtmlSnapshot($widget->html());
}
}
class ErrorMessageTest extends Codeception\TestCase\Test
{
use tad\Codeception\SnapshotAssertions\SnapshotAssertions;
public function testClassAndMethodOutput(){
$errorMessage = new ErrorMessage(__CLASS__, 'foo') ;
$this->assertMatchesStringSnapshot($errorMessage->message());
}
public function testClassOnlyOutput(){
$errorMessage = new ErrorMessage(__CLASS__) ;
$this->assertMatchesStringSnapshot($errorMessage->message());
}
}
class WidgetTest extends Codeception\TestCase\Test
{
use tad\Codeception\SnapshotAssertions\SnapshotAssertions;
public function testDefaultContent(){
$widget = new Widget() ;
$this->assertMatchesHtmlSnapshot($widget->html());
}
public function testOutput(){
$widget = new Widget(['title' => 'Test Widget', 'content' => 'Some test content']) ;
$this->assertMatchesHtmlSnapshot($widget->html());
}
}
class ApiTest extends Codeception\TestCase\Test
{
use tad\Codeception\SnapshotAssertions\SnapshotAssertions;
public function testGoodResponse(){
$this->givenTheUserIsAuthenticated();
$request = new Request([
'me' => [
'name'
]
]);
$api = new API() ;
$this->assertMatchesJsonSnapshot($api->handle($request));
}
public function testMissingAuthResponse(){
$request = new Request([
'me' => [
'name'
]
]);
$api = new API() ;
$this->assertMatchesJsonSnapshot($api->handle($request));
}
}
class ApiTest extends Codeception\TestCase\Test
{
use tad\Codeception\SnapshotAssertions\SnapshotAssertions;
public function testGoodCode(){
$generator = new CodeGenerator();
$code = $generator->produce('phpCode');
$this->assertMatchesCodeSnapshot($code);
}
public function testMissingAuthResponse(){
$generator = new CodeGenerator();
$code = $generator->produce('jsCode');
$this->assertMatchesCodeSnapshot($code);
}
}
class DirectorySetupTest extends Codeception\TestCase\Test
{
use tad\Codeception\SnapshotAssertions\SnapshotAssertions;
public function testGoodDirectorySetUp(){
$generator = new DirectorySetup();
$destination = codecept_output_dir('test');
$generator->setUpDirectory('test', $destination );
$this->assertMatchesDirectorySnapshot($destination);
}
public function testFailingDirectorySetUp(){
$generator = new DirectorySetup();
$destination = codecept_output_dir('failing');
$generator->setUpDirectory('failing', $destination );
$this->assertMatchesDirectorySnapshot($destination);
}
}
public function test_files(){
$dataVisitor = static function ($expected, $current, $pathName) {
if (strpos($pathName, 'fileOne')) {
// Empty file one, like dropping it.
return [[], []];
}
if (strpos($pathName, 'fileTwo')) {
// Remove the hash line in file two.
$removeHashLine = static function ($line) {
return !preg_match('/\\/\\/\\s*\\[HASH].*$/uim', $line);
};
return [
array_filter($expected, $removeHashLine),
array_filter($current, $removeHashLine)
];
}
return [$expected, $current];
};
$dirToTest = codecept_output('dir-to-test');
$snapshot = new DirectorySnapshot($dirToTest);
$snapshot->setDataVisitor($dataVisitor);
$snapshot->assert();
}
public function test_json_object(){
$removeHashEntry = static function ($jsonString) {
// Remove the `hash` key from the JSON object.
return json_encode(array_diff_key(json_decode($jsonString, true), array_flip(['hash'])));
};
$dataVisitor = static function ($expected, $current) use ($removeHashEntry) {
return array_map($removeHashEntry, [$expected, $current]);
};
// This first snapshot will create the first HTML snapshot.
$firstSnapshot = new JsonSnapshot(MyJsonProducingObject::data());
$firstSnapshot->setDataVisitor($dataVisitor);
$firstSnapshot->assert();
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.