client/src/api/__tests__/WebAnnotationSerializer.test.js
author Alexandre Segura <mex.zktk@gmail.com>
Tue, 27 Jun 2017 13:12:19 +0200
changeset 98 2e939d9cf193
child 102 b0e36664f1f2
permissions -rw-r--r--
Introduce WebAnnotationSerializer.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
98
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     1
import Note from '../../store/noteRecord';
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     2
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     3
import WebAnnotationSerializer from '../WebAnnotationSerializer';
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     4
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     5
it('serializes as expected', () => {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     6
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     7
  const category = {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     8
    "key": "keyword",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
     9
    "name": "Mot-clé",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    10
    "color": "#2ECC71",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    11
    "text": "Foo"
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    12
  };
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    13
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    14
  const comment = {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    15
    "key": "comment",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    16
    "name": "Commentaire",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    17
    "color": "#3498DB",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    18
    "hasComment": true,
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    19
    "comment": "Bar",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    20
    "text": "Baz"
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    21
  }
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    22
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    23
  const note = new Note({
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    24
    _id: '123456',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    25
    session: '9876543',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    26
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    27
    plain: 'Foo',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    28
    raw: {},
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    29
    html: '',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    30
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    31
    startedAt: '',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    32
    finishedAt: '',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    33
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    34
    categories: [ category, comment ],
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    35
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    36
    marginComment: ''
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    37
  })
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    38
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    39
  const actual = WebAnnotationSerializer.serialize(note);
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    40
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    41
  const expected = [
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    42
    {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    43
      "@context": "http://www.w3.org/ns/anno.jsonld",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    44
      "type": "Annotation",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    45
      "id": 0,
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    46
      "target": {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    47
        "source": "/session/9876543/notes/123456",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    48
        "selector": {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    49
          "type": "TextQuoteSelector",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    50
          "exact": "Foo"
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    51
        }
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    52
      }
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    53
    },
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    54
    {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    55
      "@context": "http://www.w3.org/ns/anno.jsonld",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    56
      "type": "Annotation",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    57
      "id": 1,
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    58
      "body": {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    59
        "type": "TextualBody",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    60
        "value": "Bar",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    61
        "format": "text/plain"
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    62
      },
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    63
      "target": {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    64
        "source": "/session/9876543/notes/123456",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    65
        "selector": {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    66
          "type": "TextQuoteSelector",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    67
          "exact": "Baz"
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    68
        }
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    69
      }
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    70
    }
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    71
  ];
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    72
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    73
  // console.log(JSON.stringify(actual, null, 2));
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    74
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    75
  expect(actual).toMatchObject(expected);
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    76
});