Passed
Pull Request — master (#78)
by Damian
02:06 queued 52s
created

PostgreSQLConnectorTest   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 39
rs 10
c 0
b 0
f 0
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
B testSubstitutesPlaceholders() 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