Passed
Push — master ( 55b4f9...a3ca0b )
by Caen
03:44 queued 13s
created

test_qualified_url_trims_trailing_slashes()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
nc 1
nop 0
dl 0
loc 6
rs 10
c 1
b 0
f 0
1
<?php
2
3
namespace Hyde\Framework\Testing\Unit;
4
5
use Hyde\Framework\Hyde;
6
use Hyde\Testing\TestCase;
7
8
/**
9
 * @covers \Hyde\Framework\HydeKernel::hasSiteUrl
10
 * @covers \Hyde\Framework\HydeKernel::url
11
 */
12
class HydeUrlPathHelpersTest extends TestCase
13
{
14
    public function test_has_site_url_returns_false_when_no_site_url_is_set()
15
    {
16
        config(['site.url' => null]);
17
        $this->assertFalse(Hyde::hasSiteUrl());
18
    }
19
20
    public function test_has_site_url_returns_true_when_site_url_is_set()
21
    {
22
        config(['site.url' => 'https://example.com']);
23
        $this->assertTrue(Hyde::hasSiteUrl());
24
    }
25
26
    // test that url returns the site url when no path is given
27
    public function test_qualified_url_returns_site_url_when_no_path_is_given()
28
    {
29
        config(['site.url' => 'https://example.com']);
30
        $this->assertEquals('https://example.com', Hyde::url());
31
    }
32
33
    // test that url returns the site url plus the given path
34
    public function test_qualified_url_returns_site_url_plus_given_path()
35
    {
36
        config(['site.url' => 'https://example.com']);
37
        $this->assertEquals('https://example.com/path', Hyde::url('path'));
38
    }
39
40
    // test that url returns the site url plus the given path with extension
41
    public function test_qualified_url_returns_site_url_plus_given_path_with_extension()
42
    {
43
        config(['site.url' => 'https://example.com']);
44
        $this->assertEquals('https://example.com/path.html', Hyde::url('path.html'));
45
    }
46
47
    // test that url returns the site url plus the given path with extension and query string
48
    public function test_qualified_url_returns_site_url_plus_given_path_with_extension_and_query_string()
49
    {
50
        config(['site.url' => 'https://example.com']);
51
        $this->assertEquals('https://example.com/path.html?query=string', Hyde::url('path.html?query=string'));
52
    }
53
54
    // test that url trims trailing slashes
55
    public function test_qualified_url_trims_trailing_slashes()
56
    {
57
        config(['site.url' => 'https://example.com/']);
58
        $this->assertEquals('https://example.com', Hyde::url());
59
        $this->assertEquals('https://example.com', Hyde::url('/'));
60
        $this->assertEquals('https://example.com/foo', Hyde::url('/foo/'));
61
    }
62
63
    // test that url accepts multiple schemes
64
    public function test_qualified_url_accepts_multiple_schemes()
65
    {
66
        config(['site.url' => 'http://example.com']);
67
        $this->assertEquals('http://example.com', Hyde::url());
68
    }
69
70
    // test that url throws an exception when no site url is set
71
    public function test_qualified_url_throws_exception_when_no_site_url_is_set()
72
    {
73
        config(['site.url' => null]);
74
        $this->expectException(\Exception::class);
75
        $this->expectExceptionMessage('No site URL has been set in config (or .env).');
76
        Hyde::url();
77
    }
78
79
    // test that url uses default parameter when supplied and no site url is set
80
    public function test_qualified_url_uses_default_parameter_when_no_site_url_is_set()
81
    {
82
        config(['site.url' => null]);
83
        $this->assertEquals('bar/foo', Hyde::url('foo', 'bar'));
84
    }
85
86
    // test that url does not use default parameter when supplied and a site url is set
87
    public function test_qualified_url_does_not_use_default_parameter_when_site_url_is_set()
88
    {
89
        config(['site.url' => 'https://example.com']);
90
        $this->assertEquals('https://example.com/foo', Hyde::url('foo', 'bar'));
91
    }
92
93
    public function test_helper_returns_expected_string_when_site_url_is_set()
94
    {
95
        config(['site.url' => 'https://example.com']);
96
        $this->assertEquals('https://example.com/foo/bar.html', Hyde::url('foo/bar.html'));
97
    }
98
}
99