Issue tracker tests timed out

Tell us what’s happening:
Describe your issue in detail here.

Hi. I’ve completed the issue tracker project and it seems to be functional like the example page. Problem is with the GET tests - get request work fine, but during the tests i repeatedly get the test timed out error, which doesn’t give more info in the console, so it’s hard to track down the issue. All other tests passes.

Your code so far

‘use strict’;
const mongoose = require(“mongoose”);
const ObjectId = mongoose.Types.ObjectId;
const IssueRecord = require(’…/schemes’).IssueRecord;
const Projects = require(’…/schemes’).Projects;

module.exports = function (app) {
app.route(’/api/issues/:project’)
.get(function (req, res){
let project = req.params.project;
let {
issue_title,
issue_text,
created_by,
assigned_to,
status_text,
open,
_id
} = req.query;

    if(open=='true'){
      open = true;
    }  else if (open == 'false')  {
      open = false;
    }

//try{
Projects.aggregate([
{ $match: {‘name’:project}},
{ $unwind: “$issues”},
_id != undefined
? { $match: {‘issues._id’:ObjectId(_id)}}
: { $match: {}},
issue_title != undefined
? { $match: {‘issues.issue_title’:issue_title}}
: { $match: {}},
issue_text != undefined
? { $match: {‘issues.issue_text’:issue_text}}
: { $match: {}},
created_by != undefined
? { $match: {‘issues.created_by’:created_by}}
: { $match: {}},
assigned_to != undefined
? { $match: {‘issues.assigned_to’:assigned_to}}
: { $match: {}},
status_text != undefined
? { $match: {‘issues.status_text’:status_text}}
: { $match: {}},
open != undefined
? { $match: {‘issues.open’:open}}
: { $match: {}}
]).exec((err,data) => {
if(!data||err){
console.log(err)
res.json();
// return;
}
else{
let mappedData = data.map(issue=>issue.issues);
res.json(mappedData);
}
})
/* } catch {
res.send();
console.log(‘err’)
}
*/

})

.post(async function (req, res){
  try{
    if(!req.body.issue_title || !req.body.issue_text || !req.body.created_by) {
    res.json({ error: 'required field(s) missing' })
      return;
  }
  
  let project = req.params.project;
  let date = new Date().toISOString();
    let project1 = await Projects.findOne({ name :project });
    if (!project1)  {
     let project1 = new Projects({name:project});
      await project1.save();
    }
    let newIssue = new IssueRecord(
    {
issue_title: req.body.issue_title,
issue_text: req.body.issue_text,
created_on: date,
updated_on: date,
created_by: req.body.created_by,
assigned_to: req.body.assigned_to,
open: req.body.open,
status_text: req.body.status_text

}
)
project1.issues.push(newIssue);
await project1.save();
res.json({
assigned_to: newIssue.assigned_to,
status_text: newIssue.status_text,
open: newIssue.open,
_id: newIssue._id,
issue_title: newIssue.issue_title,
issue_text: newIssue.issue_text,
created_by: newIssue.created_by,
created_on: date,
updated_on: date
})

  }     catch  {
    console.log('ooops, something went wrong  ')
  }
})

////********************************************

.put(async function (req, res){
  let project = req.params.project;
  let _id = req.body._id;
  if(!_id){
    res.json({ error: 'missing _id' })
    return;
  }

  const {
    issue_title,
    issue_text,
    created_by,
    assigned_to,
    status_text,
    open
  }  =  req.body;
  
  if(!issue_title &&
    !issue_text &&
    !created_by &&
    !assigned_to &&
    !status_text &&
    !open){
    res.json({ error: 'no update field(s) sent', _id: _id })
    return;
    }
  
  try {
let project1 = await Projects.findOne({ name : project});

if(!project1){
res.json({ error: ‘could not update’, _id: _id })
return;
}
let issueData = project1.issues.id(_id);
if(!issueData){
res.json({ error: ‘could not update’, _id: _id });
return;
}
issueData.issue_title = issue_title||issueData.issue_title;
issueData.issue_text = issue_text||issueData.issue_text;
issueData.created_by = created_by||issueData.created_by;
issueData.assigned_to = assigned_to||issueData.assigned_to;
issueData.status_text = status_text||issueData.status_text;
issueData.open = open||issueData.open;
issueData.updated_on = new Date().toISOString();
await project1.save()
res.json({ result: ‘successfully updated’, _id: _id })

  }  catch  {
    res.json({ error: 'could not update', _id: _id })
  }
})


//*****************************************

.delete(async function (req, res){
let project = req.params.project;
let _id = req.body._id;

 if (!_id){
   res.json({error: 'missing _id'});
   return;
 }
 try {

let data = await Projects.findOne({name:project})

if(!data){

res.json({ error: ‘could not delete’, _id: _id })
return;
}

let issueData = data.issues.id(_id)
if(!issueData){
res.json({ error: ‘could not delete’, _id: _id })
return;
}
issueData.remove();
await data.save();
res.json({ result: ‘successfully deleted’, _id: _id })
} catch {
res.json({ error: ‘could not delete’, _id: _id })
}
})
};

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0

Challenge: Issue Tracker

Link to the challenge:

Here’s example output

It’s on replit and kind of working slow all the time, only those two tests are timing out every try

Post a link to your code on repl.it (not the live site) and you’re more likely to get help.

To start, you could log all the inputs and outputs from the failing routes (even better all routes) and run the tests to isolate the problem.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.