diff -r a2342f26c9de -r b0b56e0f8c7f server/src/tests/Services/LexvoResolverTest.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server/src/tests/Services/LexvoResolverTest.php Fri Jan 15 15:35:00 2016 +0100 @@ -0,0 +1,543 @@ +shouldReceive('isSuccessful')->andReturn(true) + ->shouldReceive('getBody')->andReturn($queryResult) + ->shouldReceive('getStatus')->andReturn(200) + ->shouldReceive('getHeader')->andReturn('application/sparql-results+json;charset=UTF-8') + ->mock(); + $this->httpClient = m::mock('EasyRdf\Http\Client') + ->shouldReceive('setConfig') + ->shouldReceive('resetParameters') + ->shouldReceive('setHeaders')//->with(m::on(function($headers) { print("HEADER => $headers\n"); return true;}),m::on(function($value) { print("VALUE => $value\n"); return true;})) + ->shouldReceive('setMethod') + ->shouldReceive('setUri')//->with(m::on(function($uri) { print($uri."\n"); return true;})) + ->shouldReceive('request')->andReturn($response) + ->mock(); + Http::setDefaultHttpClient($this->httpClient); + $this->lexvoResolver = $this->app->make('CorpusParole\Services\LexvoResolverInterface'); + } + + public function setUp() { + parent::setUp(); + } + + public function tearDown() { + parent::tearDown(); + m::close(); + } + + /** + * Just test the setup + * + * @return void + */ + public function testSetUp() { + $this->assertTrue(true); + } + + /** + * resolve french + * @return void + */ + public function testResolveSingleId() { + + $this->setUpSparqlClient(self::LEXVO_FRA_RDF_RESP); + + $resName = $this->lexvoResolver->getName('fra'); + + $this->assertEquals('français', $resName, "Result must be français"); + } + + /** + * resolve french + * @return void + */ + public function testResolveSingleIdFullURL() { + + $this->setUpSparqlClient(self::LEXVO_FRA_RDF_RESP); + + $resName = $this->lexvoResolver->getName('http://lexvo.org/id/iso639-3/fra'); + + $this->assertEquals('français', $resName, "Result must be français"); + } + + /** + * resolve foo + * @return void + */ + public function testResolveBadId() { + + $this->setUpSparqlClient(self::LEXVO_EMPTY_RDF_RESP); + + $resName = $this->lexvoResolver->getName('foo'); + + $this->assertNull($resName, "Result must be null"); + } + + /** + * resolve foo + * @return void + * @expectedException CorpusParole\Services\LexvoResolverException + * @expectedExceptionMessage the provided id "21dsasd;;" is not a Lexvo id + * @expectedExceptionCode 0 + */ + public function testResolveBadFormat() { + + $this->setUpSparqlClient(self::LEXVO_EMPTY_RDF_RESP); + + $resName = $this->lexvoResolver->getName('21dsasd;;'); + } + + /** + * resolve foo + * @return void + * @expectedException CorpusParole\Services\LexvoResolverException + * @expectedExceptionMessage the provided id "http://sdsasd.org/foo" is not a Lexvo id + * @expectedExceptionCode 0 + */ + public function testResolveBadFormatFullId() { + + $this->setUpSparqlClient(self::LEXVO_EMPTY_RDF_RESP); + + $resName = $this->lexvoResolver->getName('http://sdsasd.org/foo'); + } + + + /** + * resolve french + * @return void + */ + public function testResolveMultipleId() { + + $this->setUpSparqlClient(self::LEXVO_FRA_AFR_RDF_RESP); + + $resnames = $this->lexvoResolver->getNames(['fra', 'afr']); + + $this->assertCount(2, $resnames, "Must have 2 results"); + $this->assertArrayHasKey('fra', $resnames); + $this->assertArrayHasKey('afr', $resnames); + + $this->assertEquals('français', $resnames['fra'], "Result for fra must be français"); + $this->assertEquals('afrikaans', $resnames['afr'], "Result for afr must be afrikaans"); + } + + /** + * resolve french + * @return void + */ + public function testResolveMultipleFullId() { + + $this->setUpSparqlClient(self::LEXVO_FRA_AFR_RDF_RESP); + + $resnames = $this->lexvoResolver->getNames(['http://lexvo.org/id/iso639-3/fra', 'http://lexvo.org/id/iso639-3/afr']); + + $this->assertCount(2, $resnames, "Must have 2 results"); + $this->assertArrayHasKey('http://lexvo.org/id/iso639-3/fra', $resnames); + $this->assertArrayHasKey('http://lexvo.org/id/iso639-3/afr', $resnames); + + $this->assertEquals('français', $resnames['http://lexvo.org/id/iso639-3/fra'], "Result for fra must be français"); + $this->assertEquals('afrikaans', $resnames['http://lexvo.org/id/iso639-3/afr'], "Result for afr must be afrikaans"); + } + + /** + * check query + * @return void + */ + public function testQuery() { + + $expectedUri = config('corpusparole.lexvo_sesame_query_url')."?query=PREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0ASELECT+%3Fs+%3Fo+WHERE+%7B%7B%3Chttp%3A%2F%2Flexvo.org%2Fid%2Fiso639-3%2Ffra%3E+rdfs%3Alabel+%3Fo.+%3Fs+rdfs%3Alabel+%3Fo+FILTER%28%3Fs+%3D+%3Chttp%3A%2F%2Flexvo.org%2Fid%2Fiso639-3%2Ffra%3E+%26%26+%28lang%28%3Fo%29+%3D+%22fr%22+%7C%7C+lang%28%3Fo%29+%3D+%22en%22%29%29%7D+UNION+%7B%3Chttp%3A%2F%2Flexvo.org%2Fid%2Fiso639-3%2Fafr%3E+rdfs%3Alabel+%3Fo.+%3Fs+rdfs%3Alabel+%3Fo+FILTER%28%3Fs+%3D+%3Chttp%3A%2F%2Flexvo.org%2Fid%2Fiso639-3%2Fafr%3E+%26%26+%28lang%28%3Fo%29+%3D+%22fr%22+%7C%7C+lang%28%3Fo%29+%3D+%22en%22%29%29%7D%7D"; + $response = m::mock('EasyRdf\Http\Response') + ->shouldReceive('isSuccessful')->andReturn(true) + ->shouldReceive('getBody')->andReturn(self::LEXVO_EMPTY_RDF_RESP) //result not important + ->shouldReceive('getStatus')->andReturn(200) + ->shouldReceive('getHeader')->andReturn('application/sparql-results+json;charset=UTF-8') + ->mock(); + $this->httpClient = m::mock('EasyRdf\Http\Client') + ->shouldReceive('setConfig') + ->shouldReceive('resetParameters') + ->shouldReceive('setHeaders')//->with(m::on(function($headers) { print("HEADER => $headers\n"); return true;}),m::on(function($value) { print("VALUE => $value\n"); return true;})) + ->shouldReceive('setMethod') + ->shouldReceive('setUri') + ->with($expectedUri)//->with(m::on(function($uri) { print($uri."\n"); return true;})) + ->shouldReceive('request')->andReturn($response) + ->mock(); + Http::setDefaultHttpClient($this->httpClient); + $this->lexvoResolver = $this->app->make('CorpusParole\Services\LexvoResolverInterface'); + + $resName = $this->lexvoResolver->getNames(['fra','afr']); + + } + + /** + * check query + * @return void + */ + public function testQueryFullId() { + + $expectedUri = config('corpusparole.lexvo_sesame_query_url')."?query=PREFIX+rdfs%3A+%3Chttp%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23%3E%0ASELECT+%3Fs+%3Fo+WHERE+%7B%7B%3Chttp%3A%2F%2Flexvo.org%2Fid%2Fiso639-3%2Ffra%3E+rdfs%3Alabel+%3Fo.+%3Fs+rdfs%3Alabel+%3Fo+FILTER%28%3Fs+%3D+%3Chttp%3A%2F%2Flexvo.org%2Fid%2Fiso639-3%2Ffra%3E+%26%26+%28lang%28%3Fo%29+%3D+%22fr%22+%7C%7C+lang%28%3Fo%29+%3D+%22en%22%29%29%7D+UNION+%7B%3Chttp%3A%2F%2Flexvo.org%2Fid%2Fiso639-3%2Fafr%3E+rdfs%3Alabel+%3Fo.+%3Fs+rdfs%3Alabel+%3Fo+FILTER%28%3Fs+%3D+%3Chttp%3A%2F%2Flexvo.org%2Fid%2Fiso639-3%2Fafr%3E+%26%26+%28lang%28%3Fo%29+%3D+%22fr%22+%7C%7C+lang%28%3Fo%29+%3D+%22en%22%29%29%7D%7D"; + $response = m::mock('EasyRdf\Http\Response') + ->shouldReceive('isSuccessful')->andReturn(true) + ->shouldReceive('getBody')->andReturn(self::LEXVO_EMPTY_RDF_RESP) //result not important + ->shouldReceive('getStatus')->andReturn(200) + ->shouldReceive('getHeader')->andReturn('application/sparql-results+json;charset=UTF-8') + ->mock(); + $this->httpClient = m::mock('EasyRdf\Http\Client') + ->shouldReceive('setConfig') + ->shouldReceive('resetParameters') + ->shouldReceive('setHeaders')//->with(m::on(function($headers) { print("HEADER => $headers\n"); return true;}),m::on(function($value) { print("VALUE => $value\n"); return true;})) + ->shouldReceive('setMethod') + ->shouldReceive('setUri') + ->with($expectedUri)//->with(m::on(function($uri) { print($uri."\n"); return true;})) + ->shouldReceive('request')->andReturn($response) + ->mock(); + Http::setDefaultHttpClient($this->httpClient); + $this->lexvoResolver = $this->app->make('CorpusParole\Services\LexvoResolverInterface'); + + $resName = $this->lexvoResolver->getNames(['http://lexvo.org/id/iso639-3/fra','http://lexvo.org/id/iso639-3/afr']); + + } + + /** + * resolve french + * @return void + */ + public function testResolveSingleIdNofr() { + + $this->setUpSparqlClient(self::LEXVO_XAG_RDF_RESP); + + $resName = $this->lexvoResolver->getName('xag'); + + $this->assertEquals('aghwan', $resName, "Result must be aghwan"); + } + + /** + * resolve french + * @return void + */ + public function testResolveSingleIdOrderNotFr() { + + $this->setUpSparqlClient(self::LEXVO_XAG2_RDF_RESP); + + $resName = $this->lexvoResolver->getName('xag'); + + $this->assertEquals('aghwan', $resName, "Result must be aghwan"); + } + + /** + * resolve french + * @return void + */ + public function testResolveSingleIdOrder() { + + $this->setUpSparqlClient(self::LEXVO_FRA2_RDF_RESP); + + $resName = $this->lexvoResolver->getName('fra'); + + $this->assertEquals('français', $resName, "Result must be français"); + } + +}