*/ /** * Apache_Solr_Service Unit Test */ class Apache_Solr_ServiceTest extends Apache_Solr_ServiceAbstractTest { public function getFixture() { return new Apache_Solr_Service(); } public function getMockHttpTransportInterface() { return $this->getMock( 'Apache_Solr_HttpTransport_Interface', array( 'getDefaultTimeout', 'setDefaultTimeout', 'performGetRequest', 'performHeadRequest', 'performPostRequest', ) ); } //================================================================// // ATTEMPT TO MOVE THESE TO ServiceAbstractTest AT SOME POINT // // Apache_Solr_Service_Balancer will need functions added // //================================================================// public function testGetHttpTransportWithDefaultConstructor() { $fixture = new Apache_Solr_Service(); $httpTransport = $fixture->getHttpTransport(); $this->assertInstanceOf('Apache_Solr_HttpTransport_Interface', $httpTransport, 'Default http transport does not implement interface'); $this->assertInstanceOf('Apache_Solr_HttpTransport_FileGetContents', $httpTransport, 'Default http transport is not URL Wrapper implementation'); } public function testSetHttpTransport() { $newTransport = new Apache_Solr_HttpTransport_Curl(); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($newTransport); $httpTransport = $fixture->getHttpTransport(); $this->assertInstanceOf('Apache_Solr_HttpTransport_Interface', $httpTransport); $this->assertInstanceOf('Apache_Solr_HttpTransport_Curl', $httpTransport); $this->assertEquals($newTransport, $httpTransport); } public function testSetHttpTransportWithConstructor() { $newTransport = new Apache_Solr_HttpTransport_Curl(); $fixture = new Apache_Solr_Service('localhost', 8180, '/solr/', $newTransport); $fixture->setHttpTransport($newTransport); $httpTransport = $fixture->getHttpTransport(); $this->assertInstanceOf('Apache_Solr_HttpTransport_Interface', $httpTransport); $this->assertInstanceOf('Apache_Solr_HttpTransport_Curl', $httpTransport); $this->assertEquals($newTransport, $httpTransport); } public function testGetCollapseSingleValueArraysWithDefaultConstructor() { $fixture = $this->getFixture(); $this->assertTrue($fixture->getCollapseSingleValueArrays()); } public function testSetCollapseSingleValueArrays() { $fixture = $this->getFixture(); $fixture->setCollapseSingleValueArrays(false); $this->assertFalse($fixture->getCollapseSingleValueArrays()); } public function testGetNamedListTreatmetnWithDefaultConstructor() { $fixture = $this->getFixture(); $this->assertEquals(Apache_Solr_Service::NAMED_LIST_MAP, $fixture->getNamedListTreatment()); } public function testSetNamedListTreatment() { $fixture = $this->getFixture(); $fixture->setNamedListTreatment(Apache_Solr_Service::NAMED_LIST_FLAT); $this->assertEquals(Apache_Solr_Service::NAMED_LIST_FLAT, $fixture->getNamedListTreatment()); $fixture->setNamedListTreatment(Apache_Solr_Service::NAMED_LIST_MAP); $this->assertEquals(Apache_Solr_Service::NAMED_LIST_MAP, $fixture->getNamedListTreatment()); } /** * @expectedException Apache_Solr_InvalidArgumentException */ public function testSetNamedListTreatmentInvalidArgumentException() { $fixture = $this->getFixture(); $fixture->setNamedListTreatment("broken"); } //================================================================// // END SECTION OF CODE THAT SHOULD BE MOVED // // Apache_Solr_Service_Balancer will need functions added // //================================================================// public function testConstructorDefaultArguments() { $fixture = new Apache_Solr_Service(); $this->assertInstanceOf('Apache_Solr_Service', $fixture); } public function testGetHostWithDefaultConstructor() { $fixture = new Apache_Solr_Service(); $host = $fixture->getHost(); $this->assertEquals("localhost", $host); } public function testSetHost() { $newHost = "example.com"; $fixture = new Apache_Solr_Service(); $fixture->setHost($newHost); $host = $fixture->getHost(); $this->assertEquals($newHost, $host); } /** * @expectedException Apache_Solr_InvalidArgumentException */ public function testSetEmptyHost() { $fixture = new Apache_Solr_Service(); // should throw an invalid argument exception $fixture->setHost(""); } public function testSetHostWithConstructor() { $newHost = "example.com"; $fixture = new Apache_Solr_Service($newHost); $host = $fixture->getHost(); $this->assertEquals($newHost, $host); } public function testGetPortWithDefaultConstructor() { $fixture = new Apache_Solr_Service(); $port = $fixture->getPort(); $this->assertEquals(8180, $port); } public function testSetPort() { $newPort = 12345; $fixture = new Apache_Solr_Service(); $fixture->setPort($newPort); $port = $fixture->getPort(); $this->assertEquals($newPort, $port); } /** * @expectedException Apache_Solr_InvalidArgumentException */ public function testSetPortWithInvalidArgument() { $fixture = new Apache_Solr_Service(); $fixture->setPort("broken"); } public function testSetPortWithConstructor() { $newPort = 12345; $fixture = new Apache_Solr_Service('locahost', $newPort); $port = $fixture->getPort(); $this->assertEquals($newPort, $port); } public function testGetPathWithDefaultConstructor() { $fixture = new Apache_Solr_Service(); $path = $fixture->getPath(); $this->assertEquals("/solr/", $path); } public function testSetPath() { $newPath = "/new/path/"; $fixture = new Apache_Solr_Service(); $fixture->setPath($newPath); $path = $fixture->getPath(); $this->assertEquals($path, $newPath); } public function testSetPathWillAddContainingSlashes() { $newPath = "new/path"; $containedPath = "/{$newPath}/"; $fixture = new Apache_Solr_Service(); $fixture->setPath($newPath); $path = $fixture->getPath(); $this->assertEquals($containedPath, $path, 'setPath did not ensure propertly wrapped with slashes'); } public function testSetPathWithConstructor() { $newPath = "/new/path/"; $fixture = new Apache_Solr_Service('localhost', 8180, $newPath); $path = $fixture->getPath(); $this->assertEquals($newPath, $path); } public function testGetDefaultTimeoutCallsThroughToTransport() { $fixture = new Apache_Solr_Service(); // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call $mockTransport->expects($this->once())->method('getDefaultTimeout'); $fixture->setHttpTransport($mockTransport); $fixture->getDefaultTimeout(); } public function testSetDefaultTimeoutCallsThroughToTransport() { $timeout = 12345; $fixture = new Apache_Solr_Service(); // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call $mockTransport->expects($this->once())->method('setDefaultTimeout')->with($this->equalTo($timeout)); $fixture->setHttpTransport($mockTransport); $fixture->setDefaultTimeout($timeout); } public function testPing() { $expectedUrl = "http://localhost:8180/solr/admin/ping"; $expectedTimeout = 2; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performHeadRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); // call ping $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $time = $fixture->ping(); $this->assertGreaterThan(0, $time); } public function testPingReturnsFalse() { $expectedUrl = "http://localhost:8180/solr/admin/ping"; $expectedTimeout = 2; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performHeadRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get0Response())); // call ping $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $this->assertFalse($fixture->ping()); } public function testThreads() { $expectedUrl = "http://localhost:8180/solr/admin/threads?wt=json"; $expectedTimeout = false; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performGetRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); // call threads $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $fixture->threads(); } /** * @expectedException Apache_Solr_HttpTransportException */ public function testThreads404() { $expectedUrl = "http://localhost:8180/solr/admin/threads?wt=json"; $expectedTimeout = false; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performGetRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get404Response())); // call threads $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $fixture->threads(); } public function testAdd() { $postData = "does not have to be valid"; $expectedUrl = "http://localhost:8180/solr/update?wt=json"; $expectedTimeout = false; $expectedPostData = $postData; $expectedContentType = "text/xml; charset=UTF-8"; // default for _sendRawPost // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($postData), $this->equalTo($expectedContentType), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); // call add $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $fixture->add($postData); } /** * @expectedException Apache_Solr_HttpTransportException */ public function testAdd400() { $postData = "does not have to be valid"; $expectedUrl = "http://localhost:8180/solr/update?wt=json"; $expectedTimeout = false; $expectedPostData = $postData; $expectedContentType = "text/xml; charset=UTF-8"; // default for _sendRawPost // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($postData), $this->equalTo($expectedContentType), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get400Response())); // call add $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $fixture->add($postData); } public function testAddDocument() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( // url $this->equalTo('http://localhost:8180/solr/update?wt=json'), // raw post $this->equalTo(''), // content type $this->equalTo('text/xml; charset=UTF-8'), // timeout $this->equalTo(false) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $document = new Apache_Solr_Document(); $fixture->addDocument($document); } public function testAddDocumentWithNonDefaultParameters() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( // url $this->equalTo('http://localhost:8180/solr/update?wt=json'), // raw post $this->equalTo(''), // content type $this->equalTo('text/xml; charset=UTF-8'), // timeout $this->equalTo(false) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $document = new Apache_Solr_Document(); $fixture->addDocument($document, true, false, false, 3600); } public function testAddDocumentWithFields() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( // url $this->equalTo('http://localhost:8180/solr/update?wt=json'), // raw post $this->equalTo('global unique idvaluevalue 1value 2'), // content type $this->equalTo('text/xml; charset=UTF-8'), // timeout $this->equalTo(false) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $document = new Apache_Solr_Document(); $document->guid = "global unique id"; $document->field = "value"; $document->multivalue = array("value 1", "value 2"); $fixture->addDocument($document); } public function testAddDocumentWithFieldBoost() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( // url $this->equalTo('http://localhost:8180/solr/update?wt=json'), // raw post $this->equalTo('global unique idvaluevalue 1value 2'), // content type $this->equalTo('text/xml; charset=UTF-8'), // timeout $this->equalTo(false) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $document = new Apache_Solr_Document(); $document->guid = "global unique id"; $document->field = "value"; $document->setFieldBoost('field', 2); $document->multivalue = array("value 1", "value 2"); $document->setFieldBoost('multivalue', 3); $fixture->addDocument($document); } public function testAddDocumentWithDocumentBoost() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( // url $this->equalTo('http://localhost:8180/solr/update?wt=json'), // raw post $this->equalTo('global unique idvalue'), // content type $this->equalTo('text/xml; charset=UTF-8'), // timeout $this->equalTo(false) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $document = new Apache_Solr_Document(); $document->setBoost(2); $document->guid = "global unique id"; $document->field = "value"; $fixture->addDocument($document); } public function testAddDocuments() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( // url $this->equalTo('http://localhost:8180/solr/update?wt=json'), // raw post $this->equalTo(''), // content type $this->equalTo('text/xml; charset=UTF-8'), // timeout $this->equalTo(false) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $documents = array( new Apache_Solr_Document(), new Apache_Solr_Document() ); $fixture->addDocuments($documents); } public function testAddDocumentsWithNonDefaultParameters() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( // url $this->equalTo('http://localhost:8180/solr/update?wt=json'), // raw post $this->equalTo(''), // content type $this->equalTo('text/xml; charset=UTF-8'), // timeout $this->equalTo(false) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $documents = array( new Apache_Solr_Document(), new Apache_Solr_Document() ); $fixture->addDocuments($documents, true, false, false, 3600); } public function testCommit() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( // url $this->equalTo('http://localhost:8180/solr/update?wt=json'), // raw post $this->equalTo(''), // content type $this->equalTo('text/xml; charset=UTF-8'), // timeout $this->equalTo(3600) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->commit(); } public function testCommitWithNonDefaultParameters() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( // url $this->equalTo('http://localhost:8180/solr/update?wt=json'), // raw post $this->equalTo(''), // content type $this->equalTo('text/xml; charset=UTF-8'), // timeout $this->equalTo(7200) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->commit(true, false, false, 7200); } public function testDelete() { $postData = "does not have to be valid"; $expectedUrl = "http://localhost:8180/solr/update?wt=json"; $expectedTimeout = 3600; // default for delete $expectedPostData = $postData; $expectedContentType = "text/xml; charset=UTF-8"; // default for _sendRawPost // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($postData), $this->equalTo($expectedContentType), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); // call add $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $fixture->delete($postData); } public function testDeleteById() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->deleteById("does not exist"); } public function testDeleteByMultipleIds() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->deleteByMultipleIds(array(1, 2, 3)); } public function testDeleteByQuery() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->deleteByQuery("*:*"); } public function testExtracts() { $extractFile = __FILE__; $expectedUrl = "http://localhost:8180/solr/update/extract?resource.name=ServiceTest.php&wt=json&json.nl=map"; $expectedPostData = file_get_contents($extractFile); $expectedContentType = 'application/octet-stream'; // default for extract $expectedTimeout = false; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($expectedPostData), $this->equalTo($expectedContentType), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->extract($extractFile); } /** * @expectedException Apache_Solr_InvalidArgumentException */ public function testExtractWithInvalidParams() { $extractFile = __FILE__; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->extract($extractFile, "invalid"); } /** * @expectedException Apache_Solr_InvalidArgumentException */ public function testExtractFromStringWithInvalidParams() { $extractFileData = "does not matter what it is"; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->extractFromString($extractFileData, "invalid"); } public function testExtractsWithNullParams() { $extractFile = __FILE__; $expectedUrl = "http://localhost:8180/solr/update/extract?resource.name=ServiceTest.php&wt=json&json.nl=map"; $expectedPostData = file_get_contents($extractFile); $expectedContentType = 'application/octet-stream'; // default for extract $expectedTimeout = false; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($expectedPostData), $this->equalTo($expectedContentType), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->extract($extractFile, null); } /** * @expectedException Apache_Solr_InvalidArgumentException */ public function testExtractWithEmptyFile() { $extractFile = "iDontExist.txt"; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->extract($extractFile); } public function testExtractsWithDocument() { $extractFile = __FILE__; $expectedUrl = "http://localhost:8180/solr/update/extract?resource.name=ServiceTest.php&wt=json&json.nl=map&boost.field=2&literal.field=literal+value"; $expectedPostData = file_get_contents($extractFile); $expectedContentType = 'application/octet-stream'; // default for extract $expectedTimeout = false; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->with($this->equalTo($expectedUrl), $this->equalTo($expectedPostData), $this->equalTo($expectedContentType), $this->equalTo($expectedTimeout)) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $literals = new Apache_Solr_Document(); $literals->field = "literal value"; $literals->setFieldBoost('field', 2); $fixture->extract($extractFile, null, $literals); } public function testExtractWithUrlDefers() { $extractUrl = "http://example.com"; $expectedUrl = "http://localhost:8180/solr/update/extract?resource.name=http%3A%2F%2Fexample.com&wt=json&json.nl=map"; $expectedPostData = Apache_Solr_HttpTransport_ResponseTest::BODY_200; $expectedContentType = 'application/octet-stream'; // default for extract $expectedTimeout = false; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performGetRequest') ->with( $this->equalTo($extractUrl) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( $this->equalTo($expectedUrl), $this->equalTo($expectedPostData), $this->equalTo($expectedContentType), $this->equalTo($expectedTimeout) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->extract($extractUrl); } public function testExtractFromUrl() { $extractUrl = "http://example.com"; $expectedUrl = "http://localhost:8180/solr/update/extract?resource.name=http%3A%2F%2Fexample.com&wt=json&json.nl=map"; $expectedPostData = Apache_Solr_HttpTransport_ResponseTest::BODY_200; $expectedContentType = 'application/octet-stream'; // default for extract $expectedTimeout = false; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performGetRequest') ->with( $this->equalTo($extractUrl) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $mockTransport->expects($this->once()) ->method('performPostRequest') ->with( $this->equalTo($expectedUrl), $this->equalTo($expectedPostData), $this->equalTo($expectedContentType), $this->equalTo($expectedTimeout) ) ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->extractFromUrl($extractUrl); } /** * @expectedException Apache_Solr_InvalidArgumentException */ public function testExtractFromUrlWithInvalidParams() { $extractUrl = "http://example.com"; // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->extractFromUrl($extractUrl, "invalid"); } public function testOptimize() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_Service(); $fixture->setHttpTransport($mockTransport); $fixture->optimize(); } public function testSearch() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performGetRequest') ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $fixture->search("solr"); } /** * @expectedException Apache_Solr_InvalidArgumentException */ public function testSearchWithInvalidParams() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $fixture->search("solr", 0, 10, "invalid"); $this->fail("Should have through InvalidArgumentException"); } public function testSearchWithEmptyParams() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performGetRequest') ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $fixture->search("solr", 0, 10, null); } public function testSearchWithPostMethod() { // set a mock transport $mockTransport = $this->getMockHttpTransportInterface(); // setup expected call and response $mockTransport->expects($this->once()) ->method('performPostRequest') ->will($this->returnValue(Apache_Solr_HttpTransport_ResponseTest::get200Response())); $fixture = new Apache_Solr_service(); $fixture->setHttpTransport($mockTransport); $fixture->search("solr", 0, 10, array(), Apache_Solr_Service::METHOD_POST); } /** * @expectedException Apache_Solr_InvalidArgumentException */ public function testSearchWithInvalidMethod() { $fixture = new Apache_Solr_service(); $fixture->search("solr", 0, 10, array(), "INVALID METHOD"); } }