diff -r 2b3247d02769 -r f55970e41793 server/src/tests/Repositories/DocumentRepositoryTest.php --- a/server/src/tests/Repositories/DocumentRepositoryTest.php Wed Jun 24 01:36:46 2015 +0200 +++ b/server/src/tests/Repositories/DocumentRepositoryTest.php Mon Oct 05 17:02:10 2015 +0200 @@ -1,12 +1,191 @@ call('GET', '/'); + const TEST_DOC = << . + . + "Extrait des enqu\u00EAtes dialectologiques en vue de constituer un atlas linguistique de l'Alsace."@fr . + "audio/x-wav"^^ . + . + "primary_text"^^ . + "dialogue"^^ . + . + "lexicography"^^ . + "phonetics"^^ . + "anthropological_linguistics"^^ . + . + . + _:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid1 . + _:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid2 . + "Atlas linguistiques, cultures et parlers r\u00E9gionaux de France" . + "Copyright (c) D\u00E9partement de dialectologie alsacienne et mosellane de l'Universit\u00E9 de Strasbourg" . + "Atlas Linguistique et ethnographique de l'Alsace - Enquetes sur la conscience linguistique - ALA_608"@fr . + "Freely available for non-commercial use" . + . + . + . + "PT02H04M16S" . + "start=1980; end=1989; name=ann\u00E9es 80"^^ . + "France, Alsace"@fr . + "FR"^^ . + . + . + "2004-07-03"^^ . + "2014-11-04T16:25:54+01:00"^^ . + . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid1 . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid1 . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid1 "Bothorel-Witz, Arlette" . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid1 "interviewer"^^ . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid1 . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid2 . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid2 . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid2 "Huck, Dominique" . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid2 "interviewer"^^ . +_:genid2d6c3879d9d2484bd98bb0bcb9dd0364fc2dgenid2 . + . +EOT; + + const RES_DOC = << . + @prefix rdfs: . + @prefix sesame: . + @prefix owl: . + @prefix xsd: . + @prefix fn: . + + a ; + "Extrait des enquêtes dialectologiques en vue de constituer un atlas linguistique de l'Alsace."@fr ; + "audio/x-wav"^^ ; + , "primary_text"^^ , "dialogue"^^ ; + , "lexicography"^^ , "phonetics"^^ , "anthropological_linguistics"^^ ; + ; + , _:genid-39d722daa01242edb2da8d2d1e71eae7-ED8A67E3CE4C51EA8EDC4ED1190E161A , _:genid-39d722daa01242edb2da8d2d1e71eae7-FD40C63A1295F7BE6765BB87A70CE839 ; + "Atlas linguistiques, cultures et parlers régionaux de France" ; + "Copyright (c) Département de dialectologie alsacienne et mosellane de l'Université de Strasbourg" ; + "Atlas Linguistique et ethnographique de l'Alsace - Enquetes sur la conscience linguistique - ALA_608"@fr ; + "Freely available for non-commercial use" ; + ; + , ; + "PT02H04M16S" ; + "start=1980; end=1989; name=années 80"^^ ; + "France, Alsace"@fr , "FR"^^ ; + , ; + "2004-07-03"^^ ; + "2014-11-04T16:25:54+01:00"^^ . + + _:genid-39d722daa01242edb2da8d2d1e71eae7-ED8A67E3CE4C51EA8EDC4ED1190E161A a ; + "Bothorel-Witz, Arlette" ; + "interviewer"^^ . + + _:genid-39d722daa01242edb2da8d2d1e71eae7-FD40C63A1295F7BE6765BB87A70CE839 a ; + "Huck, Dominique" ; + "interviewer"^^ . + + . +EOT; + - $this->assertEquals(200, $response->getStatusCode()); + function __construct(string $name = null) { + parent::__construct($name); + } + + public function setUp() { + parent::setUp(); + $this->graph = new EasyRdf\Graph("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-ALA_608", DocumentRepositoryTest::TEST_DOC); + $this->cocoonDocIdBaseUri = config('corpusparole.cocoon_doc_id_base_uri'); + } + + public function tearDown() { + parent::tearDown(); + } + + + public function testAll() { + $expectedId = $this->cocoonDocIdBaseUri.'crdo-ALA_608'; + $returnedArray = [ + m::mock('resObj', function($mock) use (&$expectedId) { + $mock->uri = new EasyRdf\Resource($expectedId); + }), + ]; + + $sparqlClientMock = m::mock('CorpusParole\Libraries\Sparql\SparqlClient'); + $sparqlClientMock->shouldReceive('query')->andReturn($returnedArray); + + $documentRepository = $this->app->make('CorpusParole\Repositories\RdfDocumentRepository', [$sparqlClientMock]); + + $res = $documentRepository->all(); + + $this->assertCount(1, $res, "Should have 1 doc in res"); + $resDoc = $res[0]; + + $this->assertInstanceOf(Document::class, $resDoc, "Res doc must be a Document"); + $this->assertEquals('crdo-ALA_608', $resDoc->getId(), "id must be crdo..."); + $this->assertEquals($expectedId, $resDoc->getUri(), 'url must be ...'); + $this->assertNull($resDoc->getGraph(), 'Graph must be null'); + } + + public function testGet() { + + $expectedId = $this->cocoonDocIdBaseUri.'crdo-ALA_608'; + $returnedGraph = new EasyRdf\Graph($expectedId, DocumentRepositoryTest::RES_DOC); + + $sparqlClientMock = m::mock('CorpusParole\Libraries\Sparql\SparqlClient'); + $sparqlClientMock->shouldReceive('query')->with(containsString($expectedId)) + ->andReturn($returnedGraph); + $documentRepository = $this->app->make('CorpusParole\Repositories\RdfDocumentRepository', [$sparqlClientMock]); + + $res = $documentRepository->get('crdo-ALA_608'); + + $this->assertInstanceOf(Document::class, $res, "Result must be of type Document"); + $this->assertEquals('crdo-ALA_608', $res->getId(), 'id should be crdo-ALA_608' ); + $this->assertNotNull($res->getGraph(), "Graph shoul not be null"); + $this->assertTrue(EasyRdf\Isomorphic::isomorphic($res->getGraph(), new EasyRdf\Graph($expectedId, DocumentRepositoryTest::RES_DOC))); + } + + public function testSave() { + + $sparqlClientMock = m::mock('CorpusParole\Libraries\Sparql\SparqlClient', function($mock) { + $mock->shouldReceive('startTransaction')->andReturn(true) + ->shouldReceive('delete')->shouldReceive('add') + ->shouldReceive('commit')->andReturn(true); + }); + $documentRepository = $this->app->make('CorpusParole\Repositories\RdfDocumentRepository', [$sparqlClientMock]); + + + $doc = new Document("http://purl.org/poi/crdo.vjf.cnrs.fr/crdo-ALA_608", $this->graph); + $doc->updateDiscourseTypes(['oratory','drama','narrative']); + + $res = $documentRepository->save($doc); + + $this->assertTrue($res, 'Has started a transaction'); + + } + + public function testCount() { + + $returnedCount = [ + m::mock('resObj', function($mock) { + $mock->count = new EasyRdf\Literal(1); + }), + ]; + + $sparqlClientMock = m::mock('CorpusParole\Libraries\Sparql\SparqlClient'); + $sparqlClientMock->shouldReceive('query')->with(containsString("COUNT")) + ->andReturn($returnedCount); + $documentRepository = $this->app->make('CorpusParole\Repositories\RdfDocumentRepository', [$sparqlClientMock]); + + + } }