Completed
Push — master ( cbdc93...f04bf9 )
by Benjamin
02:26
created

RequestTest::testTimer()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 13
rs 9.4285
cc 1
eloc 8
nc 1
nop 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: lejla
5
 * Date: 2016.02.10.
6
 * Time: 17:51
7
 */
8
9
namespace CurlX\Tests;
10
11
12
use CurlX\Request;
13
use PHPUnit_Framework_TestCase;
14
15
class RequestTest extends PHPUnit_Framework_TestCase
16
{
17
    public function testUrl()
18
    {
19
        $request = new Request('http://url.com');
20
        $this->assertEquals('http://url.com', $request->url);
21
22
        $request->url = 'http://url2.com';
23
        $this->assertEquals('http://url2.com', $request->url);
24
25
        $request->url = 'badurl';
26
        $this->assertEquals('http://url2.com', $request->url);
27
    }
28
29
    public function testPostFieldsBuilder()
30
    {
31
        $request = new Request();
32
33
        // No post values yet, so it should default to GET
34
        $this->assertArrayNotHasKey(CURLOPT_POST, $request->options);
35
        $this->assertEmpty($request->post_data);
36
37
        // With post values
38
        $post = ['username' => 'mike', 'password' => 'pass'];
39
        $request->post_data = $post;
40
        $this->assertArrayHasKey(CURLOPT_POST, $request->options);
41
        $this->assertEquals($post, $request->post_data);
42
43
        // Add more post fields
44
        $post2 = ['otherdata' => 'newvalue', 'username' => 'stacey'];
45
        $request->post_data = $post2;
46
        $this->assertArrayHasKey(CURLOPT_POST, $request->options);
47
        $this->assertEquals($post + $post2, $request->post_data);
48
    }
49
50
    public function testTimer()
51
    {
52
        $request = new Request();
53
54
        $this->assertNull($request->time);
55
56
        $request->startTimer();
57
        $this->assertNull($request->time);
58
59
        $request->stopTimer();
60
        $this->assertNotNull($request->time);
61
        $this->assertTrue($request->time >= 0);
62
    }
63
64
    public function testNotify()
65
    {
66
        $request = new Request();
67
        $called1 = false;
68
        $called2 = false;
69
        $r1 = null;
70
        $r2 = null;
71
72
        $request->addListener(function($var) use (&$called1, &$r1) {
73
            $called1 = true;
74
            $r1 = $var;
75
        });
76
77
        $request->addListener(function($var) use (&$called2, &$r2) {
78
            $called2 = true;
79
            $r2 = $var;
80
        });
81
82
        $request->callBack([]);
83
84
        $this->assertTrue($called1, 'Callback 1 was not notified on request completion!');
85
        $this->assertInstanceOf('CurlX\RequestInterface', $r1, 'Callback 1 did not receive the request object');
86
        $this->assertTrue($called2, 'Callback 2 was not notified on request completion!');
87
        $this->assertInstanceOf('CurlX\RequestInterface', $r2, 'Callback 2 did not receive the request object');
88
    }
89
}