BatchedUpdateTests.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. const { spawnSync } = require('child_process')
  2. const { expect } = require('chai')
  3. const { db, ObjectId } = require('../../../app/src/infrastructure/mongodb')
  4. describe('BatchedUpdateTests', function () {
  5. it('can handle non linear insert order', async function () {
  6. await db.systemmessages.insertOne({
  7. content: '1',
  8. _id: new ObjectId('500000000000000000000000'),
  9. })
  10. await db.systemmessages.insertOne({
  11. content: '2',
  12. _id: new ObjectId('400000000000000000000000'),
  13. })
  14. await db.systemmessages.insertOne({
  15. content: '3',
  16. _id: new ObjectId('600000000000000000000000'),
  17. })
  18. await db.systemmessages.insertOne({
  19. content: '4',
  20. _id: new ObjectId('300000000000000000000000'),
  21. })
  22. spawnSync(process.argv0, [
  23. '-e',
  24. 'require("./scripts/helpers/batchedUpdate").batchedUpdateWithResultHandling("systemmessages", { content: { $ne: "42" }}, { $set: { content: "42" } })',
  25. ])
  26. await expect(
  27. db.systemmessages.find({}).project({ content: 1, _id: 0 }).toArray()
  28. ).to.eventually.deep.equal([
  29. { content: '42' },
  30. { content: '42' },
  31. { content: '42' },
  32. { content: '42' },
  33. ])
  34. })
  35. })