Files
habitica/test/helpers/api-unit.helper.js
Matteo Pagliazzi 98c019a0b6 Upgrade lodash to v4 and lint more files (#8495)
* common: import lodash modules separately

* remove test/content from .eslintignore, fix with eslint --fix content/index

* lint test/content

* lint content/index except for lodash methods

* upgrade server/models

* upgrade server/middlewares and server/libs

* port server/controllers/top-level

* port server/controllers/api-v3

* port views and tests

* client old port lodash and _(, missing _.

* upgrade client-old

* port common/script (root level files only)

* port common/script/fns

* port common/libs

* port common/script/ops

* port common/script/content and common/script/libs/shops.js

* misc fixes

* misc fixes

* misc fixes

* more tests fixes

* fix payments test stubbing, down to 2 failing tests

* remove more instances of lodash wrapping

* fix bug where toObject does not clone object

* fix tests

* upgrade migration or add lodash 4 note

* update shrinkwrap

* fix linting

* upgrade eslint-config-habitrpg

* update shrinkwrap

* recompile shrinkwrap
2017-03-01 17:10:48 +01:00

110 lines
2.4 KiB
JavaScript

import '../../website/server/libs/i18n';
import mongoose from 'mongoose';
import defaultsDeep from 'lodash/defaultsDeep';
import { model as User } from '../../website/server/models/user';
import { model as Group } from '../../website/server/models/group';
import { model as Challenge } from '../../website/server/models/challenge';
import mongo from './mongo'; // eslint-disable-line
import moment from 'moment';
import i18n from '../../website/common/script/i18n';
import * as Tasks from '../../website/server/models/task';
afterEach((done) => {
sandbox.restore();
mongoose.connection.db.dropDatabase(done);
});
export { sleep } from './sleep';
export function generateUser (options = {}) {
return new User(options);
}
export function generateGroup (options = {}) {
return new Group(options);
}
export function generateChallenge (options = {}) {
return new Challenge(options);
}
export function generateRes (options = {}) {
let defaultRes = {
render: sandbox.stub(),
send: sandbox.stub(),
status: sandbox.stub().returnsThis(),
sendStatus: sandbox.stub().returnsThis(),
json: sandbox.stub(),
locals: {
user: generateUser(options.localsUser),
group: generateGroup(options.localsGroup),
},
set: sandbox.stub(),
t (string) {
return i18n.t(string);
},
};
return defaultsDeep(options, defaultRes);
}
export function generateReq (options = {}) {
let defaultReq = {
body: {},
query: {},
headers: {},
header: sandbox.stub().returns(null),
};
return defaultsDeep(options, defaultReq);
}
export function generateNext (func) {
return func || sandbox.stub();
}
export function generateHistory (days) {
let history = [];
let now = Number(moment().toDate());
while (days > 0) {
history.push({
value: days,
date: Number(moment(now).subtract(days, 'days').toDate()),
});
days--;
}
return history;
}
export function generateTodo (user) {
let todo = {
text: 'test todo',
type: 'todo',
value: 0,
completed: false,
};
let task = new Tasks.todo(Tasks.Task.sanitize(todo)); // eslint-disable-line new-cap
task.userId = user._id;
task.save();
return task;
}
export function generateDaily (user) {
let daily = {
text: 'test daily',
type: 'daily',
value: 0,
completed: false,
};
let task = new Tasks.daily(Tasks.Task.sanitize(daily)); // eslint-disable-line new-cap
task.userId = user._id;
task.save();
return task;
}