Explorar o código

Merge pull request #9339 from overleaf/jpa-script-rename-tag

[web] server-ce-scripts: add script for renaming a tag

GitOrigin-RevId: 4137fcf7410a5043fa1c1ef1a1694f6c5ad6059a
Miguel Serrano %!s(int64=4) %!d(string=hai) anos
pai
achega
4cfbee15df

+ 33 - 0
services/web/modules/server-ce-scripts/scripts/rename-tag.js

@@ -0,0 +1,33 @@
+const minimist = require('minimist')
+const { db, waitForDb } = require('../../../app/src/infrastructure/mongodb')
+
+async function main() {
+  await waitForDb()
+
+  const argv = minimist(process.argv.slice(2), {
+    string: ['user-id', 'old-name', 'new_name'],
+  })
+
+  const { 'user-id': userId, 'old-name': oldName, 'new-name': newName } = argv
+  if (!userId || !oldName || !newName) {
+    console.error(
+      `Usage: node ${__filename} --user-id=5a9414f259776c7900b300e6 --old-name=my-folder --new-name=my-folder-renamed`
+    )
+    process.exit(101)
+  }
+
+  await db.tags.updateOne(
+    { name: oldName, user_id: userId },
+    { $set: { name: newName } }
+  )
+}
+
+main()
+  .then(() => {
+    console.error('Done.')
+    process.exit(0)
+  })
+  .catch(err => {
+    console.error(err)
+    process.exit(1)
+  })

+ 31 - 0
services/web/modules/server-ce-scripts/test/acceptance/src/ServerCEScriptsTests.js

@@ -129,4 +129,35 @@ describe('ServerCEScripts', function () {
       expect.fail('command should have failed')
     })
   })
+
+  describe('rename-tag', function () {
+    let user
+    beforeEach(async function () {
+      user = new User()
+      await user.login()
+    })
+
+    async function createTag(name) {
+      await user.doRequest('POST', { url: '/tag', json: { name } })
+    }
+
+    async function getTagNames() {
+      const { body } = await user.doRequest('GET', { url: '/tag', json: true })
+      return body.map(tag => tag.name)
+    }
+
+    it('should rename a tag', async function () {
+      const oldName = 'before'
+      const newName = 'after'
+      await createTag(oldName)
+
+      expect(await getTagNames()).to.deep.equal([oldName])
+
+      run(
+        `node modules/server-ce-scripts/scripts/rename-tag --user-id=${user.id} --old-name=${oldName} --new-name=${newName}`
+      )
+
+      expect(await getTagNames()).to.deep.equal([newName])
+    })
+  })
 })