AbstractTestCase::setUp()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace ByTIC\Payments\Tests;
4
5
use ByTIC\Payments\Models\Methods\PaymentMethods;
6
use ByTIC\Payments\Models\Purchases\Purchases;
7
use ByTIC\Payments\Models\Transactions\Transactions;
8
use ByTIC\Payments\Utility\PaymentsModels;
9
use Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
10
use Nip\Records\AbstractModels\RecordManager;
11
use Nip\Records\Locator\ModelLocator;
12
use Paytic\Payments\Tests\AbstractTest;
13
14
/**
15
 * Class AbstractTestCase
16
 * @package ByTIC\Payments\Tests
17
 */
18
abstract class AbstractTestCase extends AbstractTest
19
{
20
    use MockeryPHPUnitIntegration;
21
22
    protected function setUp(): void
23
    {
24
        parent::setUp();
25
        ModelLocator::instance()->getModelRegistry()->setItems([]);
26
        PaymentsModels::reset();
27
    }
28
29
    protected function initUtilityModel($type, $value = null)
30
    {
31
        if ($value instanceof RecordManager) {
32
            ModelLocator::set($type, $value);
33
        } else {
34
            $class = $this->generateRepositoryClass($type);
35
            $value = new $class();
36
37
            ModelLocator::set($class, $value);
38
            ModelLocator::set($type, $value);
39
        }
40
        return $value;
41
    }
42
43
    protected function generateRepositoryClass($type)
44
    {
45
        switch ($type) {
46
            case 'purchases':
47
                return Purchases::class;
48
            case 'methods':
49
                return PaymentMethods::class;
50
            case 'transactions':
51
                return Transactions::class;
52
        }
53
    }
54
}
55