text: const mongoose = require('mongoose');
  const paginate = require('mongoose-paginate-v2');
  const setupTestDB = require('../../../utils/setupTestDB');
  
  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.docs[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.docs[0];
  
      //   expect(tasks).toHaveLength(1);
      //   expect(tasks[0]).toHaveProperty('_id', task._id);
      //   expect(tasks[0].project).toHaveProperty('_id', project._id);
      // });
    });
  });
  