Completed
Push — master ( 550d29...83ed84 )
by Evgenii
07:27 queued 04:58
created

TestCase   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 88
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 34
dl 0
loc 88
rs 10
c 0
b 0
f 0
wmc 5

5 Methods

Rating   Name   Duplication   Size   Complexity  
A destroyApplication() 0 3 1
A tearDown() 0 4 1
A setUp() 0 5 1
A mockApplication() 0 7 1
A setApp() 0 31 1
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: floor12
5
 * Date: 07.01.2018
6
 * Time: 12:40
7
 */
8
9
namespace floor12\backup\tests;
10
11
use floor12\backup\models\BackupType;
12
use floor12\backup\Module;
13
use Yii;
14
use yii\base\InvalidConfigException;
15
use yii\console\Application;
16
17
abstract class TestCase extends \PHPUnit\Framework\TestCase
18
{
19
    /**
20
     * @var string Path to sqlite database for tests
21
     */
22
    public $sqlite = 'tests/sqlite.db';
23
    /**
24
     * @var Module
25
     */
26
    public $module;
27
28
    /**
29
     * @inheritdoc
30
     * @throws InvalidConfigException
31
     */
32
    protected function setUp()
33
    {
34
        $this->mockApplication();
35
        $this->setApp();
36
        parent::setUp();
37
    }
38
39
    /**
40
     * Adds backup module to tmp app
41
     */
42
    protected function setApp()
43
    {
44
        $backupModule = [
45
            'class' => 'floor12\backup\Module',
46
            'backupFolder' => '@vendor/../tests/tmp',
47
            'configs' => [
48
                [
49
                    'id' => 'main_db',
50
                    'type' => BackupType::DB,
51
                    'title' => 'Main database',
52
                    'connection' => 'db',
53
                    'limit' => 10
54
                ],
55
                [
56
                    'id' => 'tmp_folder',
57
                    'type' => BackupType::FILES,
58
                    'title' => 'TMP folder',
59
                    'path' => '@app/tmp',
60
                    'limit' => 2
61
                ]
62
            ]
63
        ];
64
        Yii::$app->setModule('backup', $backupModule);
65
66
        $db = [
67
            'class' => ConnectionMock::class,
68
            'databaseName' => "dataBaseName",
69
        ];
70
        Yii::$app->set('db', $db);
71
72
        $this->module = Yii::$app->getModule('backup');
73
    }
74
75
76
    /**
77
     * @inheritdoc
78
     */
79
    protected function tearDown()
80
    {
81
        $this->destroyApplication();
82
        parent::tearDown();
83
    }
84
85
    /**
86
     * @throws InvalidConfigException
87
     */
88
    protected function mockApplication()
89
    {
90
        new Application([
91
            'id' => 'testApp',
92
            'basePath' => __DIR__,
93
            'vendorPath' => dirname(__DIR__) . '/vendor',
94
            'runtimePath' => __DIR__ . '/runtime',
95
        ]);
96
    }
97
98
99
    /**
100
     * Destroy test application
101
     */
102
    protected function destroyApplication()
103
    {
104
        Yii::$app = null;
105
    }
106
}