requestHandler = $this->prophesize(RequestHandler::class); $this->schema = TestHelpers::stub(Schema::class, [ $this->requestHandler->reveal(), new Serializer(), self::NAME, ], ['requestHandler']); } public function testName() { $this->assertEquals(self::NAME, $this->schema->name()); } public function testDelete() { $this->requestHandler->sendRequest( SchemaServiceClient::class, 'deleteSchema', Argument::cetera() )->willReturn('foo'); $this->schema->___setProperty('requestHandler', $this->requestHandler->reveal()); // the service call returns void, but let's test that we're returning whatever it sends. $this->assertEquals('foo', $this->schema->delete()); } public function testInfo() { $this->requestHandler->sendRequest( SchemaServiceClient::class, 'getSchema', Argument::cetera() )->shouldBeCalledOnce()->willReturn(['foo' => 'bar']); $this->schema->___setProperty('requestHandler', $this->requestHandler->reveal()); $this->assertEquals('bar', $this->schema->info()['foo']); // test that the result is stored and a 2nd service call is not made. $this->schema->info(); } public function testReload() { $this->requestHandler->sendRequest( SchemaServiceClient::class, 'getSchema', Argument::cetera() )->shouldBeCalledTimes(2)->willReturn(['foo' => 'bar']); $this->schema->___setProperty('requestHandler', $this->requestHandler->reveal()); $this->assertEquals('bar', $this->schema->reload()['foo']); // test that the result is not stored and a 2nd service call is made. $this->schema->reload(); } public function testExists() { $this->requestHandler->sendRequest( SchemaServiceClient::class, 'getSchema', Argument::cetera() )->shouldBeCalledOnce()->willReturn(['foo' => 'bar']); $this->schema->___setProperty('requestHandler', $this->requestHandler->reveal()); $this->assertTrue($this->schema->exists()); } public function testExistsReturnsFalse() { $this->requestHandler->sendRequest( SchemaServiceClient::class, 'getSchema', Argument::cetera() )->shouldBeCalledOnce()->willThrow(NotFoundException::class); $this->schema->___setProperty('requestHandler', $this->requestHandler->reveal()); $this->assertFalse($this->schema->exists()); } public function testlistRevisions() { $this->requestHandler->sendRequest( SchemaServiceClient::class, 'listSchemaRevisions', Argument::cetera() )->shouldBeCalledOnce() ->willReturn(['foo' => 'bar']); $this->schema->___setProperty('requestHandler', $this->requestHandler->reveal()); $this->assertEquals('bar', $this->schema->listRevisions()['foo']); } public function testCommit() { $this->requestHandler->sendRequest( SchemaServiceClient::class, 'commitSchema', Argument::cetera() )->shouldBeCalledOnce() ->willReturn(['foo' => 'bar']); $this->schema->___setProperty('requestHandler', $this->requestHandler->reveal()); $this->assertEquals('bar', $this->schema->commit('test', 'AVRO')['foo']); } public function testDeleteRevision() { $this->requestHandler->sendRequest( SchemaServiceClient::class, 'deleteSchemaRevision', Argument::cetera() )->shouldBeCalledOnce() ->willReturn(['foo' => 'bar']); $this->schema->___setProperty('requestHandler', $this->requestHandler->reveal()); $this->assertEquals('bar', $this->schema->deleteRevision('1234567')['foo']); } }