ConvertArchivedState.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. const { expect } = require('chai')
  2. const { exec } = require('child_process')
  3. const { ObjectId } = require('../../../app/src/infrastructure/mongojs')
  4. const User = require('./helpers/User').promises
  5. describe('ConvertArchivedState', function() {
  6. let userOne, userTwo, userThree, userFour
  7. let projectOne, projectOneId
  8. let projectTwo, projectTwoId
  9. let projectThree, projectThreeId
  10. let projectFour, projectFourId
  11. beforeEach(async function() {
  12. userOne = new User()
  13. userTwo = new User()
  14. userThree = new User()
  15. userFour = new User()
  16. await userOne.login()
  17. await userTwo.login()
  18. await userThree.login()
  19. await userFour.login()
  20. projectOneId = await userOne.createProject('old-archived-1', {
  21. template: 'blank'
  22. })
  23. projectOne = await userOne.getProject(projectOneId)
  24. projectOne.archived = true
  25. projectOne.collaberator_refs.push(userTwo._id)
  26. projectOne.tokenAccessReadOnly_refs.push(userThree._id)
  27. await userOne.saveProject(projectOne)
  28. projectTwoId = await userOne.createProject('old-archived-2', {
  29. template: 'blank'
  30. })
  31. projectTwo = await userOne.getProject(projectTwoId)
  32. projectTwo.archived = true
  33. projectTwo.tokenAccessReadAndWrite_refs.push(userThree._id)
  34. projectTwo.tokenAccessReadOnly_refs.push(userFour._id)
  35. await userOne.saveProject(projectTwo)
  36. projectThreeId = await userOne.createProject('already-new-archived', {
  37. template: 'blank'
  38. })
  39. projectThree = await userOne.getProject(projectThreeId)
  40. projectThree.archived = [
  41. ObjectId(userOne._id),
  42. ObjectId(userTwo._id),
  43. ObjectId(userFour._id)
  44. ]
  45. projectThree.collaberator_refs.push(userTwo._id)
  46. projectThree.tokenAccessReadOnly_refs.push(userFour._id)
  47. await userOne.saveProject(projectThree)
  48. projectFourId = await userOne.createProject('not-archived', {
  49. template: 'blank'
  50. })
  51. projectFour = await userOne.getProject(projectFourId)
  52. projectFour.archived = false
  53. await userOne.saveProject(projectFour)
  54. })
  55. beforeEach(function(done) {
  56. exec(
  57. 'CONNECT_DELAY=1 node scripts/convert_archived_state.js',
  58. (error, stdout, stderr) => {
  59. console.log(stdout)
  60. console.error(stderr)
  61. if (error) {
  62. return done(error)
  63. }
  64. done()
  65. }
  66. )
  67. })
  68. describe('main method', function() {
  69. it('should change a project archived boolean to an array', async function() {
  70. projectOne = await userOne.getProject(projectOneId)
  71. projectTwo = await userOne.getProject(projectTwoId)
  72. expect(convertObjectIdsToStrings(projectOne.archived)).to.deep.equal([
  73. userOne._id,
  74. userTwo._id,
  75. userThree._id
  76. ])
  77. expect(convertObjectIdsToStrings(projectTwo.archived)).to.deep.equal([
  78. userOne._id,
  79. userThree._id,
  80. userFour._id
  81. ])
  82. })
  83. it('should not change the value of a project already archived with an array', async function() {
  84. projectThree = await userOne.getProject(projectThreeId)
  85. expect(convertObjectIdsToStrings(projectThree.archived)).to.deep.equal([
  86. userOne._id,
  87. userTwo._id,
  88. userFour._id
  89. ])
  90. })
  91. it('should change a none-archived project with a boolean value to an array', async function() {
  92. projectFour = await userOne.getProject(projectFourId)
  93. expect(convertObjectIdsToStrings(projectFour.archived)).to.deep.equal([])
  94. })
  95. })
  96. function convertObjectIdsToStrings(ids) {
  97. if (typeof ids === 'object') {
  98. return ids.map(id => {
  99. return id.toString()
  100. })
  101. }
  102. }
  103. })