PHP8
[m6w6/seekat] / tests / CallTest.php
1 <?php
2
3 use seekat\API;
4
5 class CallTest extends BaseTest
6 {
7 use ConsumePromise;
8 use AssertSuccess;
9
10 /**
11 * @group testdox
12 * @dataProvider provideAPI
13 */
14 function testResolvesPromiseWithResultAfterCallCompletes($api) {
15 $m6w6 = $this->assertSuccess($api->users->m6w6);
16 $this->assertInstanceOf(API::class, $m6w6);
17 }
18
19 /**
20 * @group testdox
21 * @dataProvider provideAPI
22 */
23 function testExportsArrayWithKeysDataAndUrlAndTypeAndLinksAndHeaders($api) {
24 $m6w6 = $this->assertSuccess($api->users->m6w6);
25 $export = $m6w6->export();
26 $this->assertArrayHasKey("data", $export);
27 $this->assertArrayHasKey("url", $export);
28 $this->assertArrayHasKey("type", $export);
29 $this->assertArrayHasKey("links", $export);
30 $this->assertArrayHasKey("headers", $export);
31 }
32
33 /**
34 * @group testdox
35 * @dataProvider provideAPI
36 */
37 function testFetchedDataIsAccessibleOnPropertyAccess($api) {
38 $m6w6 = $this->assertSuccess($api->users->m6w6);
39 $this->assertEquals("m6w6", $m6w6->login);
40 }
41
42 /**
43 * @group testdox
44 * @dataProvider provideAPI
45 */
46 function testFetchedDataIsAccessibleOnPropertyAccessDespiteUrlSuffixAvailable($api) {
47 $m6w6 = $this->assertSuccess($api->users->m6w6);
48 $this->assertGreaterThan(0, (int) (string) $m6w6->followers);
49 }
50
51 /**
52 * @group testdox
53 * @dataProvider provideAPI
54 */
55 function testFetchUrlSuffix($api) {
56 $m6w6 = $this->assertSuccess($api->users->m6w6);
57 $followers = $this->assertSuccess($api->users->m6w6->followers);
58 $data = $followers->export()["data"];
59 $this->assertIsArray($data);
60 $this->assertIsObject($data[0]);
61 $this->assertIsObject($followers->{0});
62 $this->assertGreaterThan(30, (string) $m6w6->followers);
63 $this->assertGreaterThan(0, count($followers));
64 }
65
66 /**
67 * @group testdox
68 * @dataProvider provideAPI
69 */
70 function testFetchExplicitUrlSuffix($api) {
71 $m6w6 = $this->assertSuccess($api->users->m6w6);
72 $followers = $this->assertSuccess($m6w6->followers_url);
73 $data = $followers->export()["data"];
74 $this->assertIsArray($data);
75 $this->assertIsObject($data[0]);
76 $this->assertIsObject($followers->{0});
77 $this->assertGreaterThan(30, (string) $m6w6->followers);
78 $this->assertGreaterThan(0, count($followers));
79 }
80
81 /**
82 * @group testdox
83 * @dataProvider provideAPI
84 */
85 function testFetchImplicitUrlSuffix($api) {
86 $m6w6 = $this->assertSuccess($api->users->m6w6);
87 $promise = $m6w6->followers();
88 $this->consumePromise($promise, $errors, $results);
89 $api->send();
90 $this->assertEmpty($errors);
91 $this->assertNotEmpty($results);
92 $followers = $results[0];
93 $this->assertInstanceOf(API::class, $followers);
94 $data = $followers->export()["data"];
95 $this->assertIsArray($data);
96 $this->assertGreaterThan(0, count($data));
97 }
98
99 /**
100 * @group testdox
101 * @dataProvider provideAPI
102 */
103 function testFetchParallelFromIterator($api) {
104 $m6w6 = $this->assertSuccess($api->users->m6w6);
105 foreach ($m6w6 as $key => $val) {
106 switch ($key) {
107 case "html_url":
108 case "avatar_url":
109 break;
110 default:
111 if (substr($key, -4) === "_url") {
112 $batch[] = $val;
113 }
114 }
115 }
116 $results = $this->assertAllSuccess($batch);
117 $this->assertGreaterThan(2, $results);
118 }
119 }