mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-30 10:56:53 -05:00
bb6262483f
Address some code review feedback Correct error code in test Don't try to send emails to empty addresses Add tests for subscriptions Add tests for Next Steps email Fix specs Add reason for disabled test
69 lines
2.7 KiB
CoffeeScript
69 lines
2.7 KiB
CoffeeScript
require '../common'
|
||
utils = require '../utils'
|
||
mail = require '../../../server/routes/mail'
|
||
sendwithus = require '../../../server/sendwithus'
|
||
User = require '../../../server/models/User'
|
||
request = require '../request'
|
||
LevelSession = require '../../../server/models/LevelSession'
|
||
|
||
testPost =
|
||
data:
|
||
email: 'scott@codecombat.com'
|
||
id: '12345678'
|
||
merges:
|
||
INTERESTS: 'Announcements, Adventurers, Archmages, Scribes, Diplomats, Ambassadors, Artisans'
|
||
FNAME: 'Scott'
|
||
LNAME: 'Erickson'
|
||
|
||
describe 'handleProfileUpdate', ->
|
||
it 'updates emails from the data passed in', (done) ->
|
||
u = new User()
|
||
mail.handleProfileUpdate(u, testPost)
|
||
expect(u.isEmailSubscriptionEnabled('generalNews')).toBeTruthy()
|
||
expect(u.isEmailSubscriptionEnabled('adventurerNews')).toBeTruthy()
|
||
expect(u.isEmailSubscriptionEnabled('archmageNews')).toBeTruthy()
|
||
expect(u.isEmailSubscriptionEnabled('scribeNews')).toBeTruthy()
|
||
expect(u.isEmailSubscriptionEnabled('diplomatNews')).toBeTruthy()
|
||
expect(u.isEmailSubscriptionEnabled('ambassadorNews')).toBeTruthy()
|
||
expect(u.isEmailSubscriptionEnabled('artisanNews')).toBeTruthy()
|
||
done()
|
||
|
||
describe 'handleUnsubscribe', ->
|
||
it 'turns off all news and notifications', (done) ->
|
||
u = new User({generalNews: {enabled: true}, archmageNews: {enabled: true}, anyNotes: {enabled: true}})
|
||
mail.handleUnsubscribe(u)
|
||
expect(u.isEmailSubscriptionEnabled('generalNews')).toBeFalsy()
|
||
expect(u.isEmailSubscriptionEnabled('adventurerNews')).toBeFalsy()
|
||
expect(u.isEmailSubscriptionEnabled('archmageNews')).toBeFalsy()
|
||
expect(u.isEmailSubscriptionEnabled('scribeNews')).toBeFalsy()
|
||
expect(u.isEmailSubscriptionEnabled('diplomatNews')).toBeFalsy()
|
||
expect(u.isEmailSubscriptionEnabled('ambassadorNews')).toBeFalsy()
|
||
expect(u.isEmailSubscriptionEnabled('artisanNews')).toBeFalsy()
|
||
done()
|
||
|
||
# This can be re-enabled on demand to test it, but for some async reason this
|
||
# crashes jasmine soon afterward.
|
||
describe 'sendNextStepsEmail', ->
|
||
xit 'Sends the email', utils.wrap (done) ->
|
||
user = yield utils.initUser({generalNews: {enabled: true}, anyNotes: {enabled: true}})
|
||
expect(user.id).toBeDefined()
|
||
yield new LevelSession({
|
||
creator: user.id
|
||
permissions: simplePermissions
|
||
level: original: 'dungeon-arena'
|
||
state: complete: true
|
||
}).save()
|
||
yield new LevelSession({
|
||
creator: user.id
|
||
permissions: simplePermissions
|
||
level: original: 'dungeon-arena-2'
|
||
state: complete: true
|
||
}).save()
|
||
|
||
spyOn(sendwithus.api, 'send').and.callFake (options, cb) ->
|
||
expect(options.recipient.address).toBe(user.get('email'))
|
||
cb()
|
||
done()
|
||
|
||
mail.sendNextStepsEmail(user, new Date, 5)
|
||
.pend('Breaks other tests — must be run alone')
|