Completed
Push — master ( b61081...bf01ff )
by Pavel
04:03
created

UserQueryTest::testFind()   C

Complexity

Conditions 7
Paths 11

Size

Total Lines 32
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 32
c 0
b 0
f 0
rs 6.7272
cc 7
eloc 26
nc 11
nop 0
1
<?php
2
3
namespace tests\codeception;
4
5
use Codeception\Specify;
6
use inblank\activeuser\models\User;
7
use inblank\activeuser\Module;
8
use tests\codeception\_fixtures\ProfileFixture;
9
use tests\codeception\_fixtures\UserFixture;
10
use yii;
11
use yii\db\Query;
12
13
/**
14
 * @property \UnitTester $tester
15
 */
16
class UserQueryTest extends \Codeception\Test\Unit
17
{
18
    use Specify;
19
20
    /** @var  Module */
21
    protected $module;
22
23
    public function testFind()
24
    {
25
        expect("we can find user", User::findOne(1))->notNull();
26
        expect("we can't find wrong user", User::findOne(9999))->null();
27
28
        foreach ([User::STATUS_ACTIVE, User::STATUS_BLOCKED, User::STATUS_CONFIRM, User::STATUS_RESTORE] as $status) {
29
            $realCount = (new Query)->from(User::tableName())
30
                ->where('[[status]]=:s', [':s' => $status])
31
                ->count('*', User::getDb());
32
            $query = User::find();
33
            switch ($status) {
34
                case User::STATUS_ACTIVE:
35
                    $query->active();
36
                    break;
37
                case User::STATUS_BLOCKED:
38
                    $query->blocked();
39
                    break;
40
                case User::STATUS_CONFIRM:
41
                    $query->notConfirmed();
42
                    break;
43
                case User::STATUS_RESTORE:
44
                    $query->restoring();
45
                    break;
46
            }
47
            $users = $query->all();
48
            expect("result must be as array", is_array($users))->true();
49
            expect("count of active user must equals", count($users))->equals($realCount);
50
            if (!empty($users)) {
51
                expect("result must contain User objects", $users[0])->isInstanceOf(User::className());
52
            }
53
        }
54
    }
55
56
    protected function tearDown()
57
    {
58
        parent::tearDown();
59
    }
60
61
    protected function setUp()
62
    {
63
        parent::setUp();
64
        $this->module = Yii::$app->getModule('activeuser');
65
    }
66
67
    protected function _before()
68
    {
69
        parent::_before();
70
        $this->tester->haveFixtures([
71
            'users' => UserFixture::className(),
72
            'profiles' => ProfileFixture::className(),
73
        ]);
74
    }
75
}
76