Passed
Push — master ( f81dba...72d254 )
by Jean Paul
01:45
created

testInsertUsingWrongConnectionParameters()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 13
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 19
rs 9.8333
1
<?php declare( strict_types = 1 );
2
3
namespace Coco\SourceWatcher\Tests\Core\Database\Connections;
4
5
use Coco\SourceWatcher\Core\Database\Connections\MySqlConnector;
6
use Coco\SourceWatcher\Core\Row;
7
use Coco\SourceWatcher\Core\SourceWatcherException;
8
use Coco\SourceWatcher\Utils\i18n;
9
use Doctrine\DBAL\Connection;
10
use PHPUnit\Framework\TestCase;
11
12
/**
13
 * Class MySqlConnectorTest
14
 * @package Coco\SourceWatcher\Tests\Core\Database\Connections
15
 */
16
class MySqlConnectorTest extends TestCase
17
{
18
    /**
19
     *
20
     */
21
    public function testSetGetUnixSocket () : void
22
    {
23
        $connector = new MySqlConnector();
24
25
        $given = "/var/run/mysqld/mysqld.sock";
26
        $expected = "/var/run/mysqld/mysqld.sock";
27
28
        $connector->setUnixSocket( $given );
29
30
        $this->assertEquals( $expected, $connector->getUnixSocket() );
31
    }
32
33
    /**
34
     *
35
     */
36
    public function testSetGetCharset () : void
37
    {
38
        $connector = new MySqlConnector();
39
40
        $given = "utf8";
41
        $expected = "utf8";
42
43
        $connector->setCharset( $given );
44
45
        $this->assertEquals( $expected, $connector->getCharset() );
46
    }
47
48
    /**
49
     * @throws SourceWatcherException
50
     */
51
    public function testGetConnection () : void
52
    {
53
        $connector = new MySqlConnector();
54
        $connector->setUser( "admin" );
55
        $connector->setPassword( "secret" );
56
        $connector->setHost( "localhost" );
57
        $connector->setPort( 3306 );;
58
        $connector->setDbName( "people" );
59
        $connector->setUnixSocket( "/var/run/mysqld/mysqld.sock" );
60
        $connector->setCharset( "utf-8" );
61
62
        $this->assertNotNull( $connector->connect() );
63
    }
64
65
    /**
66
     * @throws SourceWatcherException
67
     */
68
    public function testInsertWithNoTableSpecified () : void
69
    {
70
        $this->expectException( SourceWatcherException::class );
71
        $this->expectExceptionMessage( i18n::getInstance()->getText( MySqlConnector::class, "No_Table_Name_Found" ) );
72
73
        $connector = new MySqlConnector();
74
        $connector->setUser( "admin" );
75
        $connector->setPassword( "secret" );
76
        $connector->setHost( "localhost" );
77
        $connector->setPort( 3306 );;
78
        $connector->setDbName( "people" );
79
        $connector->setUnixSocket( "/var/run/mysqld/mysqld.sock" );
80
        $connector->setCharset( "utf-8" );
81
82
        $row = new Row( [ "id" => "1", "name" => "John Doe", "email_address" => "[email protected]" ] );
83
84
        $connector->insert( $row );
85
    }
86
87
    /**
88
     * @throws SourceWatcherException
89
     */
90
    public function testInsertUsingWrongConnectionParameters () : void
91
    {
92
        $this->expectException( SourceWatcherException::class );
93
        $this->expectExceptionMessage( i18n::getInstance()->getText( MySqlConnector::class, "Connection_Object_Not_Connected_Cannot_Insert" ) );
94
95
        $connector = new MySqlConnector();
96
        $connector->setUser( "admin" );
97
        $connector->setPassword( "secret" );
98
        $connector->setHost( "localhost" );
99
        $connector->setPort( 3306 );;
100
        $connector->setDbName( "people" );
101
        $connector->setUnixSocket( "/var/run/mysqld/mysqld.sock" );
102
        $connector->setCharset( "utf-8" );
103
104
        $connector->setTableName( "people" );
105
106
        $row = new Row( [ "id" => "1", "name" => "John Doe", "email_address" => "[email protected]" ] );
107
108
        $connector->insert( $row );
109
    }
110
111
    /**
112
     * @throws SourceWatcherException
113
     */
114
    public function testInsertWithMockConnection () : void
115
    {
116
        $mockConnection = $this->createMock( Connection::class );
117
        $mockConnection->method( "isConnected" )->willReturn( true );
118
119
        $mockMySqlConnector = $this->createMock( MySqlConnector::class );
120
        $mockMySqlConnector->method( "connect" )->willReturn( $mockConnection );
121
        $mockMySqlConnector->method( "insert" )->willReturn( 1 );
122
123
        $mockMySqlConnector->setTableName( "people" );
124
125
        $row = new Row( [ "id" => "1", "name" => "John Doe", "email_address" => "[email protected]" ] );
126
127
        $expectedNumberOfAffectedRows = 1;
128
129
        $this->assertEquals( $expectedNumberOfAffectedRows, $mockMySqlConnector->insert( $row ) );
130
    }
131
}
132