some tests
This commit is contained in:
+73
-23
@@ -1,49 +1,99 @@
|
||||
from django.test import TestCase, Client
|
||||
from django.urls import reverse
|
||||
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
|
||||
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 = DepotUser.objects.create_user(username='testuser', password='password', user_type='EM')
|
||||
self.client.login(username='testuser', password='password')
|
||||
self.line = LinesModel.objects.create(name='Test Line')
|
||||
self.container_type = ContainerTypeModel.objects.create(name='20ft')
|
||||
|
||||
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.id,
|
||||
updated_by=self.user.id
|
||||
created_by=self.user_employee_all_rights.id,
|
||||
updated_by=self.user_employee_all_rights.id,
|
||||
vehicles='',
|
||||
vehicles_left='',
|
||||
|
||||
)
|
||||
|
||||
def test_booking_list_view(self):
|
||||
response = self.client.get(reverse('booking-list'))
|
||||
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)
|
||||
self.assertTemplateUsed(response, 'booking/booking-list.html')
|
||||
|
||||
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_booking_create_view(self):
|
||||
response = self.client.post(reverse('booking-create'), {
|
||||
self.assertTrue( self.user_client_all_rights.has_company_perm('can_view_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.assertEqual(response.status_code, 200)
|
||||
self.assertTrue(Booking.objects.filter(number='BOOK456').exists())
|
||||
|
||||
def test_booking_update_view(self):
|
||||
response = self.client.post(reverse('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')
|
||||
# def test_booking_update_view(self):
|
||||
# response = self.client.post(reverse('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')
|
||||
Binary file not shown.
Binary file not shown.
@@ -12,7 +12,7 @@ class BookingListView(LoginRequiredMixin, UserPassesTestMixin, ListView):
|
||||
|
||||
def test_func(self):
|
||||
user = self.request.user
|
||||
return self.request.user.user_type == 'EMP' or user.is_superuser
|
||||
return self.request.user.user_type == 'EM' or user.is_superuser
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = super().get_queryset()
|
||||
|
||||
Reference in New Issue
Block a user