public function testReport() { // Empty report $this->assertEmpty($this->report->gate); $this->assertEmpty($this->report->door); $this->assertFalse($this->report->containsError()); $this->assertSame(0, count($this->report->actions)); // Adds a first action // Our report should be valid. $action = new AMQPAction('method', 'target'); $this->report->addAction($action); $this->assertSame(1, count($this->report->actions)); $this->assertFalse($this->report->containsError()); // Let's attach an exception to a new action. // Our report should then be invalid. $action = new AMQPAction('methodWithException', 'target'); $ex = new \RuntimeException('Lorem ipsum dolor'); $action->attachError(new ActionError($ex)); $this->report->addAction($action); $this->assertSame(2, count($this->report->actions)); $this->assertTrue($this->report->containsError()); // Attaches to gate $this->report->attachToGate('QuuxGate', 'Quuxians'); $this->assertSame('QuuxGate', $this->report->gate); $this->assertSame('Quuxians', $this->report->door); // Test rendering $actualReport = (string) $this->report; $expectedReport = file_get_contents(__DIR__ . '/../data/report.json'); $score = similar_text($expectedReport, $actualReport); $this->assertGreaterThan(550, $score, 'data/report.json and rendered report differ too much. Try $this->assertEquals($expectedReport, $actualReport) to see a diff.'); }
/** * Prepares a report and fires a report event */ protected function report() { $actionToReport = new AMQPAction("publish", $this->target, $this->routingKey); if ($this->exception !== null) { $actionToReport->attachError(new ActionError($this->exception)); } Event::fire(new ReportEvent($actionToReport)); }