Completed
Branch 6.0 (d30585)
by yun
14:52
created

EnvTest   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 37
c 1
b 0
f 0
dl 0
loc 71
rs 10
wmc 4
1
<?php
2
3
namespace think\tests;
4
5
use org\bovigo\vfs\vfsStream;
6
use PHPUnit\Framework\TestCase;
7
use think\Env;
8
use think\Exception;
9
10
class EnvTest extends TestCase
11
{
12
    public function testEnvFile()
13
    {
14
        $root    = vfsStream::setup();
15
        $envFile = vfsStream::newFile('.env')->setContent("key1=value1\nkey2=value2");
16
        $root->addChild($envFile);
17
18
        $env = new Env();
19
20
        $env->load($envFile->url());
21
22
        $this->assertEquals('value1', $env->get('key1'));
23
        $this->assertEquals('value2', $env->get('key2'));
24
25
        $this->assertSame(['KEY1' => 'value1', 'KEY2' => 'value2'], $env->get());
26
    }
27
28
    public function testServerEnv()
29
    {
30
        $env = new Env();
31
32
        $this->assertEquals('value2', $env->get('key2', 'value2'));
33
34
        putenv('PHP_KEY7=value7');
35
        putenv('PHP_KEY8=false');
36
        putenv('PHP_KEY9=true');
37
38
        $this->assertEquals('value7', $env->get('key7'));
39
        $this->assertFalse($env->get('KEY8'));
40
        $this->assertTrue($env->get('key9'));
41
    }
42
43
    public function testSetEnv()
44
    {
45
        $env = new Env();
46
47
        $env->set([
48
            'key1' => 'value1',
49
            'key2' => [
50
                'key1' => 'value1-2',
51
            ],
52
        ]);
53
54
        $env->set('key3', 'value3');
55
56
        $env->key4 = 'value4';
57
58
        $env['key5'] = 'value5';
59
60
        $this->assertEquals('value1', $env->get('key1'));
61
        $this->assertEquals('value1-2', $env->get('key2.key1'));
62
63
        $this->assertEquals('value3', $env->get('key3'));
64
65
        $this->assertEquals('value4', $env->key4);
66
67
        $this->assertEquals('value5', $env['key5']);
68
69
        $this->expectException(Exception::class);
70
71
        unset($env['key5']);
72
    }
73
74
    public function testHasEnv()
75
    {
76
        $env = new Env();
77
        $env->set(['foo' => 'bar']);
78
        $this->assertTrue($env->has('foo'));
79
        $this->assertTrue(isset($env->foo));
80
        $this->assertTrue($env->offsetExists('foo'));
81
    }
82
}
83