Completed
Push — master ( 3234c3...f53135 )
by CodexShaper
05:54 queued 03:49
created

MySqlTest   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 101
Duplicated Lines 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 61
c 3
b 0
f 0
dl 0
loc 101
rs 10
wmc 8
1
<?php
2
3
namespace CodexShaper\Dumper\Test;
4
5
use CodexShaper\Dumper\Drivers\MysqlDumper;
6
use PHPUnit\Framework\TestCase;
7
8
class MySqlTest extends TestCase
9
{
10
    /** @test */
11
    public function it_provides_a_factory_method()
12
    {
13
        $this->assertInstanceOf(MysqlDumper::class, MysqlDumper::create());
14
    }
15
16
    /** @test */
17
    public function it_can_generate_a_dump_command()
18
    {
19
        $dumper = MysqlDumper::create()
20
            ->setDbName('dbname')
21
            ->setUserName('username')
22
            ->setPassword('password')
23
            ->dump('dump.sql');
24
        $tempFile = $dumper->getTempFile();
25
        $command  = $dumper->getCommand();
26
        $this->assertSame('mysqldump --defaults-extra-file=' . $tempFile . ' dbname --skip-comments > dump.sql', $command);
27
    }
28
29
    /** @test */
30
    public function it_can_generate_a_dump_command_with_compression_enabled()
31
    {
32
        $dumper = MysqlDumper::create()
33
            ->setDbName('dbname')
34
            ->setUserName('username')
35
            ->setPassword('password')
36
            ->useCompress()
37
            ->dump('dump.sql');
38
        $command  = $dumper->getCommand();
39
        $tempFile = $dumper->getTempFile();
40
        $this->assertSame('mysqldump --defaults-extra-file=' . $tempFile . ' dbname --skip-comments | gzip > dump.sql.gz', $command);
41
    }
42
43
    /** @test */
44
    public function it_can_generate_a_dump_command_with_absolute_path()
45
    {
46
        $dumper = MysqlDumper::create()
47
            ->setDbName('dbname')
48
            ->setUserName('username')
49
            ->setPassword('password')
50
            ->dump('/path/to/directory/dump.sql');
51
        $command  = $dumper->getCommand();
52
        $tempFile = $dumper->getTempFile();
53
        $this->assertSame('mysqldump --defaults-extra-file=' . $tempFile . ' dbname --skip-comments > /path/to/directory/dump.sql', $command);
54
    }
55
56
    /** @test */
57
    public function it_can_generate_a_dump_command_without_using_comments()
58
    {
59
        $dumper = MysqlDumper::create()
60
            ->setDbName('dbname')
61
            ->setUserName('username')
62
            ->setPassword('password')
63
            ->doNotUseSkipComments()
64
            ->dump('dump.sql');
65
        $tempFile = $dumper->getTempFile();
66
        $command  = $dumper->getCommand();
67
        $this->assertSame('mysqldump --defaults-extra-file=' . $tempFile . ' dbname > dump.sql', $command);
68
    }
69
70
    /** @test */
71
    public function it_can_generate_a_restore_command()
72
    {
73
        $dumper = MysqlDumper::create()
74
            ->setDbName('dbname')
75
            ->setUserName('username')
76
            ->setPassword('password')
77
            ->restore('dump.sql');
78
        $tempFile = $dumper->getTempFile();
79
        $command  = $dumper->getCommand();
80
81
        $this->assertSame('mysql --defaults-extra-file=' . $tempFile . ' dbname < dump.sql', $command);
82
    }
83
84
    /** @test */
85
    public function it_can_generate_a_restore_command_with_compression_enabled()
86
    {
87
        $dumper = MysqlDumper::create()
88
            ->setDbName('dbname')
89
            ->setUserName('username')
90
            ->setPassword('password')
91
            ->useCompress()
92
            ->restore('dump.sql.gz');
93
        $command  = $dumper->getCommand();
94
        $tempFile = $dumper->getTempFile();
95
        $this->assertSame('gzip < dump.sql.gz | mysql --defaults-extra-file=' . $tempFile . ' dbname', $command);
96
    }
97
98
    /** @test */
99
    public function it_can_generate_a_restore_command_with_absolute_path()
100
    {
101
        $dumper = MysqlDumper::create()
102
            ->setDbName('dbname')
103
            ->setUserName('username')
104
            ->setPassword('password')
105
            ->restore('/path/to/directory/dump.sql');
106
        $command  = $dumper->getCommand();
107
        $tempFile = $dumper->getTempFile();
108
        $this->assertSame('mysql --defaults-extra-file=' . $tempFile . ' dbname < /path/to/directory/dump.sql', $command);
109
    }
110
}
111