Completed
Push — master ( bc3bf5...3f770a )
by smiley
02:50
created

MultiRequestTest::getURLs()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 17
rs 9.4285
cc 3
eloc 9
nc 3
nop 0
1
<?php
2
/**
3
 *
4
 * @filesource   MultiRequestTest.php
5
 * @created      16.02.2016
6
 * @package      chillerlan\TinyCurlTest
7
 * @author       Smiley <[email protected]>
8
 * @copyright    2016 Smiley
9
 * @license      MIT
10
 */
11
12
namespace chillerlan\TinyCurlTest;
13
14
use chillerlan\TinyCurl\MultiRequest;
15
use chillerlan\TinyCurl\MultiRequestOptions;
16
use stdClass;
17
18
class MultiRequestTest extends \PHPUnit_Framework_TestCase{
19
20
	protected function getURLs(){
21
22
		$ids = [
23
			[1,2,6,11,15,23,24,56,57,58,59,60,61,62,63,64,68,69,70,71,72,73,74,75,76],
24
			[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101],
25
		];
26
27
		$urls = [];
28
29
		foreach($ids as $chunk){
30
			foreach(['de', 'en', 'es', 'fr', 'zh'] as $lang){
31
				$urls[] = 'lang='.$lang.'&ids='.implode(',', $chunk);
32
			}
33
		}
34
35
		return $urls;
36
	}
37
38
	public function testInstance(){
39
		$options = new MultiRequestOptions;
40
		$options->handler     = MultiResponseHandlerTest::class;
41
		$options->ca_info     = __DIR__.'/test-cacert.pem';
42
		$options->base_url    = 'https://api.guildwars2.com/v2/items?';
43
		$options->window_size = 3;
44
45
		$request = new MultiRequest($options);
46
		$request->fetch($this->getURLs());
47
48
		foreach($request->getResponseData() as $response){
49
50
			$this->assertEquals(0, $response->errorcode);
51
			$this->assertEquals(200, $response->statuscode);
52
			$this->assertEquals($response->content_length_header, $response->content_length_body);
53
			$this->assertEquals('application/json; charset=utf-8', $response->content_type);
54
#			var_dump($response->ids);
0 ignored issues
show
Unused Code Comprehensibility introduced by
63% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
55
		}
56
57
	}
58
59
	public function testInstanceWindowSize(){
60
		$options = new MultiRequestOptions;
61
		$options->handler     = MultiResponseHandlerTest::class;
62
		$options->ca_info     = __DIR__.'/test-cacert.pem';
63
		$options->base_url    = 'https://api.guildwars2.com/v2/items?';
64
		$options->window_size = 30;
65
66
		$request = new MultiRequest($options);
67
		$request->fetch($this->getURLs());
68
	}
69
70
	/**
71
	 * @expectedException \chillerlan\TinyCurl\RequestException
72
	 * @expectedExceptionMessage empty($urls)
73
	 */
74
	public function testFetchUrlEmptyException(){
75
		(new MultiRequest)->fetch([]);
76
	}
77
78
	/**
79
	 * @expectedException \chillerlan\TinyCurl\RequestException
80
	 * @expectedExceptionMessage !$this->options->handler
81
	 */
82
	public function testSetHandlerExistsException(){
83
		$options = new MultiRequestOptions;
84
		$options->handler     = 'foobar';
85
86
		new MultiRequest($options);
87
	}
88
89
	/**
90
	 * @expectedException \chillerlan\TinyCurl\RequestException
91
	 * @expectedExceptionMessage !is_a($handler)
92
	 */
93
	public function testSetHandlerImplementsException(){
94
		$options = new MultiRequestOptions;
95
		$options->handler     = stdClass::class;
96
97
		new MultiRequest($options);
98
	}
99
100
}
101