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'