--- a/server/src/tests/Models/DocumentTest.php Thu Mar 03 17:34:12 2016 +0100
+++ b/server/src/tests/Models/DocumentTest.php Fri Mar 04 10:08:52 2016 +0100
@@ -125,6 +125,24 @@
}
+ public function testSetModified() {
+ $currentTime = gmdate(DateTime::ATOM);
+ $doc = new Document("http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND", $this->graph);
+ $doc->setModified($currentTime);
+ $this->assertInstanceOf(EasyRdf\Literal::class, $doc->getModified(), "Modified must be a literal");
+ $this->assertEquals("http://purl.org/dc/terms/W3CDTF", $doc->getModified()->getDatatypeURI(), "type must be http://purl.org/dc/terms/W3CDTF");
+ $this->assertEquals(preg_replace('/[\+\-]00(\:?)00$/', 'Z', $currentTime), $doc->getModified()->getValue(), "modified must be $currentTime");
+ }
+
+ public function testSetModifiedNull() {
+ $doc = new Document("http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND", $this->graph);
+ $doc->setModified();
+ $this->assertInstanceOf(EasyRdf\Literal::class, $doc->getModified(), "Modified must be a literal");
+ $this->assertEquals("http://purl.org/dc/terms/W3CDTF", $doc->getModified()->getDatatypeURI(), "type must be http://purl.org/dc/terms/W3CDTF");
+ $foundDateTime = \DateTime::createFromFormat(\DateTime::ATOM, $doc->getModified()->getValue());
+ $nowUTC = new \DateTime('now', new \DateTimeZone("UTC"));
+ $this->assertTrue($nowUTC->getTimestamp() - $foundDateTime->getTimestamp() < 2, "must have less than 2 seconds diff");
+ }
public function testPublisher() {
@@ -431,7 +449,7 @@
$subjects = $doc->getSubjects();
- $this->assertCount(28, $subjects, "Must have 15 subjects");
+ $this->assertCount(28, $subjects, "Must have 28 subjects");
foreach ($doc->getSubjects() as $s) {
$this->assertThat(
@@ -444,4 +462,42 @@
}
}
+ public function testSetSubjects() {
+ $doc = new Document("http://corpusdelaparole.huma-num.fr/corpus/res/crdo-CFPP2000_35_SOUND", $this->graph);
+
+ $newSubjects = [
+ "http://ark.bnf.fr/ark:/12148/cb13318415c",
+ "http://ark.bnf.fr/ark:/12148/cb133188907",
+ "http://ark.bnf.fr/ark:/12148/cb11932762f",
+ "http://ark.bnf.fr/ark:/12148/cb133183660",
+ "http://ark.bnf.fr/ark:/12148/cb122368540",
+ "http://ark.bnf.fr/ark:/12148/cb119418302",
+ "http://ark.bnf.fr/ark:/12148/cb135540729",
+ "http://ark.bnf.fr/ark:/12148/cb133192210",
+ "http://ark.bnf.fr/ark:/12148/cb119377452",
+ "http://ark.bnf.fr/ark:/12148/cb13320451h",
+ "http://ark.bnf.fr/ark:/12148/cb13318422n",
+ "http://ark.bnf.fr/ark:/12148/cb11975823c"
+ ];
+
+ $doc->setSubjects($newSubjects);
+
+ $this->assertTrue($doc->isDirty(), "The document must have changed");
+
+ $subjects = $doc->getSubjects();
+
+ $this->assertCount(12, $subjects, "Must have 12 subjects");
+
+ foreach ($doc->getSubjects() as $s) {
+ $this->assertInstanceOf('EasyRdf\Resource', $s, "Mustbe a Resource");
+ $this->assertTrue(strrpos($s->getUri(), "http://ark.bnf.fr/ark:/12148/cb") === 0, "Must start with http://ark.bnf.fr/ark:/12148/cb");
+ $this->assertContains($s->getUri(), $newSubjects, "$s must be in new subjects list");
+ if(($key = array_search($s->getUri(), $newSubjects)) !== false) {
+ unset($newSubjects[$key]);
+ }
+ }
+ $this->assertEmpty($newSubjects, "all subjects must have been removed");
+ }
+
+
}