client/src/api/__tests__/WebAnnotationSerializer.test.js
changeset 98 2e939d9cf193
child 102 b0e36664f1f2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/client/src/api/__tests__/WebAnnotationSerializer.test.js	Tue Jun 27 13:12:19 2017 +0200
@@ -0,0 +1,76 @@
+import Note from '../../store/noteRecord';
+
+import WebAnnotationSerializer from '../WebAnnotationSerializer';
+
+it('serializes as expected', () => {
+
+  const category = {
+    "key": "keyword",
+    "name": "Mot-clé",
+    "color": "#2ECC71",
+    "text": "Foo"
+  };
+
+  const comment = {
+    "key": "comment",
+    "name": "Commentaire",
+    "color": "#3498DB",
+    "hasComment": true,
+    "comment": "Bar",
+    "text": "Baz"
+  }
+
+  const note = new Note({
+    _id: '123456',
+    session: '9876543',
+
+    plain: 'Foo',
+    raw: {},
+    html: '',
+
+    startedAt: '',
+    finishedAt: '',
+
+    categories: [ category, comment ],
+
+    marginComment: ''
+  })
+
+  const actual = WebAnnotationSerializer.serialize(note);
+
+  const expected = [
+    {
+      "@context": "http://www.w3.org/ns/anno.jsonld",
+      "type": "Annotation",
+      "id": 0,
+      "target": {
+        "source": "/session/9876543/notes/123456",
+        "selector": {
+          "type": "TextQuoteSelector",
+          "exact": "Foo"
+        }
+      }
+    },
+    {
+      "@context": "http://www.w3.org/ns/anno.jsonld",
+      "type": "Annotation",
+      "id": 1,
+      "body": {
+        "type": "TextualBody",
+        "value": "Bar",
+        "format": "text/plain"
+      },
+      "target": {
+        "source": "/session/9876543/notes/123456",
+        "selector": {
+          "type": "TextQuoteSelector",
+          "exact": "Baz"
+        }
+      }
+    }
+  ];
+
+  // console.log(JSON.stringify(actual, null, 2));
+
+  expect(actual).toMatchObject(expected);
+});