Passed
Pull Request — master (#78)
by Damian
01:12
created

PostgreSQLConnectorTest::testSubstitutesPlaceholders()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 40
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 40
rs 8.8571
c 0
b 0
f 0
cc 1
eloc 20
nc 1
nop 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B 0 37 1
1
<?php
2
3
namespace SilverStripe\PostgreSQL\Tests;
4
5
use SilverStripe\Dev\SapphireTest;
6
use SilverStripe\PostgreSQL\PostgreSQLConnector;
7
8
class PostgreSQLConnectorTest extends SapphireTest
9
{
10
    public function testSubstitutesPlaceholders()
11
    {
12
        $connector = new PostgreSQLConnector();
13
14
        // basic case
15
        $this->assertEquals(
16
            "SELECT * FROM Table WHERE ID = $1",
17
            $connector->replacePlaceholders("SELECT * FROM Table WHERE ID = ?")
18
        );
19
20
        // Multiple variables
21
        $this->assertEquals(
22
            "SELECT * FROM Table WHERE ID = $1 AND Name = $2",
23
            $connector->replacePlaceholders("SELECT * FROM Table WHERE ID = ? AND Name = ?")
24
        );
25
26
        // Ignoring question mark placeholders within string literals
27
        $this->assertEquals(
28
            "SELECT * FROM Table WHERE ID = $1 AND Name = $2 AND Content = '<p>What is love?</p>'",
29
            $connector->replacePlaceholders(
30
                "SELECT * FROM Table WHERE ID = ? AND Name = ? AND Content = '<p>What is love?</p>'"
31
            )
32
        );
33
34
        // Ignoring question mark placeholders within string literals with escaped slashes
35
        $this->assertEquals(
36
            "SELECT * FROM Table WHERE ID = $1 AND Title = '\\'' AND Content = '<p>What is love?</p>' AND Name = $2",
37
            $connector->replacePlaceholders(
38
                "SELECT * FROM Table WHERE ID = ? AND Title = '\\'' AND Content = '<p>What is love?</p>' AND Name = ?"
39
            )
40
        );
41
42
        // same as above, but use double single quote escape syntax
43
        $this->assertEquals(
44
            "SELECT * FROM Table WHERE ID = $1 AND Title = '''' AND Content = '<p>What is love?</p>' AND Name = $2",
45
            $connector->replacePlaceholders(
46
                "SELECT * FROM Table WHERE ID = ? AND Title = '''' AND Content = '<p>What is love?</p>' AND Name = ?"
47
            )
48
        );
49
    }
50
}
51