def test_generate_confirmational_email_for_student_that_already_received_email(self):
        """
        Students that already received confirmational email
        should not receive another one
        """
        self.student2.has_received_email = True
        self.student2.save()

        template = self.email_confirmation_template.name
        confirm_interview_url = "confirm-interview-test-url"
        choose_interview_url = "choose-interview-test-url"

        confirm_email_generator = GenerateConfirmEmails(
            template, confirm_interview_url, choose_interview_url)

        confirm_email_generator.generate_confirmation_emails()

        client = Client()
        client.login(
            email=self.teacher_admin.email,
            password='******'
        )

        url = reverse('admin:post_office_email_changelist')
        response = client.get(url, follow=True)

        result_list = response.context_data['cl'].result_list

        # Two students dont have interviews and the third already received email
        # There should be no emails generated in Email change list
        self.assertEqual(len(result_list), 0)
    def test_generate_confirmational_email_for_student_without_interview(self):
        """
        Students without interview date should not receive email
        """
        template = self.email_confirmation_template.name
        confirm_interview_url = "confirm-interview-test-url"
        choose_interview_url = "choose-interview-test-url"

        confirm_email_generator = GenerateConfirmEmails(
            template, confirm_interview_url, choose_interview_url)

        confirm_email_generator.generate_confirmation_emails()

        client = Client()
        client.login(
            email=self.teacher_admin.email,
            password='******'
        )

        url = reverse('admin:post_office_email_changelist')
        response = client.get(url, follow=True)

        result_list = response.context_data['cl'].result_list

        # All three students dont have interviews
        # There should be no emails generated in Email change list
        self.assertEqual(len(result_list), 0)
    def test_generate_confirmational_email_for_student_with_interview(self):
        """
        Students without interview date should not receive email
        Students that already received confirmational email
        should not receive another one
        """
        self.interview_slot1.student = self.student1
        self.interview_slot1.save()
        self.student1.has_interview_date = True
        self.student1.save()

        template = self.email_confirmation_template.name
        confirm_interview_url = "confirm-interview-test-url"
        choose_interview_url = "choose-interview-test-url"

        confirm_email_generator = GenerateConfirmEmails(
            template, confirm_interview_url, choose_interview_url)

        confirm_email_generator.generate_confirmation_emails()

        client = Client()
        client.login(
            email=self.teacher_admin.email,
            password='******'
        )

        url = reverse('admin:post_office_email_changelist')
        response = client.get(url, follow=True)

        result_list = response.context_data['cl'].result_list

        # Only email for self.student1 should be in Email change list
        self.assertEqual(len(result_list), 1)
        self.assertEqual(result_list[0].to[0], self.student1.email)
    def test_generate_confirmational_email_for_student_that_already_received_email(
            self):
        """
        Students that already received confirmational email
        should not receive another one
        """
        self.student2.has_received_email = True
        self.student2.save()

        template = self.email_confirmation_template.name
        confirm_interview_url = "confirm-interview-test-url"
        choose_interview_url = "choose-interview-test-url"

        confirm_email_generator = GenerateConfirmEmails(
            template, confirm_interview_url, choose_interview_url)

        confirm_email_generator.generate_confirmation_emails()

        client = Client()
        client.login(email=self.teacher_admin.email, password='******')

        url = reverse('admin:post_office_email_changelist')
        response = client.get(url, follow=True)

        result_list = response.context_data['cl'].result_list

        # Two students dont have interviews and the third already received email
        # There should be no emails generated in Email change list
        self.assertEqual(len(result_list), 0)
    def test_generate_confirmational_email_for_student_with_interview(self):
        """
        Students without interview date should not receive email
        Students that already received confirmational email
        should not receive another one
        """
        self.interview_slot1.student = self.student1
        self.interview_slot1.save()
        self.student1.has_interview_date = True
        self.student1.save()

        template = self.email_confirmation_template.name
        confirm_interview_url = "confirm-interview-test-url"
        choose_interview_url = "choose-interview-test-url"

        confirm_email_generator = GenerateConfirmEmails(
            template, confirm_interview_url, choose_interview_url)

        confirm_email_generator.generate_confirmation_emails()

        client = Client()
        client.login(email=self.teacher_admin.email, password='******')

        url = reverse('admin:post_office_email_changelist')
        response = client.get(url, follow=True)

        result_list = response.context_data['cl'].result_list

        # Only email for self.student1 should be in Email change list
        self.assertEqual(len(result_list), 1)
        self.assertEqual(result_list[0].to[0], self.student1.email)
    def test_generate_confirmational_email_for_student_without_interview(self):
        """
        Students without interview date should not receive email
        """
        template = self.email_confirmation_template.name
        confirm_interview_url = "confirm-interview-test-url"
        choose_interview_url = "choose-interview-test-url"

        confirm_email_generator = GenerateConfirmEmails(
            template, confirm_interview_url, choose_interview_url)

        confirm_email_generator.generate_confirmation_emails()

        client = Client()
        client.login(email=self.teacher_admin.email, password='******')

        url = reverse('admin:post_office_email_changelist')
        response = client.get(url, follow=True)

        result_list = response.context_data['cl'].result_list

        # All three students dont have interviews
        # There should be no emails generated in Email change list
        self.assertEqual(len(result_list), 0)