HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall_forms/buyercall/buyercall/tests/forms/test_views.py
from flask import url_for
from flask_babel import gettext as _

from buyercall.tests.lib.util import ViewTestMixin
from buyercall.tests.lib.assertions import assert_status_with_message
from buyercall.blueprints.form_leads.models import ExternalForm, FormLead, FormLeadField


class TestFormViews(ViewTestMixin):

    def test_form_list_logged_out(self):
        """Form list page redirects to login."""
        response = self.client.get(url_for('form_leads.forms_list'))
        assert_status_with_message(302, response, _('forms'))

    def test_form_list(self, form_leads):
        """Form list page renders successfully."""
        self.login()
        response = self.client.get(url_for('form_leads.forms_list'))
        assert_status_with_message(200, response, _('Forms List'))

    def test_leads_list_logged_out(self):
        """Lead list page redirects to login."""
        response = self.client.get(url_for('form_leads.leads_list', form_id=1))
        assert_status_with_message(302, response, _('login'))
        assert b'forms' in response.data
        assert b'leads' in response.data

    def test_leads_list(self):
        """Lead list page renders successfully."""
        self.login()
        form = ExternalForm.query.first()
        response = self.client.get(url_for('form_leads.leads_list', form_id=form.id))
        assert_status_with_message(200, response, _('buyercall - Form Lead List'))

    def test_form_edit_logged_out(self):
        """Form update redirects to login."""
        response = self.client.get(url_for('form_leads.form_edit', id_=1))
        assert_status_with_message(302, response, _('login'))
        assert b'forms' in response.data

    def test_form_edit_page(self):
        """Form update page renders successfully."""
        self.login()
        form = ExternalForm.query.first()
        response = self.client.get(url_for('form_leads.form_edit', id_=form.id))
        assert_status_with_message(200, response, _('Edit Form'))

    def test_update_form(self):
        """Edited a form."""
        self.login()
        params = {
            'display_name': 'edited_form'
        }
        form = ExternalForm.query.first()
        response = self.client.post(
            url_for('form_leads.form_update', id_=form.id),
            data=params,
            follow_redirects=True
        )
        edited_form = ExternalForm.query.filter(ExternalForm.id == form.id).first()
        assert edited_form.display_name == 'edited_form'
        assert_status_with_message(200, response, _('Forms List'))

    def test_form_update_logged_out(self):
        """Form update redirects to login."""
        response = self.client.get(url_for('form_leads.form_update', id_=1))
        assert_status_with_message(302, response, _('login'))
        assert b'forms' in response.data

    def test_form_leads_edit_logged_out(self):
        """Form update redirects to login."""
        response = self.client.get(url_for('form_leads.form_leads_edit', id_=1))
        assert_status_with_message(302, response, _('login'))
        assert b'form_leads' in response.data

    def test_form_leads_edit_page(self):
        """Form update page renders successfully."""
        self.login()
        form = ExternalForm.query.first()
        form_lead = FormLead.query.filter(FormLead.form_id == form.id).first()
        response = self.client.get(url_for('form_leads.form_leads_edit', id_=form_lead.id))
        assert_status_with_message(200, response, _('Edit Form Lead'))

    def test_form_leads_update_form(self):
        """Edited a form."""
        self.login()
        form = ExternalForm.query.first()
        form_lead = FormLead.query.filter(FormLead.form_id == form.id).first()
        form_lead_field = FormLeadField.query.filter(FormLeadField.lead_id == form_lead.id).first()
        params = {
            'field-{}'.format(form_lead_field.field_id): 'edited_field_value'
        }
        response = self.client.post(
            url_for('form_leads.form_leads_update', id_=form_lead.id),
            data=params,
            follow_redirects=True
        )
        edited_form_lead_field = FormLeadField.query.filter(FormLeadField.lead_id == form_lead.id).first()
        from buyercall.blueprints.form_leads.views import decrypt_value
        assert decrypt_value(edited_form_lead_field.field_value) == 'edited_field_value'
        assert_status_with_message(200, response, _('buyercall - Form Lead List'))

    def test_form_leads_update_logged_out(self):
        """Form update redirects to login."""
        response = self.client.get(url_for('form_leads.form_leads_update', id_=1))
        assert_status_with_message(302, response, _('login'))
        assert b'form_leads' in response.data