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:----sNnWUutIXLeSiNb6QJwemJMH5yZRty0HwtBcq50+I6pQ2nrLk5cQOTr4VuD0hs7mwSJUrv1RG4lh6xaRI6IYcouwWKU8RZ6FUijWKo319GnCJLScbVm+k27vch+nE/u9ruE2pEBn1FS6CQwTMYYjxQKjFfmew1fJwEvGHcHuRzCq3qig7QI2HUnuXCOuVmhqfrmGTJ5ovM+3rye7VLPHhLFjDmeNJ0C08FzCzd098iZF+ui97OffPYUpa2FrNCUkGHl/FCMZvfdW0VPdsXZpZRMeQDiielry9VAinWVc3J91FfonVanQ2c/8XvqiOPMNtygoqhUbIciwezGnAyALbZQHKSkH0VHt++E6LeOhHfKe+G5lcXeXURByyjuwoNzFbtdfjmSR9o1gNHJL0trQEukjjDFHwHMbwV4CRSIpc4ufS9ug9T3Rk0nZYL3e8eCo4tHv4x66XBh2/31lfM1gFPqJ0L1YDlN2sZfKwnwmkCI/FNhyjW38SJssmj6J50+23gPhM7TsQOKvYotvm7uhC8TdjyZxb3XP41gZ0zRdvD74amkUVrLH4Mb5aq/A9st3qL0tMyKSUwRA2jxWqOvJ4af5pfYd7WQyzietC0aIVaomfi22ffxj7J/zDw1VygJsy8OhzFZQBLZ/0qrBJc9+L5OhjzI/bZGoIiZEH/tQ4sA=----ATTACHMENT:----ODE1OTk4MzA5MzYxNDI5MiA1NDIwMTAwNTQxNTI1MjYzIDQwOTcyODk3NTU3Mjk0Nw==