Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpnamespace Illuminate\Testing;use Closure;use Illuminate\Database\Eloquent\Collection;use Illuminate\Database\Eloquent\Model;use Illuminate\Support\Arr;use Illuminate\Support\Traits\Macroable;use Illuminate\Testing\Assert as PHPUnit;use Illuminate\Testing\Constraints\SeeInOrder;use Illuminate\View\View;class TestView{use Macroable;/*** The original view.** @var \Illuminate\View\View*/protected $view;/*** The rendered view contents.** @var string*/protected $rendered;/*** Create a new test view instance.** @param \Illuminate\View\View $view* @return void*/public function __construct(View $view){$this->view = $view;$this->rendered = $view->render();}/*** Assert that the response view has a given piece of bound data.** @param string|array $key* @param mixed $value* @return $this*/public function assertViewHas($key, $value = null){if (is_array($key)) {return $this->assertViewHasAll($key);}if (is_null($value)) {PHPUnit::assertTrue(Arr::has($this->view->gatherData(), $key));} elseif ($value instanceof Closure) {PHPUnit::assertTrue($value(Arr::get($this->view->gatherData(), $key)));} elseif ($value instanceof Model) {PHPUnit::assertTrue($value->is(Arr::get($this->view->gatherData(), $key)));} elseif ($value instanceof Collection) {$actual = Arr::get($this->view->gatherData(), $key);PHPUnit::assertInstanceOf(Collection::class, $actual);PHPUnit::assertSameSize($value, $actual);$value->each(fn ($item, $index) => PHPUnit::assertTrue($actual->get($index)->is($item)));} else {PHPUnit::assertEquals($value, Arr::get($this->view->gatherData(), $key));}return $this;}/*** Assert that the response view has a given list of bound data.** @param array $bindings* @return $this*/public function assertViewHasAll(array $bindings){foreach ($bindings as $key => $value) {if (is_int($key)) {$this->assertViewHas($value);} else {$this->assertViewHas($key, $value);}}return $this;}/*** Assert that the response view is missing a piece of bound data.** @param string $key* @return $this*/public function assertViewMissing($key){PHPUnit::assertFalse(Arr::has($this->view->gatherData(), $key));return $this;}/*** Assert that the given string is contained within the view.** @param string $value* @param bool $escape* @return $this*/public function assertSee($value, $escape = true){$value = $escape ? e($value) : $value;PHPUnit::assertStringContainsString((string) $value, $this->rendered);return $this;}/*** Assert that the given strings are contained in order within the view.** @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 string is contained within the view text.** @param string $value* @param bool $escape* @return $this*/public function assertSeeText($value, $escape = true){$value = $escape ? e($value) : $value;PHPUnit::assertStringContainsString((string) $value, strip_tags($this->rendered));return $this;}/*** Assert that the given strings are contained in order within the view text.** @param array $values* @param bool $escape* @return $this*/public function assertSeeTextInOrder(array $values, $escape = true){$values = $escape ? array_map('e', $values) : $values;PHPUnit::assertThat($values, new SeeInOrder(strip_tags($this->rendered)));return $this;}/*** Assert that the given string is not contained within the view.** @param string $value* @param bool $escape* @return $this*/public function assertDontSee($value, $escape = true){$value = $escape ? e($value) : $value;PHPUnit::assertStringNotContainsString((string) $value, $this->rendered);return $this;}/*** Assert that the given string is not contained within the view text.** @param string $value* @param bool $escape* @return $this*/public function assertDontSeeText($value, $escape = true){$value = $escape ? e($value) : $value;PHPUnit::assertStringNotContainsString((string) $value, strip_tags($this->rendered));return $this;}/*** Get the string contents of the rendered view.** @return string*/public function __toString(){return $this->rendered;}}