import mongoose from 'mongoose' import Sheet from '../sheet' describe('[Models] Sheet Model', () => { it('implements optimistic concurrency control', async () => { const sheet = new Sheet({ title: 'Test Sheet', owner: new mongoose.Types.ObjectId().toHexString() }) await sheet.save() const copies = [ await Sheet.findById(sheet.id), await Sheet.findById(sheet.id) ] copies[0].set({ title: 'Updated Title' }) copies[1].set({ title: 'Updated Title' }) await copies[0].save() try { await copies[1].save() } catch { return } throw new Error('Sheet was saved when it should not have been') }) it('increments the version number on update', async () => { const sheet = new Sheet({ title: 'Test Sheet', owner: new mongoose.Types.ObjectId().toHexString() }) await sheet.save() expect(sheet.version).toEqual(0) await sheet.save() expect(sheet.version).toEqual(1) await sheet.save() expect(sheet.version).toEqual(2) }) })