Passed
Pull Request — master (#334)
by Antoine
10:44 queued 43s
created

WithStatementTest   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 23
dl 0
loc 32
rs 10
c 2
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A testWith() 0 30 1
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
        $sql = <<<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
        $lexer = new Lexer($sql);
25
26
        $lexerErrors = $this->getErrorsAsArray($lexer);
27
        $this->assertCount(0, $lexerErrors);
28
        $parser = new Parser($lexer->list);
29
        $parserErrors = $this->getErrorsAsArray($parser);
30
        $this->assertCount(0, $parserErrors);
31
        $this->assertCount(2, $parser->statements);
32
33
        // phpcs:disable Generic.Files.LineLength.TooLong
34
        $expected = <<<SQL
35
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)
36
SQL;
37
        // phpcs:enable
38
        $this->assertEquals($expected, $parser->statements[0]->build());
39
40
        $this->assertEquals(<<<SQL
41
SELECT * FROM categories
42
SQL, $parser->statements[1]->build());
43
    }
44
}
45