| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- const sinon = require('sinon')
- const { setTimeout } = require('node:timers/promises')
- const MockWebApi = require('./helpers/MockWebApi')
- const DocUpdaterClient = require('./helpers/DocUpdaterClient')
- const DocUpdaterApp = require('./helpers/DocUpdaterApp')
- describe('Flushing a project', function () {
- before(async function () {
- this.project_id = DocUpdaterClient.randomId()
- const docId0 = DocUpdaterClient.randomId()
- const docId1 = DocUpdaterClient.randomId()
- this.docs = [
- {
- id: docId0,
- lines: ['one', 'two', 'three'],
- update: {
- doc: docId0,
- op: [
- {
- i: 'one and a half\n',
- p: 4,
- },
- ],
- v: 0,
- },
- updatedLines: ['one', 'one and a half', 'two', 'three'],
- },
- {
- id: docId1,
- lines: ['four', 'five', 'six'],
- update: {
- doc: docId1,
- op: [
- {
- i: 'four and a half\n',
- p: 5,
- },
- ],
- v: 0,
- },
- updatedLines: ['four', 'four and a half', 'five', 'six'],
- },
- ]
- for (const doc of this.docs) {
- MockWebApi.insertDoc(this.project_id, doc.id, {
- lines: doc.lines,
- version: doc.update.v,
- })
- }
- await DocUpdaterApp.ensureRunning()
- })
- describe('with documents which have been updated', function () {
- before(async function () {
- sinon.spy(MockWebApi, 'setDocument')
- for (const doc of this.docs) {
- await DocUpdaterClient.preloadDoc(this.project_id, doc.id)
- await DocUpdaterClient.sendUpdate(this.project_id, doc.id, doc.update)
- }
- await setTimeout(200)
- const res = await DocUpdaterClient.flushProject(this.project_id)
- this.statusCode = res.status
- })
- after(function () {
- MockWebApi.setDocument.restore()
- })
- it('should return a 204 status code', function () {
- this.statusCode.should.equal(204)
- })
- it('should send each document to the web api', function () {
- for (const doc of this.docs) {
- MockWebApi.setDocument
- .calledWith(this.project_id, doc.id, doc.updatedLines)
- .should.equal(true)
- }
- })
- it('should update the lines in the doc updater', async function () {
- for (const doc of this.docs) {
- const returnedDoc = await DocUpdaterClient.getDoc(
- this.project_id,
- doc.id
- )
- returnedDoc.lines.should.deep.equal(doc.updatedLines)
- }
- })
- })
- })
|