mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-05-24 22:55:40 +00:00
tests: api.mocha.coffee cleanup WIP
This commit is contained in:
parent
2c1eb955ac
commit
6d8e4ed8a2
2 changed files with 68 additions and 74 deletions
|
|
@ -423,6 +423,7 @@ _.each(shared.wrap({}).ops, function(op,k){
|
|||
------------------------------------------------------------------------
|
||||
*/
|
||||
api.batchUpdate = function(req, res, next) {
|
||||
if (_.isEmpty(req.body)) req.body = []; // cases of {} or null
|
||||
if (req.body[0] && req.body[0].data)
|
||||
return res.json(400, {err: "API has been updated, please refresh your browser or upgrade your mobile app."})
|
||||
|
||||
|
|
@ -441,7 +442,7 @@ api.batchUpdate = function(req, res, next) {
|
|||
};
|
||||
|
||||
// Setup the array of functions we're going to call in parallel with async
|
||||
var ops = _.transform(req.body || [], function(result, _req) {
|
||||
var ops = _.transform(req.body, function(result, _req) {
|
||||
if (!_.isEmpty(_req)) {
|
||||
result.push(function(cb) {
|
||||
callOp(_req, cb);
|
||||
|
|
|
|||
|
|
@ -93,7 +93,7 @@ describe 'API', ->
|
|||
setTimeout done, 2000
|
||||
|
||||
describe 'Without token or user id', ->
|
||||
it.skip '/api/v2/status', (done) ->
|
||||
it '/api/v2/status', (done) ->
|
||||
request.get("#{baseURL}/status")
|
||||
.set('Accept', 'application/json')
|
||||
.end (res) ->
|
||||
|
|
@ -101,7 +101,7 @@ describe 'API', ->
|
|||
expect(res.body.status).to.be 'up'
|
||||
done()
|
||||
|
||||
it.skip '/api/v2/user', (done) ->
|
||||
it '/api/v2/user', (done) ->
|
||||
request.get("#{baseURL}/user")
|
||||
.set('Accept', 'application/json')
|
||||
.end (res) ->
|
||||
|
|
@ -110,7 +110,6 @@ describe 'API', ->
|
|||
done()
|
||||
|
||||
describe.only 'With token and user id', ->
|
||||
params = null
|
||||
currentUser = null
|
||||
|
||||
before (done) ->
|
||||
|
|
@ -120,10 +119,6 @@ describe 'API', ->
|
|||
User.findOne {_id,apiToken}, (err, _user) ->
|
||||
console.error {err} if err
|
||||
user = _user
|
||||
params =
|
||||
title: 'Title'
|
||||
text: 'Text'
|
||||
type: 'habit'
|
||||
request
|
||||
.set('Accept', 'application/json')
|
||||
.set('X-API-User', _id)
|
||||
|
|
@ -135,9 +130,11 @@ describe 'API', ->
|
|||
currentUser = _user
|
||||
done()
|
||||
|
||||
###### Groups ######
|
||||
############
|
||||
# Groups
|
||||
############
|
||||
|
||||
describe.only 'Groups', ->
|
||||
describe 'Groups', ->
|
||||
group = undefined
|
||||
|
||||
it 'Creates a group', (done) ->
|
||||
|
|
@ -180,6 +177,65 @@ describe 'API', ->
|
|||
done()
|
||||
, 500 # we have to wait a while for users' tasks to be updated, called async on server
|
||||
|
||||
############
|
||||
# Batch Update
|
||||
############
|
||||
|
||||
describe.only 'Batch Update', ->
|
||||
|
||||
it 'POST /api/v1/batch-update', (done) ->
|
||||
userBefore = _.cloneDeep(currentUser)
|
||||
|
||||
ops = [
|
||||
# Good scores
|
||||
op: 'score', params: {id:user.habits[0].id, direction: 'up'}
|
||||
op: 'score', params: {id:user.habits[1].id, direction: 'down'}
|
||||
op: 'score', params: {id:user.dailys[0].id, direction: 'up'}
|
||||
op: 'score', params: {id:user.todos[0].id, direction: 'up'}
|
||||
]
|
||||
|
||||
request.post("#{baseURL}/user/batch-update")
|
||||
.send(ops)
|
||||
.end (res) ->
|
||||
expect(res.body.err).to.be undefined
|
||||
expect(res.statusCode).to.be 200
|
||||
#expectUserEqual(userBefore, res.body)
|
||||
done()
|
||||
|
||||
|
||||
############
|
||||
# To Be Updated (these are old v1 tests which haven't been touched in over 6 months, need to be portd to new API tests or deleted)
|
||||
############
|
||||
|
||||
it.skip 'POST /api/v2/batch-update (handles corrupt values)', (done) ->
|
||||
registerNewUser (_res) ->
|
||||
# corrupt the tasks, and let's see how the server handles this
|
||||
ids = _res.dailyIds
|
||||
_res.tasks[ids[0]].value = NaN
|
||||
_res.tasks[ids[1]].value = undefined
|
||||
_res.tasks[ids[2]] = {}
|
||||
_res.tasks["undefined"] = {}
|
||||
|
||||
_res.stats.hp = _res.stats.gp = NaN
|
||||
|
||||
_res.lastCron = +new Date('08/13/2013')
|
||||
|
||||
ops = [
|
||||
op: 'score', task: _res.tasks[ids[0]], dir: 'up'
|
||||
]
|
||||
|
||||
model.set "users.#{_res.id}", _res, ->
|
||||
request.post("#{baseURL}/user/batch-update")
|
||||
.set('Accept', 'application/json')
|
||||
.set('X-API-User', _res.id)
|
||||
.set('X-API-Key', _res.apiToken)
|
||||
.send(ops)
|
||||
.end (res) ->
|
||||
expect(res.statusCode).to.be 200
|
||||
console.log {stats:res.body.stats, tasks:res.body.tasks}
|
||||
done()
|
||||
|
||||
|
||||
#FIXME figure out how to compare the objects
|
||||
it.skip 'GET /api/v1/user', (done) ->
|
||||
request.get("#{baseURL}/user")
|
||||
|
|
@ -206,7 +262,7 @@ describe 'API', ->
|
|||
|
||||
it.skip 'POST /api/v1/user/task', (done) ->
|
||||
request.post("#{baseURL}/user/task")
|
||||
.send(params)
|
||||
.send({title: 'Title', text: 'Text', type: 'habit'})
|
||||
.end (res) ->
|
||||
query = model.query('users').withIdAndToken(currentUser.id, currentUser.apiToken)
|
||||
query.fetch (err, user) ->
|
||||
|
|
@ -468,67 +524,4 @@ describe 'API', ->
|
|||
#expect(res.body.token).to.be newUser.apiToken
|
||||
done()
|
||||
|
||||
it.skip 'POST /api/v1/batch-update (handles corrupt values)', (done) ->
|
||||
registerNewUser (_res) ->
|
||||
model.set '_userId', _res.id
|
||||
model.session = {userId:_res.id}
|
||||
|
||||
# corrupt the tasks, and let's see how the server handles this
|
||||
ids = _res.dailyIds
|
||||
_res.tasks[ids[0]].value = NaN
|
||||
_res.tasks[ids[1]].value = undefined
|
||||
_res.tasks[ids[2]] = {}
|
||||
_res.tasks["undefined"] = {}
|
||||
|
||||
_res.stats.hp = _res.stats.gp = NaN
|
||||
|
||||
_res.lastCron = +new Date('08/13/2013')
|
||||
|
||||
ops = [
|
||||
op: 'score', task: _res.tasks[ids[0]], dir: 'up'
|
||||
]
|
||||
|
||||
model.set "users.#{_res.id}", _res, ->
|
||||
request.post("#{baseURL}/user/batch-update")
|
||||
.set('Accept', 'application/json')
|
||||
.set('X-API-User', _res.id)
|
||||
.set('X-API-Key', _res.apiToken)
|
||||
.send(ops)
|
||||
.end (res) ->
|
||||
expect(res.statusCode).to.be 200
|
||||
console.log {stats:res.body.stats, tasks:res.body.tasks}
|
||||
done()
|
||||
|
||||
it.skip 'POST /api/v1/batch-update', (done) ->
|
||||
userBefore = _.cloneDeep(currentUser)
|
||||
|
||||
habits = _.where currentUser.tasks, {type: 'habit'}
|
||||
dailys = _.where currentUser.tasks, {type: 'dailys'}
|
||||
todos = _.where currentUser.tasks, {type: 'todos'}
|
||||
rewards = _.where currentUser.tasks, {type: 'rewards'}
|
||||
|
||||
ops = [
|
||||
|
||||
# Good scores
|
||||
op: 'score', task: habits[0], dir: 'up'
|
||||
op: 'score', task: habits[1], dir: 'down'
|
||||
op: 'score', task: dailys[1], dir: 'up'
|
||||
op: 'score', task: todos[1], dir: 'up'
|
||||
|
||||
# Bad scores, should handle gracefully
|
||||
op: 'score', task: todos[2], dir: 'down'
|
||||
op: 'score', task: {}, dir: 'up'
|
||||
op: 'score', task: {id:null, value: NaN}, dir: 'up'
|
||||
]
|
||||
|
||||
request.post("#{baseURL}/user/batch-update")
|
||||
.set('Accept', 'application/json')
|
||||
.set('X-API-User', currentUser.id)
|
||||
.set('X-API-Key', currentUser.apiToken)
|
||||
.send(ops)
|
||||
.end (res) ->
|
||||
expect(res.body.err).to.be undefined
|
||||
expect(res.statusCode).to.be 200
|
||||
#expectUserEqual(userBefore, res.body)
|
||||
done()
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue