codecombat/spec/server/functional/mail.spec.coffee
phoenixeliot bb6262483f Allow username-only signup for classroom users
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
2016-07-18 10:41:17 -07:00

69 lines
2.7 KiB
CoffeeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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')