1. Go to this page and download the library: Download franiglesias/golden 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/ */
franiglesias / golden example snippets
class ParrotTest extends TestCase
{
use Golden;
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
$this->verify($parrot->getSpeed());
}
}
class ParrotTest extends TestCase
{
use Golden;
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
$this->verify($parrot->getSpeed(), waitApproval());
}
}
class ParrotTest extends TestCase
{
use Golden;
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
$this->verify($parrot->getSpeed());
}
}
class GildedRoseTest extends TestCase
{
use Golden;
public function testFoo(): void
{
$sut = function(...$params): string {
$items = [new Item($params[0], $params[1], $params[2])];
$gildedRose = new GildedRose($items); ;
$gildedRose->updateQuality();
return $items[0]->__toString();
};
$names = [
'foo',
'Aged Brie',
'Sulfuras, Hand of Ragnaros',
'Backstage passes to a TAFKAL80ETC concert',
'Conjured'
];
$sellIns = [
-1,
0,
1,
10,
20,
30
];
$qualities = [
0,
1,
10,
50,
80,
100
];
$this->master($sut, Combinations::of($names, $sellIns, $qualities));
}
}
$this->assertEqual("Expected", output)
$this->verify(subject)
$this->verify(theOutput)
class ParrotTest extends TestCase
{
use Golden;
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
// Verify waiting for approval so the test will always fail
$this->verify($parrot->getSpeed(), waitApproval());
}
}
class ParrotTest extends TestCase
{
use Golden;
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
// Back to standard verification mode
$this->verify($parrot->getSpeed());
}
}
final class GildedRose
{
/**
* @var Item[]
*/
private $items;
public function __construct(array $items)
{
$this->items = $items;
}
public function updateQuality(): void
{
// A bunch of nested conditionals
}
}
public function testFoo(): void
{
// wrapper function that exercise the subject under test and return a result for each combination
$sut = function(...$params): string {
$name = $params[0];
$sellIn = $params[1];
$quality = $params[2];
$items = [new Item($name, $sellIn, $quality)];
$gildedRose = new GildedRose($items);
try {
$gildedRose->updateQuality();
} catch (\Exception $e) {
return $e->getMessage();
}
return $items[0]->__toString();
};
// define lists of values for each parameter
$names = [
'foo',
'Aged Brie',
'Sulfuras, Hand of Ragnaros',
'Backstage passes to a TAFKAL80ETC concert',
'Conjured'
];
$sellIns = [
-1,
0,
1,
10,
20,
30
];
$qualities = [
0,
1,
10,
50,
80,
100
];
// generates all combinations and run the wrapper function for each of them
$this->master($sut, Combinations::of($names, $sellIns, $qualities));
}
class ParrotTest extends TestCase
{
use Golden;
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
$this->verify($parrot->getSpeed(), snapshot("european_snapshot"));
}
}
class ParrotTest extends TestCase
{
use Golden;
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
$this->verify($parrot->getSpeed(), folder("__parrots"));
}
}
class ParrotTest extends TestCase
{
use Golden;
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
$this->verify($parrot->getSpeed(), snapshot("european_snapshot"), folder("__parrots"));
}
}
class ParrotTest extends TestCase
{
use Golden;
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
$this->verify($parrot->getSpeed(), extension('.data'));
}
}
class ParrotTest extends TestCase
{
use Golden;
protected function setUp(): void
{
$this->defaults(folder("__parrots"));
}
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
$this->verify($parrot->getSpeed());
}
}
class ParrotTest extends TestCase
{
use Golden;
protected function setUp(): void
{
$this->defaults(extension(".json"));
}
public function testSpeedOfEuropeanParrot(): void
{
$parrot = $this->getParrot(ParrotTypeEnum::EUROPEAN, 0, 0, false);
$this->verify($parrot->getSpeed());
}
}
abstract class JsonTestCase extends TestCase
{
use Golden;
protected function setUp(): void
{
$this->defaults(extension(".json"));
}
}
final class MyTestCase extends TestCase
{
use Golden;
protected function setUp(): void
{
parent::setUp();
}
}
#[Test]
/** @test */
public function shouldScrubNonDeterministicData(): void
{
$scrubber = new RegexScrubber("/\\d{2}:\\d{2}:\\d{2}.\\d{3}/", "<Current Time>");
$subject = sprintf("Current time is: %s", (new \DateTimeImmutable())->format("H:i:s.v"));
$this->verify($subject, scrubbers($scrubber));
}
$scrubber = new RegexScrubber("/\\d{2}:\\d{2}:\\d{2}.\\d{3}/", "<Current Time>");
class MyTimeScrubber implements Scrubber
{
private RegexScrubber $scrubber;
public function __construct(callable ...$options)
{
$this->scrubber = new RegexScrubber(
"/\\d{2}:\\d{2}:\\d{2}.\\d{3}/",
"<Current Time>",
...$options
);
}
public function clean(string $subject): string
{
return $this->scrubber->clean($subject);
}
public function setContext(string $context)
{
$this->scrubber->setContext($context);
}
public function setReplacement(string $replacement)
{
$this->scrubber->setReplacement($replacement);
}
}
class CreditCardScrubberTest extends TestCase
{
#[Test]
/** @test */
public function shouldObfuscateCreditCard(): void
{
$scrubber = new CreditCard();
$subject = "Credit card: 1234-5678-9012-1234";
assertEquals("Credit card: ****-****-****-1234", $scrubber->clean($subject));
}
}
final class ULIDScrubberTest extends TestCase
{
#[Test]
/** @test */
public function shouldReplaceULID(): void
{
$scrubber = new ULID();
$subject = "This is an ULID: 01HNAZ89E30JHFNJGQ84QFJBP3";
assertEquals("This is an ULID: <ULID>", $scrubber->clean($subject));
}
}
#[Test]
/** @test */
public function shouldReplaceULIDWithCustomReplacement(): void
{
$scrubber = new ULID(replacement("[[Another thing]]"));
$subject = "This is an ULID: 01HNAZ89E30JHFNJGQ84QFJBP3";
assertEquals("This is an ULID: [[Another thing]]", $scrubber->clean($subject));
}
#[Test]
/** @test */
public function shouldReplaceULIDWithAnotherULID(): void
{
$scrubber = new ULID(replacement("01HNB9N6T6DEB1XN10C58DT1WE"));
$subject = "This is an ULID: 01HNAZ89E30JHFNJGQ84QFJBP3";
assertEquals("This is an ULID: 01HNB9N6T6DEB1XN10C58DT1WE", $scrubber->clean($subject));
}
#[Test]
/** @test */
public function shouldObfuscateOnlyFieldCreditCard(): void
{
$scrubber = new CreditCard(format("Credit card: %s"));
$subject = "Credit card: 1234-5678-9012-1234, Another code: 4561-1234-4532-6543";
assertEquals("Credit card: ****-****-****-1234, Another code: 4561-1234-4532-6543", $scrubber->clean($subject));
}
final class NonDeterministicTest extends TestCase
{
#[Test]
/** @test */
public function shouldScrubNonDeterministicData(): void
{
// ...
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.