mirror of
https://github.com/overleaf/overleaf.git
synced 2024-10-17 21:05:04 -04:00
56 lines
1.9 KiB
JavaScript
56 lines
1.9 KiB
JavaScript
|
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.ops).to.deep.equal([1, 'foo', 3])
|
||
|
})
|
||
|
|
||
|
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
|
||
|
})
|
||
|
})
|