def test_escalate_questions_cron(self, submit_ticket): """Verify the escalate cronjob escalates the right questions.""" questions_to_escalate = [ # Questions over 24 hours old without an answer. question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True), question( created=datetime.now() - timedelta(hours=24, minutes=50), save=True), ] questions_not_to_escalate = [ # Questions newer than 24 hours without an answer. question(save=True), question(created=datetime.now() - timedelta(hours=11), save=True), question(created=datetime.now() - timedelta(hours=21), save=True), ] # Question older than 24 hours with a recent answer. q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) answer(created=datetime.now() - timedelta(hours=10), question=q, save=True) answer(created=datetime.now() - timedelta(hours=1), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours with a recent answer by the asker. q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) answer( created=datetime.now() - timedelta(hours=15), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours without an answer already escalated. q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.tags.add(config.ESCALATE_TAG_NAME) questions_not_to_escalate.append(q) # Question with an inactive user. q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.creator.is_active = False q.creator.save() questions_not_to_escalate.append(q) # Run the cron job and verify only 3 questions were escalated. eq_(len(questions_to_escalate), escalate_questions())
def test_escalate_questions_cron(self, submit_ticket): """Verify the escalate cronjob escalates the right questions.""" questions_to_escalate = [ # Questions over 24 hours old without an answer. question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True), question(created=datetime.now() - timedelta(hours=24, minutes=50), save=True), ] questions_not_to_escalate = [ # Questions newer than 24 hours without an answer. question(save=True), question(created=datetime.now() - timedelta(hours=11), save=True), question(created=datetime.now() - timedelta(hours=21), save=True), ] # Question older than 24 hours with a recent answer. q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) answer(created=datetime.now() - timedelta(hours=10), question=q, save=True) answer(created=datetime.now() - timedelta(hours=1), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours with a recent answer by the asker. q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) answer(created=datetime.now() - timedelta(hours=15), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours without an answer already escalated. q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.tags.add(config.ESCALATE_TAG_NAME) questions_not_to_escalate.append(q) # Question with an inactive user. q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.creator.is_active = False q.creator.save() questions_not_to_escalate.append(q) # Run the cron job and verify only 3 questions were escalated. eq_(len(questions_to_escalate), escalate_questions())
def test_escalate_questions_cron(self, submit_ticket): """Verify the escalate cronjob escalates the right questions.""" questions_to_escalate = [ # Questions over 24 hours old without an answer. question(created=datetime.now() - timedelta(hours=25), save=True), question(created=datetime.now() - timedelta(hours=36), save=True), ] questions_not_to_escalate = [ # Questions newer than 24 hours without an answer. question(save=True), question(created=datetime.now() - timedelta(hours=11), save=True), question(created=datetime.now() - timedelta(hours=21), save=True), ] # Question older than 24 hours with a recent answer. q = question(created=datetime.now() - timedelta(hours=25), save=True) answer(created=datetime.now() - timedelta(hours=10), question=q, save=True) answer(created=datetime.now() - timedelta(hours=1), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours with a recent answer by the asker. q = question(created=datetime.now() - timedelta(hours=25), save=True) answer(created=datetime.now() - timedelta(hours=15), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours without an answer already escalated. q = question(created=datetime.now() - timedelta(hours=36), save=True) q.tags.add(config.ESCALATE_TAG_NAME) questions_not_to_escalate.append(q) # Question with an inactive user. q = question(created=datetime.now() - timedelta(hours=36), save=True) q.creator.is_active = False q.creator.save() questions_not_to_escalate.append(q) # Run the cron job and verify only 3 questions were escalated. eq_(len(questions_to_escalate), escalate_questions()) # Get all escalated questions, there should be 4 now # (one was already tagged before the cron ran). escalated = Question.objects.escalated() eq_(3, len(escalated)) # Verify that all the questions to escalated are listed. for q in questions_to_escalate: assert q in escalated
def test_escalate_questions_cron(self, submit_ticket): """Verify the escalate cronjob escalates the right questions.""" questions_to_escalate = [ # Questions over 24 hours old without an answer. QuestionFactory(created=datetime.now() - timedelta(hours=24, minutes=10)), QuestionFactory(created=datetime.now() - timedelta(hours=24, minutes=50)), ] # Question about Firefox OS fxos = ProductFactory(slug='firefox-os') q = QuestionFactory(created=datetime.now() - timedelta(hours=24, minutes=10), product=fxos) questions_to_escalate.append(q) # Questions not to escalate # Questions newer than 24 hours without an answer. QuestionFactory() QuestionFactory(created=datetime.now() - timedelta(hours=11)) QuestionFactory(created=datetime.now() - timedelta(hours=21)) # Questions older than 25 hours (The cronjob runs once an hour) QuestionFactory(created=datetime.now() - timedelta(hours=26)) # Question in the correct time range, but not in the default language. QuestionFactory(created=datetime.now() - timedelta(hours=24, minutes=10), locale='de') # Question older than 24 hours with a recent answer. q = QuestionFactory(created=datetime.now() - timedelta(hours=24, minutes=10)) AnswerFactory(created=datetime.now() - timedelta(hours=10), question=q) AnswerFactory(created=datetime.now() - timedelta(hours=1), creator=q.creator, question=q) # Question older than 24 hours with a recent answer by the asker. q = QuestionFactory(created=datetime.now() - timedelta(hours=24, minutes=10)) AnswerFactory(created=datetime.now() - timedelta(hours=15), creator=q.creator, question=q) # Question older than 24 hours without an answer already escalated. q = QuestionFactory(created=datetime.now() - timedelta(hours=24, minutes=10)) q.tags.add(config.ESCALATE_TAG_NAME) # Question with an inactive user. q = QuestionFactory( creator__is_active=False, created=datetime.now() - timedelta(hours=24, minutes=10)) # Question about Thunderbird, which is one of the products we exclude. tb = ProductFactory(slug='thunderbird') q = QuestionFactory(created=datetime.now() - timedelta(hours=24, minutes=10), product=tb) # Run the cron job and verify only 3 questions were escalated. eq_(len(questions_to_escalate), escalate_questions())
def test_escalate_questions_cron(self, submit_ticket): """Verify the escalate cronjob escalates the right questions.""" questions_to_escalate = [ # Questions over 24 hours old without an answer. question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True), question(created=datetime.now() - timedelta(hours=24, minutes=50), save=True), ] # Question about Firefox OS fxos = product(slug='firefox-os', save=True) q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.products.add(fxos) questions_to_escalate.append(q) questions_not_to_escalate = [ # Questions newer than 24 hours without an answer. question(save=True), question(created=datetime.now() - timedelta(hours=11), save=True), question(created=datetime.now() - timedelta(hours=21), save=True), ] # Question older than 24 hours with a recent answer. q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) answer(created=datetime.now() - timedelta(hours=10), question=q, save=True) answer(created=datetime.now() - timedelta(hours=1), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours with a recent answer by the asker. q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) answer(created=datetime.now() - timedelta(hours=15), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours without an answer already escalated. q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.tags.add(config.ESCALATE_TAG_NAME) questions_not_to_escalate.append(q) # Question with an inactive user. q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.creator.is_active = False q.creator.save() questions_not_to_escalate.append(q) # Question about Thunderbird, which is one of the products we exclude. tb = product(slug='thunderbird', save=True) q = question(created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.products.add(tb) questions_not_to_escalate.append(q) # Run the cron job and verify only 3 questions were escalated. eq_(len(questions_to_escalate), escalate_questions())
def test_escalate_questions_cron(self, submit_ticket): """Verify the escalate cronjob escalates the right questions.""" questions_to_escalate = [ # Questions over 24 hours old without an answer. question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True), question( created=datetime.now() - timedelta(hours=24, minutes=50), save=True), ] # Question about Firefox OS fxos = product(slug='firefox-os', save=True) q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.products.add(fxos) questions_to_escalate.append(q) questions_not_to_escalate = [ # Questions newer than 24 hours without an answer. question(save=True), question(created=datetime.now() - timedelta(hours=11), save=True), question(created=datetime.now() - timedelta(hours=21), save=True), ] # Question older than 24 hours with a recent answer. q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) answer(created=datetime.now() - timedelta(hours=10), question=q, save=True) answer(created=datetime.now() - timedelta(hours=1), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours with a recent answer by the asker. q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) answer( created=datetime.now() - timedelta(hours=15), creator=q.creator, question=q, save=True) questions_not_to_escalate.append(q) # Question older than 24 hours without an answer already escalated. q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.tags.add(config.ESCALATE_TAG_NAME) questions_not_to_escalate.append(q) # Question with an inactive user. q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.creator.is_active = False q.creator.save() questions_not_to_escalate.append(q) # Question about Thunderbird, which is one of the products we exclude. tb = product(slug='thunderbird', save=True) q = question( created=datetime.now() - timedelta(hours=24, minutes=10), save=True) q.products.add(tb) questions_not_to_escalate.append(q) # Run the cron job and verify only 3 questions were escalated. eq_(len(questions_to_escalate), escalate_questions())