codecombat/test/app/views/play/level/tome/Problem.spec.coffee

92 lines
3.2 KiB
CoffeeScript
Raw Normal View History

2014-08-14 14:55:43 -04:00
Problem = require 'views/play/level/tome/Problem'
describe 'Problem', ->
# boilerplate problem params
ace = {
getSession: -> {
getDocument: -> {
createAnchor: ->
}
addMarker: ->
}
}
aether = {
raw: "this.say('hi');\nthis.sad('bye');"
language: { id: 'javascript' }
}
aetherProblem = {
hint: 'did you mean say instead of sad?'
id: 'unknown_ReferenceError'
level: 'error'
message: 'Line 1: tmp2[tmp3] is not a function'
range: [
{ row: 1 }
{ row: 1 }
]
type: 'runtime'
}
levelID = 'awesome'
it 'save user code problem', ->
new Problem aether, aetherProblem, ace, false, true, levelID
expect(jasmine.Ajax.requests.count()).toBe(1)
request = jasmine.Ajax.requests.mostRecent()
expect(request.url).toEqual("/db/user.code.problem")
params = JSON.parse(request.params)
expect(params.code).toEqual(aether.raw)
expect(params.codeSnippet).toEqual("this.sad('bye');")
expect(params.errHint).toEqual(aetherProblem.hint)
expect(params.errId).toEqual(aetherProblem.id)
expect(params.errLevel).toEqual(aetherProblem.level)
expect(params.errMessage).toEqual(aetherProblem.message)
expect(params.errRange).toEqual(aetherProblem.range)
expect(params.errType).toEqual(aetherProblem.type)
expect(params.language).toEqual(aether.language.id)
expect(params.levelID).toEqual(levelID)
it 'save user code problem no range', ->
aetherProblem.range = null
new Problem aether, aetherProblem, ace, false, true, levelID
expect(jasmine.Ajax.requests.count()).toBe(1)
request = jasmine.Ajax.requests.mostRecent()
expect(request.url).toEqual("/db/user.code.problem")
params = JSON.parse(request.params)
expect(params.code).toEqual(aether.raw)
expect(params.errHint).toEqual(aetherProblem.hint)
expect(params.errId).toEqual(aetherProblem.id)
expect(params.errLevel).toEqual(aetherProblem.level)
expect(params.errMessage).toEqual(aetherProblem.message)
expect(params.errType).toEqual(aetherProblem.type)
expect(params.language).toEqual(aether.language.id)
expect(params.levelID).toEqual(levelID)
# Difference when no range
expect(params.codeSnippet).toBeUndefined()
expect(params.errRange).toBeUndefined()
it 'save user code problem multi-line snippet', ->
aether.raw = "this.say('hi');\nthis.sad\n('bye');"
aetherProblem.range = [ { row: 1 }, { row: 2 } ]
new Problem aether, aetherProblem, ace, false, true, levelID
expect(jasmine.Ajax.requests.count()).toBe(1)
request = jasmine.Ajax.requests.mostRecent()
expect(request.url).toEqual("/db/user.code.problem")
params = JSON.parse(request.params)
expect(params.code).toEqual(aether.raw)
expect(params.codeSnippet).toEqual("this.sad\n('bye');")
expect(params.errHint).toEqual(aetherProblem.hint)
expect(params.errId).toEqual(aetherProblem.id)
expect(params.errLevel).toEqual(aetherProblem.level)
expect(params.errMessage).toEqual(aetherProblem.message)
expect(params.errRange).toEqual(aetherProblem.range)
expect(params.errType).toEqual(aetherProblem.type)
expect(params.language).toEqual(aether.language.id)
expect(params.levelID).toEqual(levelID)