Files
habitica/test/api/todos.coffee
2015-05-11 08:13:23 -05:00

166 lines
4.6 KiB
CoffeeScript

'use strict'
require("../../website/src/server")
describe "Todos", ->
before (done) ->
registerNewUser done, true
beforeEach (done) ->
User.findById user._id, (err, _user) ->
user = _user
shared.wrap user
done()
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.equal 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.equal 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.equal 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.equal "Sample Todo"
expect(todo.id).to.be.ok
expect(todo.value).to.equal 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.equal 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.equal 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.equal "Changed Title"
expect(todo.attribute).to.equal "int"
expect(todo.priority).to.equal 1.5
expect(todo.value).to.equal 5
expect(todo.notes).to.equal "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.equal "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.equal "Task not found."
done()