createMock(Environment::class), new EventDispatcher(), $this->createMock(ProjectStatisticService::class), $this->createMock(ActivityStatisticService::class) ); $this->assertEquals('html', $sut->getId()); $this->assertEquals('print', $sut->getTitle()); $this->assertEquals('print', $sut->getIcon()); } public function testRender() { $kernel = self::bootKernel(); /** @var Environment $twig */ $twig = $kernel->getContainer()->get('twig'); $token = $this->createMock(TokenInterface::class); $token->expects($this->any())->method('getUser')->willReturn(new User()); $tokenStorage = new TokenStorage(); $tokenStorage->setToken($token); /** @var AppVariable $app */ $app = $twig->getGlobals()['app']; $twig->addGlobal('app', $app); $app->setTokenStorage($tokenStorage); $stack = $kernel->getContainer()->get('request_stack'); $request = new Request(); $request->setLocale('en'); $stack->push($request); $sut = new HtmlRenderer( $twig, new EventDispatcher(), $this->createMock(ProjectStatisticService::class), $this->createMock(ActivityStatisticService::class) ); $response = $this->render($sut); $content = $response->getContent(); $this->assertStringContainsString('

assertStringContainsString('

Summary

', $content); $this->assertEquals(1, substr_count($content, 'id="export-summary"')); $this->assertEquals(1, substr_count($content, 'id="export-records"')); $this->assertEquals(1, substr_count($content, 'id="summary-project"')); $this->assertEquals(1, substr_count($content, 'id="summary-activity"')); $this->assertStringContainsString('Customer Name', $content); $this->assertStringContainsString('project name', $content); $this->assertStringContainsString('01:56 h', $content); $this->assertStringContainsString('€2,437.12', $content); $this->assertStringContainsString('-€100.92', $content); // 5 times in the "full list" and once in the "summary with activities" $this->assertEquals(7, substr_count($content, 'activity description')); $this->assertEquals(1, substr_count($content, 'activity description')); } }