| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- const { expect } = require('chai')
- const EditOperationBuilder = require('../lib/operation/edit_operation_builder')
- const TextOperation = require('../lib/operation/text_operation')
- const EditOperationTransformer = require('../lib/operation/edit_operation_transformer')
- const EditOperation = require('../lib/operation/edit_operation')
- const randomTextOperation = require('./support/random_text_operation')
- const random = require('./support/random')
- describe('EditOperation', function () {
- it('Cannot be instantiated', function () {
- expect(() => new EditOperation()).to.throw(
- 'Cannot instantiate abstract class'
- )
- })
- })
- describe('EditOperationTransformer', function () {
- it('Transforms two TextOperations', function () {
- const a = new TextOperation().insert('foo')
- const b = new TextOperation().insert('bar')
- const [aPrime, bPrime] = EditOperationTransformer.transform(a, b)
- expect(aPrime).to.be.an.instanceof(TextOperation)
- expect(bPrime).to.be.an.instanceof(TextOperation)
- })
- })
- describe('EditOperationBuilder', function () {
- it('Constructs TextOperation from JSON', function () {
- const raw = {
- textOperation: [1, 'foo', 3],
- }
- const op = EditOperationBuilder.fromJSON(raw)
- expect(op).to.be.an.instanceof(TextOperation)
- expect(op.toJSON()).to.deep.equal(raw)
- })
- it('Throws error for unsupported operation', function () {
- const raw = {
- unsupportedOperation: {
- op: 'foo',
- },
- }
- expect(() => EditOperationBuilder.fromJSON(raw)).to.throw(
- 'Unsupported operation in EditOperationBuilder.fromJSON'
- )
- })
- it('Constructs TextOperation from JSON (randomised)', function () {
- const str = random.string(50)
- const randomOperation = randomTextOperation(str)
- const op = EditOperationBuilder.fromJSON(randomOperation.toJSON())
- expect(op).to.be.an.instanceof(TextOperation)
- expect(op.equals(randomOperation)).to.be.true
- })
- })
|