mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-14 13:17:24 +01:00
86 lines
2.2 KiB
JavaScript
86 lines
2.2 KiB
JavaScript
import { each, findIndex } from 'lodash';
|
|
import { model as Group } from '../../../../website/server/models/group';
|
|
import { model as User } from '../../../../website/server/models/user';
|
|
import * as Tasks from '../../../../website/server/models/task';
|
|
|
|
describe('Group Task Methods', () => {
|
|
let guild; let leader; let task;
|
|
const tasksToTest = {
|
|
habit: {
|
|
text: 'test habit',
|
|
type: 'habit',
|
|
up: false,
|
|
down: true,
|
|
},
|
|
todo: {
|
|
text: 'test todo',
|
|
type: 'todo',
|
|
},
|
|
daily: {
|
|
text: 'test daily',
|
|
type: 'daily',
|
|
frequency: 'daily',
|
|
everyX: 5,
|
|
startDate: new Date(),
|
|
},
|
|
reward: {
|
|
text: 'test reward',
|
|
type: 'reward',
|
|
},
|
|
};
|
|
|
|
beforeEach(async () => {
|
|
guild = new Group({
|
|
name: 'test party',
|
|
type: 'guild',
|
|
});
|
|
|
|
leader = new User({
|
|
guilds: [guild._id],
|
|
});
|
|
|
|
guild.leader = leader._id;
|
|
|
|
await Promise.all([
|
|
guild.save(),
|
|
leader.save(),
|
|
]);
|
|
});
|
|
|
|
each(tasksToTest, (taskValue, taskType) => {
|
|
context(`${taskType}`, () => {
|
|
beforeEach(async () => {
|
|
task = new Tasks[`${taskType}`](Tasks.Task.sanitize(taskValue));
|
|
task.group.id = guild._id;
|
|
await task.save();
|
|
if (task.checklist) {
|
|
task.checklist.push({
|
|
text: 'Checklist Item 1',
|
|
completed: false,
|
|
});
|
|
}
|
|
});
|
|
|
|
it('syncs an assigned task to a user', async () => {
|
|
await guild.syncTask(task, [leader], leader);
|
|
|
|
const updatedTask = await Tasks.Task.findOne({ _id: task._id });
|
|
expect(updatedTask.group.assignedUsers).to.contain(leader._id);
|
|
expect(updatedTask.group.assignedUsersDetail[leader._id]).to.exist;
|
|
});
|
|
|
|
it('creates tags for a user when task is synced', async () => {
|
|
await guild.syncTask(task, [leader], leader);
|
|
|
|
const updatedLeader = await User.findOne({ _id: leader._id });
|
|
const tagIndex = findIndex(updatedLeader.tags, { id: guild._id });
|
|
const newTag = updatedLeader.tags[tagIndex];
|
|
|
|
expect(newTag.id).to.equal(guild._id);
|
|
expect(newTag.name).to.equal(guild.name);
|
|
expect(newTag.group).to.equal(guild._id);
|
|
});
|
|
});
|
|
});
|
|
});
|