diff --git a/smash/web/tests/functions.py b/smash/web/tests/functions.py index 8261bd6335145cc090f610467b3a7c6523eaeaef..8e7cb61c5281c6b4c5f653c85792c3a62dc63d43 100644 --- a/smash/web/tests/functions.py +++ b/smash/web/tests/functions.py @@ -6,7 +6,7 @@ from django.contrib.auth.models import User from web.models import Location, AppointmentType, StudySubject, Worker, Visit, Appointment, ConfigurationItem, \ Language, ContactAttempt, FlyingTeam, Availability, Subject, Study, StudyColumns, StudyNotificationParameters, \ - VoucherType, VoucherTypePrice, Voucher + VoucherType, VoucherTypePrice, Voucher, Room, Item from web.models.constants import REDCAP_TOKEN_CONFIGURATION_TYPE, REDCAP_BASE_URL_CONFIGURATION_TYPE, \ SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL, CONTACT_TYPES_PHONE, \ MONDAY_AS_DAY_OF_WEEK, COUNTRY_AFGHANISTAN_ID, VOUCHER_STATUS_NEW @@ -245,6 +245,21 @@ def create_flying_team(place=None): return result +def create_item(name='Test item', is_fixed=False, disposable=False): + item = Item(name=name, is_fixed=is_fixed, disposable=disposable) + item.save() + return item + + +def create_room(owner='Test owner', city='Test city', + address='Test address', equipment=[], + floor=1, is_vehicle=False, room_number=1): + room = Room(owner=owner, city=city, address=address, equipment=equipment, + floor=floor, is_vehicle=is_vehicle, room_number=room_number) + room.save() + return room + + def create_language(name="French", locale="fr_FR"): language = Language(name=name, locale=locale) language.save() diff --git a/smash/web/tests/view/test_equipments.py b/smash/web/tests/view/test_equipments.py new file mode 100644 index 0000000000000000000000000000000000000000..918ed72d1ab9ca33d139c65e2f0294b73b29d49b --- /dev/null +++ b/smash/web/tests/view/test_equipments.py @@ -0,0 +1,75 @@ +import logging + +from django.urls import reverse + +from web.tests.functions import create_item +from web.models import Item +from web.tests import LoggedInTestCase + +logger = logging.getLogger(__name__) + + +class EquipmentTests(LoggedInTestCase): + def test_equipment_requests(self): + pages = [ + 'web.views.equipment', + 'web.views.equipment_add', + ] + + for page in pages: + response = self.client.get(reverse(page)) + self.assertEqual(response.status_code, 200) + + def test_equipment_edit_request(self): + item = create_item() + page = reverse('web.views.equipment_edit', + kwargs={'equipment_id': str(item.id)}) + response = self.client.get(page) + self.assertEqual(response.status_code, 200) + + def test_equipment_delete_request(self): + item = create_item() + page = reverse('web.views.equipment_delete', + kwargs={'equipment_id': str(item.id)}) + response = self.client.get(page) + self.assertEqual(response.status_code, 200) + + def test_equipment_add(self): + page = reverse('web.views.equipment_add') + data = { + 'name': 'The mysterious potion', + 'disposable': True, + 'is_fixed': False, + } + response = self.client.post(page, data) + self.assertEqual(response.status_code, 302) + + freshly_created = Item.objects.filter(name=data['name']) + self.assertEqual(len(freshly_created), 1) + + def test_equipment_edit(self): + item = create_item() + page = reverse('web.views.equipment_edit', + kwargs={'equipment_id': str(item.id)}) + data = { + 'name': 'Even more mysterious potion', + 'disposable': True, + 'is_fixed': True, + } + response = self.client.post(page, data) + self.assertEqual(response.status_code, 302) + + freshly_edited = Item.objects.get(id=item.id) + for key in data: + self.assertEqual(getattr(freshly_edited, key, ''), data[key]) + + def test_equipment_delete(self): + item = create_item() + page = reverse('web.views.equipment_delete', + kwargs={'equipment_id': str(item.id)}) + + response = self.client.post(page, data) + self.assertEqual(response.status_code, 302) + + freshly_deleted = Item.objects.filter(id=item.id) + self.assertEqual(len(freshly_deleted), 0) diff --git a/smash/web/tests/view/test_rooms.py b/smash/web/tests/view/test_rooms.py new file mode 100644 index 0000000000000000000000000000000000000000..a921cfb9af09f4fe68a0e30b75738df33067da51 --- /dev/null +++ b/smash/web/tests/view/test_rooms.py @@ -0,0 +1,83 @@ +import logging + +from django.urls import reverse + +from web.tests.functions import create_room, create_item +from web.models import Item, Room +from web.tests import LoggedInTestCase + +logger = logging.getLogger(__name__) + + +class RoomsTests(LoggedInTestCase): + def test_rooms_requests(self): + pages = [ + 'web.views.equipment_and_rooms.rooms', + 'web.views.equipment_and_rooms.rooms_add', + ] + + for page in pages: + response = self.client.get(reverse(page)) + self.assertEqual(response.status_code, 200) + + def test_rooms_edit_request(self): + room = create_room() + page = reverse('web.views.equipment_and_rooms.rooms_edit', + kwargs={'room_id': str(room.id)}) + response = self.client.get(page) + self.assertEqual(response.status_code, 200) + + def test_rooms_delete_request(self): + room = create_room() + page = reverse('web.views.equipment_and_rooms.rooms_delete', + kwargs={'room_id': str(room.id)}) + response = self.client.get(page) + self.assertEqual(response.status_code, 200) + + def test_rooms_add(self): + page = reverse('web.views.equipment_and_rooms.rooms_add') + item = create_item() + data = { + 'city': 'Belval', + 'address': 'Av. du Swing 123456', + 'room_number': 123, + 'floor': 456, + 'is_vehicle': False, + 'owner': 'No one', + 'equipment': [item.id] + } + response = self.client.post(page, data) + self.assertEqual(response.status_code, 302) + + freshly_created = Room.objects.filter(address=data['address']) + self.assertEqual(len(freshly_created), 1) + + def test_rooms_edit(self): + room = create_room() + page = reverse('web.views.equipment_and_rooms.rooms_edit', + kwargs={'room_id': str(room.id)}) + data = { + 'city': 'Belval2', + 'address': 'Av. du Swing ABCDE', + 'room_number': 5, + 'floor': 8, + 'is_vehicle': True, + 'owner': 'Everyone', + } + response = self.client.post(page, data) + self.assertEqual(response.status_code, 302) + + freshly_edited = Room.objects.get(id=room.id) + for key in data: + self.assertEqual(getattr(freshly_edited, key, ''), data[key]) + + def test_rooms_delete(self): + room = create_room() + page = reverse('web.views.equipment_and_rooms.rooms_delete', + kwargs={'room_id': str(room.id)}) + + response = self.client.post(page, data) + self.assertEqual(response.status_code, 302) + + freshly_deleted = Room.objects.filter(id=room.id) + self.assertEqual(len(freshly_deleted), 0) diff --git a/smash/web/urls.py b/smash/web/urls.py index cd0f9de0a8f8081aea413640f2672834b115c097..88897c1fb0355453f5e84363eec67ed2a2f64f74 100644 --- a/smash/web/urls.py +++ b/smash/web/urls.py @@ -122,18 +122,22 @@ urlpatterns = [ #################### url(r'^equipment_and_rooms$', views.equipment_and_rooms.equipment_and_rooms, name='web.views.equipment_and_rooms'), + + url(r'^equipment_and_rooms/equipment$', views.equipment.equipment, name='web.views.equipment'), url(r'^equipment_and_rooms/equipment/add$', views.equipment.equipment_add, name='web.views.equipment_add'), url(r'^equipment_and_rooms/equipment/edit/(?P<equipment_id>\d+)$', views.equipment.equipment_edit, name='web.views.equipment_edit'), url(r'^equipment_and_rooms/equipment/delete/(?P<equipment_id>\d+)$', views.equipment.equipment_delete, name='web.views.equipment_delete'), - url(r'^equipment_and_rooms/equipment$', views.equipment.equipment, name='web.views.equipment'), + url(r'^equipment_and_rooms/kit_requests$', views.kit.kit_requests, name='web.views.kit_requests'), url(r'^equipment_and_rooms/kit_requests/(?P<start_date>[\w-]+)/$', views.kit.kit_requests_send_mail, name='web.views.kit_requests_send_mail'), url(r'^equipment_and_rooms/kit_requests/(?P<start_date>[\w-]+)/(?P<end_date>[\w-]+)/$', views.kit.kit_requests_send_mail, name='web.views.kit_requests_send_mail'), + url(r'^equipment_and_rooms/flying_teams$', views.flying_teams.flying_teams, name='web.views.equipment_and_rooms.flying_teams'), url(r'^equipment_and_rooms/flying_teams/add$', views.flying_teams.flying_teams_add, name='web.views.equipment_and_rooms.flying_teams_add'), url(r'^equipment_and_rooms/flying_teams/edit/(?P<flying_team_id>\d+)$', views.flying_teams.flying_teams_edit, name='web.views.equipment_and_rooms.flying_teams_edit'), + url(r'^equipment_and_rooms/rooms$', views.rooms.rooms, name='web.views.equipment_and_rooms.rooms'), url(r'^equipment_and_rooms/rooms/add$', views.rooms.rooms_add, name='web.views.equipment_and_rooms.rooms_add'), url(r'^equipment_and_rooms/rooms/edit/(?P<room_id>\d+)$', views.rooms.rooms_edit, name='web.views.equipment_and_rooms.rooms_edit'),