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/agent/test_views.py
from flask import url_for, json
from flask_babel import gettext as _

from buyercall.blueprints.agents.models import Agent
from buyercall.blueprints.partnership.models import PartnershipAccount
from buyercall.blueprints.user.models import User
from buyercall.tests.lib.util import ViewTestMixin
from buyercall.tests.lib.assertions import assert_status_with_message


class TestAgentViews(ViewTestMixin):

    def test_onboarding_agents_logged_out(self):
        """Onboarding page redirects to login page."""
        response = self.client.get(url_for('agents.onboarding_agents'))
        assert_status_with_message(302, response, _('agents_onboarding'))

    def test_onboarding_agents(self):
        """Onboarding page renders successfully."""
        self.login()
        response = self.client.get(url_for('agents.onboarding_agents'), follow_redirects=True)
        assert_status_with_message(200, response, _('Agents & Groups Onboarding'))

    def test_onboarding_agents_true(self):
        """Onboarding page redirect to agents page."""
        self.login()
        response = self.client.post(url_for('agents.onboarding_agents'), follow_redirects=True)
        assert_status_with_message(200, response, _('Forwarding Agents & Groups List'))

    def test_call_agents(self):
        """Agents Call renders successfully."""
        self.login()
        response = self.client.get(url_for('agents.call_agents'))
        assert_status_with_message(200, response, _('Agents & Groups Table'))

    def test_agent_new_page(self, users):
        """New Agent creation form renders successfully."""
        self.login()
        response = self.client.get(url_for('agents.agent_new'))
        assert response.status_code == 200
        assert b'Schedule' in response.data
        assert b'Details' in response.data
        assert b'Groups' in response.data

    def test_agent_new(self, users):
        """Create new agent."""

        params = {
            'firstname': 'agent_first_name',
            'lastname': 'agent_last_name',
            'email': 'agentEmail@test.com',
            'phonenumber': '9898989898',
            'title': 'mr',
            'mobile': '1234567890',
        }
        self.login()
        old_agent_count = Agent.query.count()
        response = self.client.post(
            url_for('agents.agent_new'),
            data=params,
            follow_redirects=True
        )
        new_agent_count = Agent.query.count()

        assert response.status_code == 200
        assert new_agent_count == old_agent_count + 1

    def test_agent_new_failure(self, users):
        """Create new agent."""
        # firstname is missing
        params = {
            'lastname': 'agent_last_name',
            'email': 'agentEmail@test.com',
            'phonenumber': '9898989898',
            'title': 'mr',
            'mobile': '1234567890',
        }
        self.login()
        old_agent_count = Agent.query.count()
        response = self.client.post(
            url_for('agents.agent_new'),
            data=params,
            follow_redirects=True
        )
        new_agent_count = Agent.query.count()

        assert response.status_code == 200
        assert new_agent_count == old_agent_count

    def test_edit_agent_page(self, agents):
        """Edit Agent page renders successfully."""

        agent = Agent.query.first()
        self.login()
        response = self.client.get(
            url_for('agents.agent_edit', id=agent.id),
            follow_redirects=True
        )
        assert_status_with_message(200, response, _('Edit Agent'))

    def test_edit_agent(self, agents):
        """Edit Agent page renders successfully."""

        agent = Agent.query.first()
        params = {
            'firstname': 'edited_first_name'
        }
        self.login()
        response = self.client.post(
            url_for('agents.agent_edit', id=agent.id),
            data=params,
            follow_redirects=True
        )
        edited_agent = Agent.query.filter(Agent.id == agent.id).first()
        assert response.status_code == 200
        assert edited_agent.firstname == 'edited_first_name'

    def test_convert_to_user(self, agents):
        """ Convert an existing agent to User."""
        agent = Agent.query.first()
        old_user_count = User.query.count()
        self.login()
        response = self.client.post(
            url_for('agents.convert_to_user'),
            data={'a_to_u_agent_id': agent.id},
            follow_redirects=True
        )
        new_user_count = User.query.count()
        assert response.status_code == 200
        assert new_user_count == old_user_count + 1

    def test_delete_agent(self):
        """Delete a agent."""
        agent = Agent.query.first()
        self.login()
        response = self.client.delete(
            url_for('agents.agent_delete', id=agent.id),
            follow_redirects=True
        )
        assert agent.is_deactivated == True
        assert response.status_code == 200

    def test_agent_group_new_page(self, users):
        """New Agent Group creation form renders successfully."""
        self.login()
        response = self.client.get(url_for('agents.group_new'))
        assert response.status_code == 200
        assert b'Add New Group' in response.data
        assert b'Schedule' in response.data
        assert b'Details' in response.data
        assert b'Groups' in response.data

    def test_agent_group_new(self, users):
        """Create new agent group."""

        params = {
            'name': 'tbd_agent_group_name',
            'description': 'tbd_agent_group_description',
        }
        self.login()
        old_agent_count = Agent.query.filter(Agent.is_group == True).count()
        response = self.client.post(
            url_for('agents.group_new'),
            data=params,
            follow_redirects=True
        )
        new_agent_count = Agent.query.filter(Agent.is_group == True).count()
        assert response.status_code == 200
        assert new_agent_count == old_agent_count + 1

    def test_edit_agent_group_page(self):
        """Edit Agent page renders successfully."""

        agent = Agent.query.filter(Agent.is_group == True).first()
        self.login()
        response = self.client.get(
            url_for('agents.group_edit', id=agent.id),
            follow_redirects=True
        )
        assert_status_with_message(200, response, _('Edit Group'))

    def test_edit_agent_group(self):
        """Edit Agent page renders successfully."""

        agent = Agent.query.filter(Agent.is_group == True).first()
        params = {
            'name': 'edited_group_name'
        }
        self.login()
        response = self.client.post(
            url_for('agents.group_edit', id=agent.id),
            data=params,
            follow_redirects=True
        )
        edited_agent = Agent.query.filter(Agent.is_group == True, Agent.id == agent.id).first()
        assert response.status_code == 200
        assert edited_agent.firstname == 'edited_group_name'