parse(); $expected = new ParsedFragment( null, [], [], [], ['', ''] ); $this->assertEquals($expected, $fragment); } public function testCanParseViewWithAssets(): void { $file = realpath(self::TEST_VIEWS_PATH . '/view_with_assets.php'); $parser = new Parser($file); $fragment = $parser->parse(); $expected = new ParsedFragment( null, [ 'test.css' ], [ 'test.js', 'test_' ], [], ['', ''] ); $this->assertEquals($expected, $fragment); } public function testCanParseViewWithExtends(): void { $file = realpath(self::TEST_VIEWS_PATH . '/view_with_extends.php'); $parser = new Parser($file); $fragment = $parser->parse(); $expected = new ParsedFragment( 'parent', [], [], [ 'section1' => '
Test HTML with @extends
' . "\n" ], ['', ''] ); $this->assertEquals($expected, $fragment); } public function testCanParseComplexView(): void { $file = realpath(self::TEST_VIEWS_PATH . '/view_complex.php'); $parser = new Parser($file); $fragment = $parser->parse(); $expected = new ParsedFragment( 'parent', [ 'test1.css' ], [ 'test1.js', 'test2_' ], [ 'section1' => '
Test HTML with @extends - section 1
' . "\n", 'section2' => '
Test HTML with @extends - section 2
' . "\n" ], [ '' . "\n", '' . "\n" . 'EXTRA' . "\n", ] ); $this->assertEquals($expected, $fragment); } public function testFailsIfMultipleExtendsGiven(): void { $file = realpath(self::TEST_VIEWS_PATH . '/view_invalid_multiple_extends.php'); $parser = new Parser($file); $this->expectExceptionMessage('Error in file ' . $file . ' in line 3 - There is already an \'@extends\' declared.'); $parser->parse(); } public function testFailsIfSectionWithoutExtendsGiven(): void { $file = realpath(self::TEST_VIEWS_PATH . '/view_invalid_section_without_extends.php'); $parser = new Parser($file); $this->expectExceptionMessage('Error in file ' . $file . ' in line 1 - \'@section\' has no meaning if view extends nothing.'); $parser->parse(); } public function testFailsIfOpeningSectionBeforePreviousClosed(): void { $file = realpath(self::TEST_VIEWS_PATH . '/view_invalid_multiple_sections_open.php'); $parser = new Parser($file); $this->expectExceptionMessage('Parse error in file ' . $file . ' in line 4 - A \'@section\' is already open (no \'@endsection\' found).'); $parser->parse(); } public function testFailsIfClosingSectionWhenNoSectionIsOpen(): void { $file = realpath(self::TEST_VIEWS_PATH . '/view_invalid_section_not_open.php'); $parser = new Parser($file); $this->expectExceptionMessage('Parse error in file ' . $file . ' in line 4 - Cannot end section until no \'@section\' is open.'); $parser->parse(); } }