| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- 'use strict'
- const { expect } = require('chai')
- const {
- File,
- Snapshot,
- TextOperation,
- Change,
- EditFileOperation,
- } = require('../..')
- describe('Snapshot', function () {
- describe('findBlobHashes', function () {
- it('finds blob hashes from files', function () {
- const snapshot = new Snapshot()
- const blobHashes = new Set()
- snapshot.findBlobHashes(blobHashes)
- expect(blobHashes.size).to.equal(0)
- // Add a file without a hash.
- snapshot.addFile('foo', File.fromString(''))
- snapshot.findBlobHashes(blobHashes)
- expect(blobHashes.size).to.equal(0)
- // Add a file with a hash.
- snapshot.addFile('bar', File.fromHash(File.EMPTY_FILE_HASH))
- snapshot.findBlobHashes(blobHashes)
- expect(Array.from(blobHashes)).to.have.members([File.EMPTY_FILE_HASH])
- })
- })
- describe('editFile', function () {
- let snapshot
- let operation
- beforeEach(function () {
- snapshot = new Snapshot()
- snapshot.addFile('hello.txt', File.fromString('hello'))
- operation = new TextOperation()
- operation.retain(5)
- operation.insert(' world!')
- })
- it('applies text operations to the file', function () {
- snapshot.editFile('hello.txt', operation)
- const file = snapshot.getFile('hello.txt')
- expect(file.getContent()).to.equal('hello world!')
- })
- it('rejects text operations for nonexistent file', function () {
- expect(() => {
- snapshot.editFile('does-not-exist.txt', operation)
- }).to.throw(Snapshot.EditMissingFileError)
- })
- })
- describe('applyAll', function () {
- let snapshot
- let change
- beforeEach(function () {
- snapshot = new Snapshot()
- snapshot.addFile('empty.txt', File.fromString(''))
- const badTextOp = new TextOperation()
- badTextOp.insert('FAIL!')
- const goodTextOp = new TextOperation()
- goodTextOp.insert('SUCCESS!')
- change = new Change(
- [
- new EditFileOperation('missing.txt', badTextOp),
- new EditFileOperation('empty.txt', goodTextOp),
- ],
- new Date()
- )
- })
- it('ignores recoverable errors', function () {
- snapshot.applyAll([change])
- const file = snapshot.getFile('empty.txt')
- expect(file.getContent()).to.equal('SUCCESS!')
- })
- it('stops on recoverable errors in strict mode', function () {
- expect(() => {
- snapshot.applyAll([change], { strict: true })
- }).to.throw(Snapshot.EditMissingFileError)
- const file = snapshot.getFile('empty.txt')
- expect(file.getContent()).to.equal('')
- })
- })
- })
|