h1. Testing EMail sending in Django

class TestOnboardingEmails(TestCase):
    MSG1 = 'Congratulations! You have now set your first '\
        'assignment'
    MSG2 = 'You have been using product for a week now'

    def setUp(self):
        self.teacher = factories.TeacherFactory.create()
        self.teacher.email = 'test@test.yacapaca.com'
        self.teacher.save()
        self.student = factories.StudentFactory.create()
        self.studentset = factories.StudentSetFactory.create(owner=self.teacher)
        self.studentset.join_student(self.student)
        self.studentset.join_teacher(self.teacher)
        self.quick = factories.QuickFactory.create()

        self.original_backend = settings.EMAIL_BACKEND
        settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'

    def tearDown(self):
        settings.EMAIL_BACKEND = self.original_backend


    def test_new_assignment(self):
        aset = AssignmentSet.create(teacher=self.teacher,
                                    assign_date=datetime.now(),
                                    studentset=self.studentset,
                                    students_list=[self.student],
                                    content_list=[{'obj': self.quick,
                                                   'attempt_max':1}])
        cmd = process_events.Command()
        cmd.handle(no_celery=True, debug=False, name=None, date=None,
                   quiet=False)
        self.assertTrue(len(mail.outbox)==1)
        self.assertTrue(self.MSG1 in
                        mail.outbox[0].message().as_string())
        self.assertTrue(self.MSG2 not in
                        mail.outbox[0].message().as_string())

        after_1_week_plus = datetime.now() + relativedelta(days=8)

        cmd.handle(no_celery=True, debug=False, name=None,
                   date=after_1_week_plus.strftime(DATE_FORMAT),
                   quiet=False)
        self.assertTrue(len(mail.outbox)==2)
        self.assertTrue(self.MSG1 not in
                        mail.outbox[1].message().as_string())
        self.assertTrue(self.MSG2 in
                        mail.outbox[1].message().as_string())


if __name__ == '__main__':
    unittest.main()