flush
[m6w6/seekat] / tests / GeneratorTest.php
1 <?php
2
3 use seekat\API\Links;
4
5 class GeneratorTest extends BaseTest
6 {
7 use ConsumePromise;
8
9 /**
10 * @group testdox
11 * @dataProvider provideApi
12 */
13 function testIteratesOverAGeneratorOfPromises($api) {
14 $api(function($api) use(&$gists_count, &$files_count) {
15 $gists = yield $api->users->m6w6->gists();
16 $gists_count = count($gists);
17 foreach ($gists as $gist) {
18 $files_count += count($gist->files);
19 }
20 });
21 $this->assertGreaterThan(0, $gists_count);
22 $this->assertGreaterThanOrEqual($gists_count, $files_count);
23 }
24
25 /**
26 * @group testdox
27 * @dataProvider provideAPI
28 */
29 function testIteratesOverAGeneratorOfPromisesUsingLinks($api) {
30 $promise = $api(function($api) use(&$repos, &$first, &$next, &$last, &$prev) {
31 $repos = yield $api->users->m6w6->repos(["per_page" => 1]);
32 $last = yield Links\last($repos);
33 $prev = yield Links\prev($last);
34 $next = yield Links\next($prev);
35 $first = yield Links\first($prev);
36 return -123;
37 });
38
39 $this->consumePromise($promise, $errors, $results);
40 $this->assertEmpty($errors);
41 $this->assertEquals([-123], $results);
42
43 $first_data = $first->export()["data"];
44 $next_data = $next->export()["data"];
45 $last_data = $last->export()["data"];
46 $repos_data = $repos->export()["data"];
47
48 $this->assertEquals($repos_data, $first_data);
49 $this->assertEquals($last_data, $next_data);
50 }
51 }