provideAPI() as $name => list($api)) { foreach ($methods as $method) { $data["$method $name"] = [$api, $method]; } } return $data; } /** * @group testdox * @dataProvider provideAPI */ function testReturnsApiOnPropertyAccess($api) { $this->assertInstanceOf(API::class, $api->foo); } /** * @group testdox * @dataProvider provideAPI */ function testReturnsCloneOnPropertyAccess($api) { $this->assertNotEquals($api, $api->bar); } /** * @group testdox * @dataProvider provideAPI */ function testReturnsPromiseOnMethodCall($api) { $this->assertTrue($api->getFuture()->isPromise($api->baz())); } /** * @dataProvider provideHttpMethodAndAPI */ function testProvidesMethodForStandardHttpMethod($api, $method) { $this->assertTrue(method_exists($api, $method)); } /** * @dataProvider provideHttpMethodAndAPI */ function testReturnsPromiseOnMethodCallForStandardHttpMethod($api, $method) { $this->assertTrue($api->getFuture()->isPromise($api->$method())); } /** * @group testdox * @dataProvider provideAPI * @depends testProvidesMethodForStandardHttpMethod * @depends testReturnsPromiseOnMethodCallForStandardHttpMethod */ function testProvidesMethodsForStandardHttpMethods($api) { $this->assertTrue(true); } }