X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=tests%2Flib%2Fpq%2FQuery%2FAsyncExecutorTest.php;fp=tests%2Flib%2Fpq%2FQuery%2FAsyncExecutorTest.php;h=ad68a914ce89d2b762e69759ba5c0d3a11fbe325;hb=0861b6cd0d8f86add1a068fd3d9740428c8418cd;hp=0000000000000000000000000000000000000000;hpb=3aa333045c0bb93b83e87e190b4ed49333d106f0;p=m6w6%2Fpq-gateway diff --git a/tests/lib/pq/Query/AsyncExecutorTest.php b/tests/lib/pq/Query/AsyncExecutorTest.php new file mode 100644 index 0000000..ad68a91 --- /dev/null +++ b/tests/lib/pq/Query/AsyncExecutorTest.php @@ -0,0 +1,72 @@ +conn = new Connection(PQ_TEST_DSN); + $this->query = new Writer("SELECT \$1::int,\$2::int", [1,2]); + } + + function testReact() { + $exec = new AsyncExecutor($this->conn); + $exec->setCallbacks( + # init context + function() { + return new Reacted; + }, + # done + function(Reacted $context, $result) { + $context->resolve($result); + }, + # then + function(Reacted $context, callable $cb) { + return $context->promise()->then($cb); + }); + + $guard = new \stdClass; + $exec->execute($this->query, function($result) use($guard) { + $guard->result = $result; + }); + $this->conn->getResult(); + $this->assertTrue(!empty($guard->result), "guard is empty"); + $this->assertInstanceOf("pq\\Result", $guard->result); + $this->assertSame([[1,2]], $guard->result->fetchAll()); + } + + function testAmp() { + $exec = new AsyncExecutor($this->conn); + $exec->setCallbacks( + # init context + function() { + return new Amped; + }, + # done + function(Amped $context, $result) { + $context->succeed($result); + }, + # then + function(Amped $context, callable $cb) { + return $context->promise()->when(function($error, $result) use ($cb) { + $cb($result); + }); + }); + $guard = new \stdClass; + $exec->execute($this->query, function($result) use($guard) { + $guard->result = $result; + }); + $this->conn->getResult(); + $this->assertTrue(!empty($guard->result), "guard is empty"); + $this->assertInstanceOf("pq\\Result", $guard->result); + $this->assertSame([[1,2]], $guard->result->fetchAll()); + } +}