Файл: vendor/laravel/framework/src/Illuminate/Testing/TestComponent.php
Строк: 278
<?php
namespace IlluminateTesting;
use IlluminateSupportArr;
use IlluminateSupportTraitsMacroable;
use IlluminateTestingAssert as PHPUnit;
use IlluminateTestingConstraintsSeeInHtml;
use IlluminateTestingConstraintsSeeInOrder;
use Stringable;
class TestComponent implements Stringable
{
use Macroable {
__call as macroCall;
}
/**
* The original component.
*
* @var IlluminateViewComponent
*/
public $component;
/**
* The rendered component contents.
*
* @var string
*/
protected $rendered;
/**
* Create a new test component instance.
*
* @param IlluminateViewComponent $component
* @param IlluminateViewView $view
*/
public function __construct($component, $view)
{
$this->component = $component;
$this->rendered = $view->render();
}
/**
* Assert that the given string or array of strings are contained within the rendered component.
*
* @param string|list<string> $value
* @param bool $escape
* @return $this
*/
public function assertSee($value, $escape = true)
{
$value = Arr::wrap($value);
$values = $escape ? array_map(e(...), $value) : $value;
foreach ($values as $value) {
PHPUnit::assertStringContainsString((string) $value, $this->rendered);
}
return $this;
}
/**
* Assert that the given HTML string or array of HTML strings are contained within the rendered component.
*
* @param string|list<string> $value
* @return $this
*/
public function assertSeeHtml($value)
{
return $this->assertSee($value, false);
}
/**
* Assert that the given strings are contained in order within the rendered component.
*
* @param array $values
* @param bool $escape
* @return $this
*/
public function assertSeeInOrder(array $values, $escape = true)
{
$values = $escape ? array_map(e(...), $values) : $values;
PHPUnit::assertThat($values, new SeeInOrder($this->rendered));
return $this;
}
/**
* Assert that the given HTML strings are contained in order within the rendered component.
*
* @param list<string> $values
* @return $this
*/
public function assertSeeHtmlInOrder(array $values)
{
return $this->assertSeeInOrder($values, false);
}
/**
* Assert that the given string or array of strings are contained within the rendered component text.
*
* @param string|list<string> $value
* @param bool $escape
* @return $this
*/
public function assertSeeText($value, $escape = true)
{
$value = Arr::wrap($value);
$values = $escape ? array_map(e(...), $value) : $value;
PHPUnit::assertThat($values, new SeeInHtml($this->rendered));
return $this;
}
/**
* Assert that the given strings are contained in order within the rendered component text.
*
* @param list<string> $values
* @param bool $escape
* @return $this
*/
public function assertSeeTextInOrder(array $values, $escape = true)
{
$values = $escape ? array_map(e(...), $values) : $values;
PHPUnit::assertThat($values, new SeeInHtml($this->rendered, true));
return $this;
}
/**
* Assert that the given string or array of strings are not contained within the rendered component.
*
* @param string|list<string> $value
* @param bool $escape
* @return $this
*/
public function assertDontSee($value, $escape = true)
{
$value = Arr::wrap($value);
$values = $escape ? array_map(e(...), $value) : $value;
foreach ($values as $value) {
PHPUnit::assertStringNotContainsString((string) $value, $this->rendered);
}
return $this;
}
/**
* Assert that the given HTML string or array of HTML strings are not contained within the rendered component.
*
* @param string|list<string> $value
* @return $this
*/
public function assertDontSeeHtml($value)
{
return $this->assertDontSee($value, false);
}
/**
* Assert that the given string or array of strings are not contained within the rendered component text.
*
* @param string|list<string> $value
* @param bool $escape
* @return $this
*/
public function assertDontSeeText($value, $escape = true)
{
$value = Arr::wrap($value);
$values = $escape ? array_map(e(...), $value) : $value;
$rendered = strip_tags($this->rendered);
foreach ($values as $value) {
PHPUnit::assertStringNotContainsString((string) $value, $rendered);
}
return $this;
}
/**
* Get the string contents of the rendered component.
*
* @return string
*/
public function __toString()
{
return $this->rendered;
}
/**
* Dynamically access properties on the underlying component.
*
* @param string $attribute
* @return mixed
*/
public function __get($attribute)
{
return $this->component->{$attribute};
}
/**
* Dynamically call methods on the underlying component.
*
* @param string $method
* @param array $parameters
* @return mixed
*/
public function __call($method, $parameters)
{
if (static::hasMacro($method)) {
return $this->macroCall($method, $parameters);
}
return $this->component->{$method}(...$parameters);
}
}