mirror of
https://github.com/overleaf/overleaf.git
synced 2025-02-17 07:21:05 +00:00
change email address in newsletter when changing default email
put mongo_id into mailchimp merge fields
This commit is contained in:
parent
6208e9f2d0
commit
687637eec7
3 changed files with 38 additions and 12 deletions
|
@ -4,7 +4,6 @@ Settings = require 'settings-sharelatex'
|
|||
crypto = require('crypto')
|
||||
Mailchimp = require('mailchimp-api-v3')
|
||||
|
||||
|
||||
if !Settings.mailchimp?.api_key?
|
||||
logger.warn "No newsletter provider configured so not chaning email on user"
|
||||
mailchimp =
|
||||
|
@ -63,5 +62,6 @@ buildOptions = (user, is_subscribed)->
|
|||
merge_fields:
|
||||
FNAME: user.first_name
|
||||
LNAME: user.last_name
|
||||
MONGO_ID:user._id
|
||||
return opts
|
||||
|
||||
|
|
|
@ -100,15 +100,21 @@ module.exports = UserUpdater =
|
|||
setDefaultEmailAddress: (userId, email, callback) ->
|
||||
email = EmailHelper.parseEmail(email)
|
||||
return callback(new Error('invalid email')) if !email?
|
||||
query = _id: userId, 'emails.email': email
|
||||
update = $set: email: email
|
||||
@updateUser query, update, (error, res) ->
|
||||
if error?
|
||||
logger.err error:error, 'problem setting default emails'
|
||||
UserGetter.getUserEmail userId, (error, oldEmail) =>
|
||||
if err?
|
||||
return callback(error)
|
||||
if res.n == 0 # TODO: Check n or nMatched?
|
||||
return callback(new Error('Default email does not belong to user'))
|
||||
callback()
|
||||
query = _id: userId, 'emails.email': email
|
||||
update = $set: email: email
|
||||
@updateUser query, update, (error, res) ->
|
||||
if error?
|
||||
logger.err error:error, 'problem setting default emails'
|
||||
return callback(error)
|
||||
else if res.n == 0 # TODO: Check n or nMatched?
|
||||
return callback(new Error('Default email does not belong to user'))
|
||||
else
|
||||
NewsletterManager.changeEmail oldEmail, email, callback
|
||||
|
||||
|
||||
|
||||
updateV1AndSetDefaultEmailAddress: (userId, email, callback) ->
|
||||
@updateEmailAddressInV1 userId, email, (error) =>
|
||||
|
|
|
@ -18,21 +18,27 @@ describe "UserUpdater", ->
|
|||
getUserEmail: sinon.stub()
|
||||
getUserByAnyEmail: sinon.stub()
|
||||
ensureUniqueEmailAddress: sinon.stub()
|
||||
@logger = err: sinon.stub(), log: ->
|
||||
@logger =
|
||||
err: sinon.stub()
|
||||
log: ->
|
||||
warn: ->
|
||||
@addAffiliation = sinon.stub().yields()
|
||||
@removeAffiliation = sinon.stub().callsArgWith(2, null)
|
||||
@refreshFeatures = sinon.stub().yields()
|
||||
@NewsletterManager =
|
||||
changeEmail:sinon.stub()
|
||||
@UserUpdater = SandboxedModule.require modulePath, requires:
|
||||
"logger-sharelatex": @logger
|
||||
"../../infrastructure/mongojs":@mongojs
|
||||
"metrics-sharelatex": timeAsyncMethod: sinon.stub()
|
||||
"./UserGetter": @UserGetter
|
||||
'../Institutions/InstitutionsAPI':
|
||||
addAffiliation: @addAffiliation
|
||||
removeAffiliation: @removeAffiliation
|
||||
'../Subscription/FeaturesUpdater': refreshFeatures: @refreshFeatures
|
||||
"../../infrastructure/mongojs":@mongojs
|
||||
"metrics-sharelatex": timeAsyncMethod: sinon.stub()
|
||||
"settings-sharelatex": @settings = {}
|
||||
"request": @request = {}
|
||||
"../Newsletter/NewsletterManager": @NewsletterManager
|
||||
|
||||
@stubbedUser =
|
||||
_id: "3131231"
|
||||
|
@ -174,6 +180,10 @@ describe "UserUpdater", ->
|
|||
done()
|
||||
|
||||
describe 'setDefaultEmailAddress', ->
|
||||
beforeEach ->
|
||||
@UserGetter.getUserEmail.callsArgWith(1, null, @stubbedUser.email)
|
||||
@NewsletterManager.changeEmail.callsArgWith(2, null)
|
||||
|
||||
it 'set default', (done)->
|
||||
@UserUpdater.updateUser = sinon.stub().callsArgWith(2, null, n: 1)
|
||||
|
||||
|
@ -185,6 +195,16 @@ describe "UserUpdater", ->
|
|||
).should.equal true
|
||||
done()
|
||||
|
||||
it 'set changed the email in newsletter', (done)->
|
||||
@UserUpdater.updateUser = sinon.stub().callsArgWith(2, null, n: 1)
|
||||
|
||||
@UserUpdater.setDefaultEmailAddress @stubbedUser._id, @newEmail, (err)=>
|
||||
should.not.exist(err)
|
||||
@NewsletterManager.changeEmail.calledWith(
|
||||
@stubbedUser.email, @newEmail
|
||||
).should.equal true
|
||||
done()
|
||||
|
||||
it 'handle error', (done)->
|
||||
@UserUpdater.updateUser = sinon.stub().callsArgWith(2, new Error('nope'))
|
||||
|
||||
|
|
Loading…
Reference in a new issue