|
|
@@ -0,0 +1,119 @@
|
|
|
+const { expect } = require('chai')
|
|
|
+const { exec } = require('child_process')
|
|
|
+const { ObjectId } = require('../../../app/src/infrastructure/mongojs')
|
|
|
+
|
|
|
+const User = require('./helpers/User').promises
|
|
|
+
|
|
|
+describe('ConvertArchivedState', function() {
|
|
|
+ let userOne, userTwo, userThree, userFour
|
|
|
+ let projectOne, projectOneId
|
|
|
+ let projectTwo, projectTwoId
|
|
|
+ let projectThree, projectThreeId
|
|
|
+ let projectFour, projectFourId
|
|
|
+
|
|
|
+ beforeEach(async function() {
|
|
|
+ userOne = new User()
|
|
|
+ userTwo = new User()
|
|
|
+ userThree = new User()
|
|
|
+ userFour = new User()
|
|
|
+ await userOne.login()
|
|
|
+ await userTwo.login()
|
|
|
+ await userThree.login()
|
|
|
+ await userFour.login()
|
|
|
+
|
|
|
+ projectOneId = await userOne.createProject('old-archived-1', {
|
|
|
+ template: 'blank'
|
|
|
+ })
|
|
|
+
|
|
|
+ projectOne = await userOne.getProject(projectOneId)
|
|
|
+ projectOne.archived = true
|
|
|
+ projectOne.collaberator_refs.push(userTwo._id)
|
|
|
+ projectOne.tokenAccessReadOnly_refs.push(userThree._id)
|
|
|
+
|
|
|
+ await userOne.saveProject(projectOne)
|
|
|
+
|
|
|
+ projectTwoId = await userOne.createProject('old-archived-2', {
|
|
|
+ template: 'blank'
|
|
|
+ })
|
|
|
+
|
|
|
+ projectTwo = await userOne.getProject(projectTwoId)
|
|
|
+ projectTwo.archived = true
|
|
|
+ projectTwo.tokenAccessReadAndWrite_refs.push(userThree._id)
|
|
|
+ projectTwo.tokenAccessReadOnly_refs.push(userFour._id)
|
|
|
+
|
|
|
+ await userOne.saveProject(projectTwo)
|
|
|
+
|
|
|
+ projectThreeId = await userOne.createProject('already-new-archived', {
|
|
|
+ template: 'blank'
|
|
|
+ })
|
|
|
+ projectThree = await userOne.getProject(projectThreeId)
|
|
|
+ projectThree.archived = [
|
|
|
+ ObjectId(userOne._id),
|
|
|
+ ObjectId(userTwo._id),
|
|
|
+ ObjectId(userFour._id)
|
|
|
+ ]
|
|
|
+ projectThree.collaberator_refs.push(userTwo._id)
|
|
|
+ projectThree.tokenAccessReadOnly_refs.push(userFour._id)
|
|
|
+
|
|
|
+ await userOne.saveProject(projectThree)
|
|
|
+
|
|
|
+ projectFourId = await userOne.createProject('not-archived', {
|
|
|
+ template: 'blank'
|
|
|
+ })
|
|
|
+ projectFour = await userOne.getProject(projectFourId)
|
|
|
+ projectFour.archived = false
|
|
|
+
|
|
|
+ await userOne.saveProject(projectFour)
|
|
|
+ })
|
|
|
+
|
|
|
+ beforeEach(function(done) {
|
|
|
+ exec('node scripts/convert_archived_state.js', (error, stdout, stderr) => {
|
|
|
+ console.log(stdout)
|
|
|
+ console.error(stderr)
|
|
|
+ if (error) {
|
|
|
+ return done(error)
|
|
|
+ }
|
|
|
+ done()
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ describe('main method', function() {
|
|
|
+ it('should change a project archived boolean to an array', async function() {
|
|
|
+ projectOne = await userOne.getProject(projectOneId)
|
|
|
+ projectTwo = await userOne.getProject(projectTwoId)
|
|
|
+ expect(convertObjectIdsToStrings(projectOne.archived)).to.deep.equal([
|
|
|
+ userOne._id,
|
|
|
+ userTwo._id,
|
|
|
+ userThree._id
|
|
|
+ ])
|
|
|
+
|
|
|
+ expect(convertObjectIdsToStrings(projectTwo.archived)).to.deep.equal([
|
|
|
+ userOne._id,
|
|
|
+ userThree._id,
|
|
|
+ userFour._id
|
|
|
+ ])
|
|
|
+ })
|
|
|
+
|
|
|
+ it('should not change the value of a project already archived with an array', async function() {
|
|
|
+ projectThree = await userOne.getProject(projectThreeId)
|
|
|
+ expect(convertObjectIdsToStrings(projectThree.archived)).to.deep.equal([
|
|
|
+ userOne._id,
|
|
|
+ userTwo._id,
|
|
|
+ userFour._id
|
|
|
+ ])
|
|
|
+ })
|
|
|
+
|
|
|
+ it('should change a none-archived project with a boolean value to an array', async function() {
|
|
|
+ projectFour = await userOne.getProject(projectFourId)
|
|
|
+ expect(convertObjectIdsToStrings(projectFour.archived)).to.deep.equal([])
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ function convertObjectIdsToStrings(ids) {
|
|
|
+ if (typeof ids === 'object') {
|
|
|
+ return ids.map(id => {
|
|
|
+ return id.toString()
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+})
|