Completed
Push — master ( 0efd28...9adc96 )
by Lorenzo
01:59
created

RequestTestable::getRequestAndBindItForTest()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 19
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 12
nc 1
nop 7
1
<?php
2
3
namespace Padosoft\Laravel\Request;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Http\UploadedFile;
7
8
/**
9
 * Class RequestTestable
10
 * Trait to easy get an istance of Illuminate\Http\Request and bint it for testing.
11
 * @package Padosoft\Laravel\Request
12
 */
13
trait RequestTestable
14
{
15
    /**
16
     * Create an instance of Illuminate\Http\Request for testing.
17
     * @param string $uri
18
     * @param string $method
19
     * @param array $parameters
20
     * @param array $cookies
21
     * @param array $files
22
     * @param array $server
23
     * @param null $content
24
     * @return Request
25
     */
26
    public function getRequestForTest(
27
        $uri = '/',
28
        string $method = 'GET',
29
        array $parameters = [],
30
        array $cookies = [],
31
        array $files = [],
32
        array $server = [],
33
        $content = null
34
    ) : Request
35
    {
36
        //create request
37
        return Request::create($uri, $method, $parameters, $cookies, $files, $server, $content);
38
    }
39
40
    /**
41
     * Create an instance of Illuminate\Http\Request for testing.
42
     * @param string $uri
43
     * @param string $method
44
     * @param array $parameters
45
     * @param array $cookies
46
     * @param array $files
47
     * @param array $server
48
     * @param null $content
49
     * @return Request
50
     */
51
    public function getRequestAndBindItForTest(
52
        $uri = '/',
53
        string $method = 'GET',
54
        array $parameters = [],
55
        array $cookies = [],
56
        array $files = [],
57
        array $server = [],
58
        $content = null
59
    ) : Request
60
    {
61
        //create request
62
        $request = $this->getRequestForTest($uri, $method, $parameters, $cookies, $files, $server, $content);
63
64
        //bind request istance and facade to this class
65
        $this->bindRequestForTest($request);
66
67
        //return the request
68
        return $request;
69
    }
70
71
    /**
72
     * @param Request $request
73
     * @return Request
74
     */
75
    public function bindRequestForTest(Request $request): Request
76
    {
77
        //bind request istance to this class
78
        $this->app->instance(Request::class, $request);
1 ignored issue
show
Bug introduced by
The property app does not exist. Did you maybe forget to declare it?

In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:

class MyClass { }

$x = new MyClass();
$x->foo = true;

Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion:

class MyClass {
    public $foo;
}

$x = new MyClass();
$x->foo = true;
Loading history...
79
        //bind request facade to this istance
80
        $this->app->instance('request', $request);
81
    }
82
83
    /**
84
     * Get request for upload file and bind.
85
     * Usefull for testing upload.
86
     * @param UploadedFile[] $arrUploadedFiles are in the form ['image' => $UploadFile1, 'file' => $UploadFile2,....]
87
     * @return Request
88
     */
89
    public function getRequestAndBindItForUploadTest(array $arrUploadedFiles) : Request
90
    {
91
        //create request with uploaded files
92
        return $this->getRequestAndBindItForTest('/', 'GET', [], [], $arrUploadedFiles);
93
    }
94
}
95