. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Module; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Carbon; use Fisharebest\Webtrees\Report\ReportHtml; use Fisharebest\Webtrees\Report\ReportParserGenerate; use Fisharebest\Webtrees\Report\ReportParserSetup; use Fisharebest\Webtrees\Report\ReportPdf; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\TestCase; use Fisharebest\Webtrees\Webtrees; use League\Flysystem\Adapter\NullAdapter; use League\Flysystem\Filesystem; /** * Test harness for the class ChangeReportModule * * @covers \Fisharebest\Webtrees\Module\ChangeReportModule * @covers \Fisharebest\Webtrees\Module\ModuleReportTrait * @covers \Fisharebest\Webtrees\Report\AbstractReport * @covers \Fisharebest\Webtrees\Report\ReportBaseCell * @covers \Fisharebest\Webtrees\Report\ReportBaseElement * @covers \Fisharebest\Webtrees\Report\ReportBaseFootnote * @covers \Fisharebest\Webtrees\Report\ReportBaseHtml * @covers \Fisharebest\Webtrees\Report\ReportBaseImage * @covers \Fisharebest\Webtrees\Report\ReportBaseLine * @covers \Fisharebest\Webtrees\Report\ReportBasePageheader * @covers \Fisharebest\Webtrees\Report\ReportBaseText * @covers \Fisharebest\Webtrees\Report\ReportBaseTextbox * @covers \Fisharebest\Webtrees\Report\ReportExpressionLanguageProvider * @covers \Fisharebest\Webtrees\Report\ReportHtml * @covers \Fisharebest\Webtrees\Report\ReportHtmlCell * @covers \Fisharebest\Webtrees\Report\ReportHtmlFootnote * @covers \Fisharebest\Webtrees\Report\ReportHtmlHtml * @covers \Fisharebest\Webtrees\Report\ReportHtmlImage * @covers \Fisharebest\Webtrees\Report\ReportHtmlLine * @covers \Fisharebest\Webtrees\Report\ReportHtmlPageheader * @covers \Fisharebest\Webtrees\Report\ReportHtmlText * @covers \Fisharebest\Webtrees\Report\ReportHtmlTextbox * @covers \Fisharebest\Webtrees\Report\ReportParserBase * @covers \Fisharebest\Webtrees\Report\ReportParserGenerate * @covers \Fisharebest\Webtrees\Report\ReportParserSetup * @covers \Fisharebest\Webtrees\Report\ReportPdf * @covers \Fisharebest\Webtrees\Report\ReportPdfCell * @covers \Fisharebest\Webtrees\Report\ReportPdfFootnote * @covers \Fisharebest\Webtrees\Report\ReportPdfHtml * @covers \Fisharebest\Webtrees\Report\ReportPdfImage * @covers \Fisharebest\Webtrees\Report\ReportPdfLine * @covers \Fisharebest\Webtrees\Report\ReportPdfPageheader * @covers \Fisharebest\Webtrees\Report\ReportPdfText * @covers \Fisharebest\Webtrees\Report\ReportPdfTextbox * @covers \Fisharebest\Webtrees\Report\ReportTcpdf */ class ChangeReportModuleTest extends TestCase { protected static $uses_database = true; /** * @return void */ public function testReportRunsWithoutError(): void { $data_filesystem = new Filesystem(new NullAdapter()); $user = (new UserService())->create('user', 'User', 'user@example.com', 'secret'); $user->setPreference('canadmin', '1'); Auth::login($user); $tree = $this->importTree('demo.ged'); $xml = Webtrees::ROOT_DIR . 'resources/xml/reports/change_report.xml'; $vars = [ 'changeRangeStart' => ['id' => Carbon::now()->subMonths(1)->format('d M Y')], 'changeRangeEnd' => ['id' => Carbon::now()->format('d M Y')], 'pending' => ['id' => 'yes'], 'sortby' => ['id' => 'CHAN'], 'pageSize' => ['id' => 'A4'], 'pageorient' => ['id' => 'landscape'], ]; $report = new ReportParserSetup($xml); $this->assertIsArray($report->reportProperties()); ob_start(); new ReportParserGenerate($xml, new ReportHtml(), $vars, $tree, $data_filesystem); $html = ob_get_clean(); $this->assertStringStartsWith('<', $html); $this->assertStringEndsWith('>', $html); ob_start(); new ReportParserGenerate($xml, new ReportPdf(), $vars, $tree, $data_filesystem); $pdf = ob_get_clean(); $this->assertStringStartsWith('%PDF', $pdf); $this->assertStringEndsWith("%%EOF\n", $pdf); } }