Skip to content

Commit

Permalink
Add tests for populate option in paginate
Browse files Browse the repository at this point in the history
  • Loading branch information
hagopj13 committed Dec 27, 2020
1 parent 2689422 commit aad3e07
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions tests/unit/models/plugins/paginate.plugin.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
const mongoose = require('mongoose');
const setupTestDB = require('../../../utils/setupTestDB');
const paginate = require('../../../../src/models/plugins/paginate.plugin');

const projectSchema = mongoose.Schema({
name: {
type: String,
required: true,
},
});

projectSchema.virtual('tasks', {
ref: 'Task',
localField: '_id',
foreignField: 'project',
});

projectSchema.plugin(paginate);
const Project = mongoose.model('Project', projectSchema);

const taskSchema = mongoose.Schema({
name: {
type: String,
required: true,
},
project: {
type: mongoose.SchemaTypes.ObjectId,
ref: 'Project',
required: true,
},
});

taskSchema.plugin(paginate);
const Task = mongoose.model('Task', taskSchema);

setupTestDB();

describe('paginate plugin', () => {
describe('populate option', () => {
test('should populate the specified data fields', async () => {
const project = await Project.create({ name: 'Project One' });
const task = await Task.create({ name: 'Task One', project: project._id });

const taskPages = await Task.paginate({ _id: task._id }, { populate: 'project' });

expect(taskPages.results[0].project).toHaveProperty('_id', project._id);
});

test('should populate nested fields', async () => {
const project = await Project.create({ name: 'Project One' });
const task = await Task.create({ name: 'Task One', project: project._id });

const projectPages = await Project.paginate({ _id: project._id }, { populate: 'tasks.project' });
const { tasks } = projectPages.results[0];

expect(tasks).toHaveLength(1);
expect(tasks[0]).toHaveProperty('_id', task._id);
expect(tasks[0].project).toHaveProperty('_id', project._id);
});
});
});

0 comments on commit aad3e07

Please sign in to comment.