Eloquent\Phony\Assertion\AssertionRenderer::renderCalled PHP Method

renderCalled() public method

Render a failed called() verification.
public renderCalled ( Eloquent\Phony\Spy\Spy | Eloquent\Phony\Call\Call $subject, Cardinality $cardinality ) : string
$subject Eloquent\Phony\Spy\Spy | Eloquent\Phony\Call\Call The subject.
$cardinality Eloquent\Phony\Verification\Cardinality The cardinality.
return string The rendered failure message.
    public function renderCalled($subject, Cardinality $cardinality)
    {
        $isCall = $subject instanceof Call;
        if ($isCall) {
            $calls = array($subject);
            $renderedSubject = $this->bold . $this->exporter->exportCallable($subject->callback()) . $this->reset;
        } else {
            $calls = $subject->allCalls();
            $renderedSubject = $this->bold . $this->exporter->exportCallable($subject) . $this->reset;
        }
        $minimum = $cardinality->minimum();
        $maximum = $cardinality->maximum();
        $isNever = null !== $maximum && $maximum < 1;
        if ($isNever) {
            $expected = 'Expected no ' . $renderedSubject . ' call.';
        } else {
            $expected = 'Expected ' . $renderedSubject . ' call with any arguments.';
        }
        $totalCount = count($calls);
        $matchCount = $totalCount;
        if ($totalCount) {
            if ($isNever) {
                $renderedResult = $this->fail;
            } else {
                $renderedResult = $this->pass;
            }
            $renderedCalls = array();
            foreach ($calls as $call) {
                $renderedArguments = array();
                foreach ($call->arguments()->all() as $argument) {
                    $renderedArguments[] = '    ' . $renderedResult . ' ' . $this->exporter->export($argument);
                }
                if (empty($renderedArguments)) {
                    $renderedArgumentList = ' (no arguments)';
                } else {
                    $renderedArgumentList = ':' . PHP_EOL . implode(PHP_EOL, $renderedArguments);
                }
                $renderedCalls[] = $renderedResult . ' Call #' . $call->index() . $renderedArgumentList;
            }
            $actual = PHP_EOL . implode(PHP_EOL, $renderedCalls);
        } else {
            $actual = '';
        }
        $cardinality = $this->renderCardinality($minimum, $maximum, $matchCount, $totalCount, $totalCount, true);
        return $this->reset . $expected . $cardinality . $actual;
    }