client/src/api/__tests__/WebAnnotationSerializer.test.js
author Alexandre Segura <mex.zktk@gmail.com>
Wed, 28 Jun 2017 13:29:07 +0200
changeset 102 b0e36664f1f2
parent 98 2e939d9cf193
permissions -rw-r--r--
Add TextPositionSelector.
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",
102
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    11
    "text": "Foo",
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    12
    "selection": {
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    13
      "start": 0,
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    14
      "end": 10,
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    15
    },
98
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    16
  };
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    17
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    18
  const comment = {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    19
    "key": "comment",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    20
    "name": "Commentaire",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    21
    "color": "#3498DB",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    22
    "hasComment": true,
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    23
    "comment": "Bar",
102
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    24
    "text": "Baz",
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    25
    "selection": {
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    26
      "start": 0,
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    27
      "end": 10,
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    28
    },
98
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    29
  }
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
  const note = new Note({
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    32
    _id: '123456',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    33
    session: '9876543',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    34
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    35
    plain: 'Foo',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    36
    raw: {},
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    37
    html: '',
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
    startedAt: '',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    40
    finishedAt: '',
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    41
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    42
    categories: [ category, comment ],
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    43
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    44
    marginComment: ''
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    45
  })
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    46
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    47
  const actual = WebAnnotationSerializer.serialize(note);
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    48
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    49
  const expected = [
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    50
    {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    51
      "@context": "http://www.w3.org/ns/anno.jsonld",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    52
      "type": "Annotation",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    53
      "id": 0,
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    54
      "target": {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    55
        "source": "/session/9876543/notes/123456",
102
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    56
        "selector": [
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    57
          {
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    58
            "type": "TextQuoteSelector",
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    59
            "exact": "Foo"
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    60
          },
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    61
          {
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    62
            "type": "TextPositionSelector",
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    63
            "start": 0,
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    64
            "end": 10
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    65
          }
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    66
        ]
98
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    67
      }
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
      "@context": "http://www.w3.org/ns/anno.jsonld",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    71
      "type": "Annotation",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    72
      "id": 1,
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    73
      "body": {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    74
        "type": "TextualBody",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    75
        "value": "Bar",
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    76
        "format": "text/plain"
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    77
      },
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    78
      "target": {
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    79
        "source": "/session/9876543/notes/123456",
102
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    80
        "selector": [
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    81
          {
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    82
            "type": "TextQuoteSelector",
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    83
            "exact": "Baz"
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    84
          },
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    85
          {
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    86
            "type": "TextPositionSelector",
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    87
            "start": 0,
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    88
            "end": 10
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    89
          }
b0e36664f1f2 Add TextPositionSelector.
Alexandre Segura <mex.zktk@gmail.com>
parents: 98
diff changeset
    90
        ]
98
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    91
      }
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    92
    }
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    93
  ];
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    94
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    95
  // console.log(JSON.stringify(actual, null, 2));
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    96
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    97
  expect(actual).toMatchObject(expected);
2e939d9cf193 Introduce WebAnnotationSerializer.
Alexandre Segura <mex.zktk@gmail.com>
parents:
diff changeset
    98
});