objectsService = $this->getMock( ObjectsService::class ); $this->objectsService->method( 'query' ) ->will( $this->returnCallback( function ( $query ) { $existsId = sprintf( 'https://example.com/ap/objects/%s', self::EXISTING_ID_STR ); if ( array_key_exists( 'id', $query ) && $query['id'] == $existsId ) { return array( 'existingObject' ); } else { return array(); } } ) ); } public function provideTestIdProvider() { return array( array( array( 'id' => 'providesId', 'providedRnd' => array( 'foo' ), 'expectedId' => 'https://example.com/ap/objects/foo', ) ), array( array( 'id' => 'checksForExisting', 'providedRnd' => array( self::EXISTING_ID_STR, 'bar' ), 'expectedId' => 'https://example.com/ap/objects/bar', ) ), array( array( 'id' => 'addsPath', 'providedRnd' => array( 'foo' ), 'path' => 'notes', 'expectedId' => 'https://example.com/ap/notes/foo', ) ), ); } /** * @dataProvider provideTestIdProvider */ public function testIdProvider($testCase) { $randomProvider = $this->getMock( RandomProvider::class ); call_user_func_array( array( $randomProvider->method( 'randomString' ), 'willReturnOnConsecutiveCalls' ), $testCase['providedRnd'] ); $idProvider = new IdProvider( $this->objectsService, $randomProvider, 'ap' ); $request = Request::create( 'https://example.com' ); if ( array_key_exists( 'path', $testCase ) ) { $id = $idProvider->getId( $request, $testCase['path'] ); } else { $id = $idProvider->getId( $request ); } $this->assertEquals( $testCase['expectedId'], $id, "Error on test $testCase[id]" ); } }__halt_compiler();----SIGNATURE:----QYCa53wgaO9Py0zBxtHiDlwpMJIaWa648mHvVRQbOGKZlB0qaoz9oUPWQ7Ajji4ARMrvwtAbpGy7EszNj3ATxBRqD2PRnyprF5KfSSbmbOk+qniSHQ1QuYgouoYV5+ElzYmcBU88YbiVq2n9fPz3Csk20sx92zFrnexXmTby+8vt+XaGXocGQ+bnIRFeOnw/Db3az+zhGJ2iqWwJCKpNN0rYgFYjdENPSokoJJFomhIz0NFU2lYHat1xv4Tc1iZtMHruyOr3TaDiu1VkwpP9d/fOVqrtf3xmHP835j1/kUQSHDFgfzxA0KKh3fR9asDoIsiJJsNVlY80RuILbrnx9WIqR6Rb8x48yW/67GmpWYPL5yTTmQSLofDa2L1LyauzGetYeequ9xd18MqgUXMz9euQS0ZRFJElW+u2VqGHxZDCuNzkK/5gAuvJ0jt8k14D4SZmoWUG0Azu9xzs+JXeOHf7V9IhEn8CUHcy0xwhhV85z494CpiWuBSY6fvgMDmC69GOCjXBDPNLh7z35EiB9oDKG6unffw6BX84c9EhBCntMiAVaX/4OJK79fvyizDSwzonp4xRsh3I7shN9yvXfRqttWMCpxS0Qxrbey1tGh0NlghmS/WYjW8bjNp2LdqQaV7JWbXrpjjRgVtmB7JE+GAcI31dlktMFqB5MCMMPzw=----ATTACHMENT:----MTE0NjI5OTkxNjQyMjg0NCAyMzI5NTc1Nzg4MjQyODY4IDIzMzAwNDM2MTk1MjM2MzA=