drop async-interop
[m6w6/seekat] / tests / APITest.php
1 <?php
2
3 use seekat\API;
4
5 class APITest extends BaseTest
6 {
7 function provideHttpMethodAndAPI() {
8 $data = [];
9 $methods = [
10 "HEAD",
11 "GET",
12 "POST",
13 "PUT",
14 "DELETE",
15 "PATCH"
16 ];
17 foreach ($this->provideAPI() as $name => list($api)) {
18 foreach ($methods as $method) {
19 $data["$method $name"] = [$api, $method];
20 }
21 }
22 return $data;
23 }
24
25 /**
26 * @group testdox
27 * @dataProvider provideAPI
28 */
29 function testReturnsApiOnPropertyAccess($api) {
30 $this->assertInstanceOf(API::class, $api->foo);
31 }
32
33 /**
34 * @group testdox
35 * @dataProvider provideAPI
36 */
37 function testReturnsCloneOnPropertyAccess($api) {
38 $this->assertNotEquals($api, $api->bar);
39 }
40
41 /**
42 * @group testdox
43 * @dataProvider provideAPI
44 */
45 function testReturnsPromiseOnMethodCall($api) {
46 $this->assertTrue($api->getFuture()->isPromise($api->baz()));
47 }
48
49 /**
50 * @dataProvider provideHttpMethodAndAPI
51 */
52 function testProvidesMethodForStandardHttpMethod($api, $method) {
53 $this->assertTrue(method_exists($api, $method));
54 }
55
56 /**
57 * @dataProvider provideHttpMethodAndAPI
58 */
59 function testReturnsPromiseOnMethodCallForStandardHttpMethod($api, $method) {
60 $this->assertTrue($api->getFuture()->isPromise($api->$method()));
61 }
62
63 /**
64 * @group testdox
65 * @dataProvider provideAPI
66 * @depends testProvidesMethodForStandardHttpMethod
67 * @depends testReturnsPromiseOnMethodCallForStandardHttpMethod
68 */
69 function testProvidesMethodsForStandardHttpMethods($api) {
70 $this->assertTrue(true);
71 }
72 }