You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
5.5 KiB
Python
101 lines
5.5 KiB
Python
from django.test import TestCase, Client
|
|
from django.urls import reverse, reverse_lazy
|
|
from django.contrib.auth import get_user_model
|
|
|
|
from accounts.models import ClientPermission
|
|
from booking.models import Booking
|
|
from common.models import LinesModel, ContainerTypeModel, CompanyModel
|
|
|
|
|
|
class BookingViewsTestCase(TestCase):
|
|
def setUp(self):
|
|
self.company = CompanyModel.objects.create(name='Test Company')
|
|
self.line = LinesModel.objects.create(name='Test Line', company_id=self.company.id)
|
|
self.container_type = ContainerTypeModel.objects.get(name='20GP')
|
|
|
|
self.user_password = 'password'
|
|
self.client = Client()
|
|
DepotUser = get_user_model()
|
|
|
|
self.user_client_no_rights = DepotUser.objects.create_user(username='user_client_no_rights', password=self.user_password, user_type='CL', email='user_client_no_rights@gmail.com')
|
|
|
|
self.user_client_all_rights = DepotUser.objects.create_user(username='user_client_all_rights', password=self.user_password, user_type='CL', email='user_client_all_rights@gmail.com', line=self.line, company=self.company)
|
|
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_view_booking').id)
|
|
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_manage_booking').id)
|
|
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_view_preinfo').id)
|
|
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_manage_preinfo').id)
|
|
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_view_payment').id)
|
|
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_manage_payment').id)
|
|
self.user_client_all_rights.company_permissions.add(ClientPermission.objects.get(codename='can_manage_company_users').id)
|
|
|
|
|
|
self.user_employee_no_rights = DepotUser.objects.create_user(username='user_employee_no_rights', password=self.user_password, user_type='EM', email='user_employee_no_rights@gmail.com')
|
|
|
|
self.user_employee_all_rights = DepotUser.objects.create_user(username='user_employee_all_rights', password=self.user_password, user_type='EM', email='user_employee_all_rights@gmail.com')
|
|
self.user_employee_all_rights.employee_permissions.add(1)
|
|
self.user_employee_all_rights.employee_permissions.add(2)
|
|
self.user_employee_all_rights.employee_permissions.add(3)
|
|
self.user_employee_all_rights.employee_permissions.add(4)
|
|
self.user_employee_all_rights.employee_permissions.add(5)
|
|
|
|
self.booking = Booking.objects.create(
|
|
number='BOOK123',
|
|
container_type=self.container_type,
|
|
container_count=10,
|
|
line=self.line,
|
|
created_by=self.user_employee_all_rights.id,
|
|
updated_by=self.user_employee_all_rights.id,
|
|
vehicles='K1,J2,K3',
|
|
vehicles_left='K1,J2,K3',
|
|
|
|
)
|
|
|
|
def test_employee_booking_list_view__anonymouse_user__expect_redirect_302(self):
|
|
response = self.client.get(reverse_lazy('employee_bookings'))
|
|
self.assertEqual(response.status_code, 302)
|
|
|
|
def test_employee_booking_list_view__client_user_login__expect_forbidden_403(self):
|
|
self.client.login(username=self.user_client_no_rights.username, password=self.user_password)
|
|
response = self.client.get(reverse_lazy('employee_bookings'))
|
|
self.assertEqual(response.status_code, 403)
|
|
|
|
def test_employee_booking_list_view__user_login__expect_redirect_200(self):
|
|
self.client.login(username=self.user_employee_no_rights.username, password=self.user_password)
|
|
response = self.client.get(reverse_lazy('employee_bookings'))
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
def test_booking_list_view__user_all_rights__expect_OK(self):
|
|
self.client.login(username=self.user_employee_all_rights.username, password=self.user_password)
|
|
response = self.client.get(reverse_lazy('employee_bookings'))
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
self.assertTemplateUsed(response, 'employee/booking-list.html')
|
|
self.assertContains(response, self.booking.number)
|
|
|
|
def test_client_create_booking__expect_redirect_to_booking_list_and_booking_in_db(self):
|
|
self.assertTrue( self.user_client_all_rights.has_company_perm('can_manage_booking'))
|
|
self.client.login(username=self.user_client_all_rights.username, password=self.user_password)
|
|
|
|
response = self.client.post(reverse('client_booking_create'), {
|
|
'number': 'BOOK456',
|
|
'container_type': self.container_type.id,
|
|
'container_count': 5,
|
|
'line': self.line.id,
|
|
'vehicles': 'Truck1,Truck2',
|
|
'vehicles_left': 'Truck1,Truck2',
|
|
})
|
|
self.assertEqual(response.status_code, 302)
|
|
self.assertTrue(Booking.objects.filter(number='BOOK456').exists())
|
|
|
|
def test_booking_update_view(self):
|
|
self.client.login(username=self.user_client_all_rights.username, password=self.user_password)
|
|
response = self.client.post(reverse('client_booking_update', args=[self.booking.id]), {
|
|
'number': 'BOOK123-updated',
|
|
'container_type': self.container_type.id,
|
|
'container_count': 15,
|
|
'line': self.line.id,
|
|
})
|
|
self.assertEqual(response.status_code, 302)
|
|
self.booking.refresh_from_db()
|
|
self.assertEqual(self.booking.number, 'BOOK123-updated')
|