mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
179 lines
5.6 KiB
CoffeeScript
179 lines
5.6 KiB
CoffeeScript
'use strict'
|
|
#jslint node: true
|
|
|
|
#global describe, before, beforeEach, it
|
|
diff = require("deep-diff")
|
|
|
|
User = require("../../website/src/models/user").model
|
|
Group = require("../../website/src/models/group").model
|
|
app = require("../../website/src/server")
|
|
|
|
describe "API", ->
|
|
|
|
before (done) ->
|
|
require "../../website/src/server" # start the server
|
|
# then wait for it to do it's thing. TODO make a cb-compatible export of server
|
|
setTimeout done, 2000
|
|
|
|
describe "With token and user id", ->
|
|
before (done) ->
|
|
registerNewUser done, true
|
|
|
|
beforeEach (done) ->
|
|
User.findById user._id, (err, _user) ->
|
|
user = _user
|
|
shared.wrap user
|
|
done()
|
|
|
|
describe "Todos", ->
|
|
it "Archives old todos", (done) ->
|
|
numTasks = _.size(user.todos)
|
|
request.post(baseURL + "/user/batch-update?_v=999").send([
|
|
{
|
|
op: "addTask"
|
|
body:
|
|
type: "todo"
|
|
}
|
|
{
|
|
op: "addTask"
|
|
body:
|
|
type: "todo"
|
|
}
|
|
{
|
|
op: "addTask"
|
|
body:
|
|
type: "todo"
|
|
}
|
|
]).end (res) ->
|
|
expectCode res, 200
|
|
# Expect number of todos to be 3 greater than the number the user started with
|
|
expect(_.size(res.body.todos)).to.be numTasks + 3
|
|
# Assign new number to numTasks variable
|
|
numTasks += 3
|
|
request.post(baseURL + "/user/batch-update?_v=998").send([
|
|
{
|
|
op: "score"
|
|
params:
|
|
direction: "up"
|
|
id: res.body.todos[0].id
|
|
}
|
|
{
|
|
op: "score"
|
|
params:
|
|
direction: "up"
|
|
id: res.body.todos[1].id
|
|
}
|
|
{
|
|
op: "score"
|
|
params:
|
|
direction: "up"
|
|
id: res.body.todos[2].id
|
|
}
|
|
]).end (res) ->
|
|
expectCode res, 200
|
|
expect(_.size(res.body.todos)).to.be numTasks
|
|
request.post(baseURL + "/user/batch-update?_v=997").send([
|
|
{
|
|
op: "updateTask"
|
|
params:
|
|
id: res.body.todos[0].id
|
|
|
|
body:
|
|
dateCompleted: moment().subtract(4, "days")
|
|
}
|
|
{
|
|
op: "updateTask"
|
|
params:
|
|
id: res.body.todos[1].id
|
|
|
|
body:
|
|
dateCompleted: moment().subtract(4, "days")
|
|
}
|
|
]).end (res) ->
|
|
# Expect todos to be 2 less than the total count
|
|
expect(_.size(res.body.todos)).to.be numTasks - 2
|
|
done()
|
|
|
|
describe "Creating, Updating, Deleting Todos", ->
|
|
todo = undefined
|
|
updateTodo = undefined
|
|
describe "Creating todos", ->
|
|
it "Creates a todo", (done) ->
|
|
request.post(baseURL + "/user/tasks").send(
|
|
type: "todo"
|
|
text: "Sample Todo"
|
|
).end (res) ->
|
|
expectCode res, 200
|
|
todo = res.body
|
|
expect(todo.text).to.be "Sample Todo"
|
|
expect(todo.id).to.be.ok
|
|
expect(todo.value).to.be 0
|
|
done()
|
|
|
|
describe "Updating todos", ->
|
|
it "Does not update id of todo", (done) ->
|
|
request.put(baseURL + "/user/tasks/" + todo.id).send(
|
|
id: "a-new-id"
|
|
).end (res) ->
|
|
expectCode res, 200
|
|
updateTodo = res.body
|
|
expect(updateTodo.id).to.be todo.id
|
|
done()
|
|
|
|
it "Does not update type of todo", (done) ->
|
|
request.put(baseURL + "/user/tasks/" + todo.id).send(
|
|
type: "habit"
|
|
).end (res) ->
|
|
expectCode res, 200
|
|
updateTodo = res.body
|
|
expect(updateTodo.type).to.be todo.type
|
|
done()
|
|
|
|
it "Does update text, attribute, priority, value, notes", (done) ->
|
|
request.put(baseURL + "/user/tasks/" + todo.id).send(
|
|
text: "Changed Title"
|
|
attribute: "int"
|
|
priority: 1.5
|
|
value: 5
|
|
notes: "Some notes"
|
|
).end (res) ->
|
|
expectCode res, 200
|
|
todo = res.body
|
|
expect(todo.text).to.be "Changed Title"
|
|
expect(todo.attribute).to.be "int"
|
|
expect(todo.priority).to.be 1.5
|
|
expect(todo.value).to.be 5
|
|
expect(todo.notes).to.be "Some notes"
|
|
done()
|
|
|
|
describe "Deleting todos", ->
|
|
it "Does delete todo", (done) ->
|
|
request.del(baseURL + "/user/tasks/" + todo.id).send(
|
|
).end (res) ->
|
|
expectCode res, 200
|
|
body = res.body
|
|
expect(body).to.be.empty
|
|
done()
|
|
|
|
it "Does not delete already deleted todo", (done) ->
|
|
request.del(baseURL + "/user/tasks/" + todo.id).send(
|
|
).end (res) ->
|
|
expectCode res, 404
|
|
body = res.body
|
|
expect(body.err).to.be "Task not found."
|
|
done()
|
|
|
|
it "Does not update text, attribute, priority, value, notes if task is already deleted", (done) ->
|
|
request.put(baseURL + "/user/tasks/" + todo.id).send(
|
|
text: "New Title"
|
|
attribute: "str"
|
|
priority: 1
|
|
value: 4
|
|
notes: "Other notes"
|
|
).end (res) ->
|
|
expectCode res, 404
|
|
body = res.body
|
|
expect(body.err).to.be "Task not found."
|
|
done()
|
|
|