Passed
Pull Request — master (#334)
by Antoine
10:22
created

WithStatementTest::testWith()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 28
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 20
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 28
rs 9.6
1
<?php
0 ignored issues
show
introduced by
An error occurred during processing; checking has been aborted. The error message was: Undefined index: scope_closer in /home/scrutinizer/build/vendor/slevomat/coding-standard/SlevomatCodingStandard/Helpers/UseStatementHelper.php on line 195
Loading history...
2
3
declare(strict_types=1);
4
5
namespace PhpMyAdmin\SqlParser\Tests\Parser;
6
7
use PhpMyAdmin\SqlParser\Tests\TestCase;
8
use PhpMyAdmin\SqlParser\Lexer;
9
use PhpMyAdmin\SqlParser\Parser;
10
11
class WithStatementTest extends TestCase
12
{
13
    public function testWith()
14
    {
15
        $lexer = new Lexer(<<<SQL
16
WITH categories(identifier, name, parent_id) AS (
17
    SELECT c.identifier, c.name, c.parent_id FROM category c WHERE c.identifier = 'a'
18
    UNION ALL
19
    SELECT c.identifier, c.name, c.parent_id FROM categories, category c WHERE c.identifier = categories.parent_id
20
), foo AS ( SELECT * FROM test )
21
SELECT * FROM categories
22
SQL
23
        );
24
25
        $lexerErrors = $this->getErrorsAsArray($lexer);
26
        $this->assertCount(0, $lexerErrors);
27
        $parser = new Parser($lexer->list);
28
        $parserErrors = $this->getErrorsAsArray($parser);
29
        $this->assertCount(0, $parserErrors);
30
        $this->assertCount(2, $parser->statements);
31
32
        // phpcs:disable Generic.Files.LineLength.TooLong
33
        $this->assertEquals(<<<SQL
34
WITH categories(identifier, name, parent_id) AS (SELECT c.identifier, c.name, c.parent_id FROM category AS `c` WHERE c.identifier = 'a' UNION ALL SELECT c.identifier, c.name, c.parent_id FROM categories, category AS `c` WHERE c.identifier = categories.parent_id), foo AS (SELECT * FROM test)
35
SQL, $parser->statements[0]->build());
36
        // phpcs:enable
37
38
        $this->assertEquals(<<<SQL
39
SELECT * FROM categories
40
SQL, $parser->statements[1]->build());
41
    }
42
}
43