server/src/tests/Models/DocumentTest.php
changeset 168 17f10b56c079
parent 143 023b6d467566
child 169 8fddc113095e
--- a/server/src/tests/Models/DocumentTest.php	Thu Jun 02 18:16:17 2016 +0200
+++ b/server/src/tests/Models/DocumentTest.php	Thu Jun 02 18:24:19 2016 +0200
@@ -156,47 +156,37 @@
     public function testMediaArray() {
         $doc = new Document(config('corpusparole.corpus_doc_id_base_uri')."crdo-CFPP2000_35_SOUND", $this->graph);
 
-        $this->assertCount(4, $doc->getMediaArray(), "Media array must be of size 4");
+        $this->assertCount(3, $doc->getMediaArray(), "Media array must be of size 3");
         //print_r($doc->getMediaArray());
-        foreach($doc->getMediaArray() as $url => $media) {
-            $this->assertArrayHasKey('format', $media, "media has 'format key'");
-            $this->assertArrayHasKey('url', $media, "media has url");
-            $this->assertCount(5, $media, "media is a 4 element array");
-            $this->assertArrayHasKey('extent', $media, "media has extent");
-            $this->assertArrayHasKey('extent_ms', $media, "media has extent_ms");
-            $this->assertArrayHasKey('master', $media, "media has master");
+        foreach($doc->getMediaArray() as $media) {
+            $this->assertInstanceOf('CorpusParole\Models\MediaResource', $media, "media msute of type MediaResource");
+            // $this->assertArrayHasKey('format', $media, "media has 'format key'");
+            // $this->assertArrayHasKey('url', $media, "media has url");
+            // $this->assertCount(5, $media, "media is a 4 element array");
+            // $this->assertArrayHasKey('extent', $media, "media has extent");
+            // $this->assertArrayHasKey('extent_ms', $media, "media has extent_ms");
+            // $this->assertArrayHasKey('master', $media, "media has master");
 
-            $this->assertEquals($media['url'], $url);
+            //$this->assertEquals($media['url'], $url);
 
             $this->assertContains(
-                $media['url'],
+                $media->getUrl(),
                 [ "http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.wav",
                   "http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.mp3",
-                  "http://cocoon.huma-num.fr/exist/crdo/cfpp2000/fra/Ozgur_Kilic_H_32_alii_3e-2.xml",
                   "http://cocoon.huma-num.fr/data/archi/masters/372593.wav"
                 ]
             );
-            if($url === "http://cocoon.huma-num.fr/data/archi/masters/372593.wav") {
-                $this->assertEquals('audio/x-wav', $media['format']);
-                $this->assertTrue($media['master'] === true, "should be master");
+            if($media->getUrl() === "http://cocoon.huma-num.fr/data/archi/masters/372593.wav") {
+                $this->assertEquals('audio/x-wav', $media->getFormat());
+                $this->assertTrue($media->isMaster() === true, "should be master");
             }
             else {
-                $this->assertTrue($media['master'] === false, "should not be master");
+                $this->assertTrue($media->isMaster() === false, "should not be master");
             }
 
-            if( $url === "http://cocoon.huma-num.fr/data/archi/masters/372593.wav" ||
-                $url === "http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.mp3" ||
-                $url === "http://cocoon.huma-num.fr/data/cfpp2000/Ozgur_Kilic_H_32_alii_3e-2.wav" ) {
-                $this->assertEquals("PT48M26S", $media['extent'], "extent is PT48M26S");
-                $this->assertGreaterThan(0, $media['extent_ms'], "extent_ms must be > 0");
-                $this->assertStringStartsWith('audio/', $media['format']);
-            }
-            else {
-                $this->assertNull($media['extent'], "no media extent");
-                $this->assertNull($media['extent_ms'], "extend in ms is null");
-                $this->assertStringStartsWith('application/', $media['format']);
-            }
-
+            $this->assertEquals("PT48M26S", $media->getExtent(), "extent is PT48M26S");
+            $this->assertGreaterThan(0, $media->getExtentMs(), "extent_ms must be > 0");
+            $this->assertStringStartsWith('audio/', $media->getFormat());
         }
     }
 
@@ -499,5 +489,22 @@
         $this->assertEmpty($newSubjects, "all subjects must have been removed");
     }
 
+    //TODO: test null transcript + null media array
+    public function testJsonSerialize() {
+        $doc = new Document(config('corpusparole.corpus_doc_id_base_uri')."crdo-CFPP2000_35_SOUND", $this->graph);
+
+        $json = $doc->jsonSerialize();
+
+        $this->assertTrue(is_array($json), 'Returned json must be an array');
+        $this->assertEquals(
+            ["id", "uri", "title", "language", "modified", "issued", "publishers", "contributors", "subjects", "transcript", "mediaArray"],
+            array_keys($json)
+        );
+        $this->assertEquals(sprintf('%1$s/crdo-CFPP2000_35_SOUNDid', config('corpusparole.handle_prefix')), $json['id']);
+        $this->assertTrue(is_array($json['transcript']));
+        $this->assertTrue(is_array($json['mediaArray']));
+
+    }
+
 
 }