DeleteTest::testDeleteComplex()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 17
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 12
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 17
rs 9.8666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace QB\MySQL\Statement;
6
7
use QB\Generic\Expr\Expr;
8
use QB\Generic\Statement\DeleteTest as GenericDeleteTest;
9
10
class DeleteTest extends GenericDeleteTest
11
{
12
    public function testDeleteComplex()
13
    {
14
        $sql = (string)$this->getSut('foo')
15
            ->modifier(Delete::LOW_PRIORITY, Delete::QUICK, Delete::IGNORE)
16
            ->where('foo.bar = "foo-bar"', new Expr('bar.foo = ?', ['bar-foo']))
17
            ->orderBy('bar.baz', 'DESC')
18
            ->limit(10);
19
20
        $parts   = [];
21
        $parts[] = 'DELETE LOW_PRIORITY QUICK IGNORE FROM foo';
22
        $parts[] = 'WHERE foo.bar = "foo-bar" AND bar.foo = ?';
23
        $parts[] = 'ORDER BY bar.baz DESC';
24
        $parts[] = 'LIMIT 10';
25
26
        $expectedSql = implode(PHP_EOL, $parts);
27
28
        $this->assertSame($expectedSql, $sql);
29
    }
30
31
    /**
32
     * @param string ...$tables
33
     *
34
     * @return Delete
35
     */
36
    protected function getSut(string ...$tables): Delete
37
    {
38
        return (new Delete())->from(...$tables);
39
    }
40
}
41