SettingsTests.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /* eslint-disable
  2. node/handle-callback-err,
  3. */
  4. // TODO: This file was created by bulk-decaffeinate.
  5. // Fix any style issues and re-enable lint.
  6. /*
  7. * decaffeinate suggestions:
  8. * DS102: Remove unnecessary code created because of implicit returns
  9. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  10. */
  11. const { expect } = require('chai')
  12. const async = require('async')
  13. const User = require('./helpers/User')
  14. const MockV1ApiClass = require('./mocks/MockV1Api')
  15. let MockV1Api
  16. before(function () {
  17. MockV1Api = MockV1ApiClass.instance()
  18. })
  19. describe('SettingsPage', function () {
  20. beforeEach(function (done) {
  21. this.user = new User()
  22. this.v1Id = 1234
  23. this.v1User = {
  24. id: this.v1Id,
  25. email: this.user.email,
  26. password: this.user.password,
  27. profile: {
  28. id: this.v1Id,
  29. email: this.user.email,
  30. },
  31. }
  32. return async.series(
  33. [
  34. this.user.ensureUserExists.bind(this.user),
  35. this.user.login.bind(this.user),
  36. cb => this.user.mongoUpdate({ $set: { 'overleaf.id': this.v1Id } }, cb),
  37. cb => {
  38. MockV1Api.setUser(this.v1Id, this.v1User)
  39. return cb()
  40. },
  41. ],
  42. done
  43. )
  44. })
  45. it('load settings page', function (done) {
  46. return this.user.getUserSettingsPage((err, statusCode) => {
  47. statusCode.should.equal(200)
  48. return done()
  49. })
  50. })
  51. it('update main email address', function (done) {
  52. const newEmail = 'foo@bar.com'
  53. return this.user.updateSettings({ email: newEmail }, error => {
  54. expect(error).not.to.exist
  55. return this.user.get((error, user) => {
  56. user.email.should.equal(newEmail)
  57. user.emails.length.should.equal(1)
  58. user.emails[0].email.should.equal(newEmail)
  59. return done()
  60. })
  61. })
  62. })
  63. describe('with third-party-references configured', function () {
  64. beforeEach(function injectThirdPartyReferencesEntryIntoDb(done) {
  65. this.user.mongoUpdate(
  66. { $set: { refProviders: { zotero: { encrypted: '2020.9:SNIP' } } } },
  67. done
  68. )
  69. })
  70. it('should be able to update settings', function (done) {
  71. const newName = 'third-party-references'
  72. this.user.updateSettings({ first_name: newName }, error => {
  73. expect(error).not.to.exist
  74. this.user.get((error, user) => {
  75. user.first_name.should.equal(newName)
  76. done()
  77. })
  78. })
  79. })
  80. })
  81. })