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.

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);
});