AbstractTestCase   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 2
Bugs 2 Features 0
Metric Value
eloc 20
c 2
b 2
f 0
dl 0
loc 34
rs 10
wmc 7

3 Methods

Rating   Name   Duplication   Size   Complexity  
A generateRepositoryClass() 0 9 4
A initUtilityModel() 0 12 2
A setUp() 0 5 1
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