Skip to content
Snippets Groups Projects
Commit 5f96f4db authored by Piotr Gawron's avatar Piotr Gawron
Browse files

Merge branch 'unit-tests' into 'master'

Unit tests

See merge request !74
parents bfce6880 d0202b38
No related branches found
No related tags found
1 merge request!74Unit tests
Pipeline #
......@@ -33,3 +33,6 @@ MEDIA_ROOT = '/tmp/media' # Warning! `/tmp` directory can be flushed in any mom
ALLOWED_HOSTS = ["127.0.0.1", "localhost"]
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
NEXMO_API_KEY = 'API_KEY'
NEXMO_API_SECRET = 'API_SECRET'
NEXMO_DEFAULT_FROM = 'Scheduling' # the sender of the message (phone number or text)
coverage
django-debug-toolbar
\ No newline at end of file
django-debug-toolbar
mockito
[report]
precision=2
# coding=utf-8
from __future__ import unicode_literals
import datetime
from django.contrib.auth.models import User
from configuration_item import ConfigurationItem
......@@ -25,10 +23,6 @@ from missing_subject import MissingSubject
from inconsistent_subject import InconsistentSubject, InconsistentField
def get_current_year():
return datetime.datetime.now().year
__all__ = [FlyingTeam, Appointment, AppointmentType, Availability, Holiday, Item, Language, Location, Room, Subject,
Visit, Worker, ContactAttempt, ConfigurationItem, MailTemplate, AppointmentTypeLink, MissingSubject,
InconsistentSubject, InconsistentField]
......@@ -78,9 +78,6 @@ class Worker(models.Model):
@staticmethod
def get_details(the_user):
if not the_user.is_authenticated:
return 'Guest', 'Test account'
person = Worker.objects.filter(user=the_user)
if len(person) == 0:
......
......@@ -25,9 +25,6 @@ class Nexmo:
self.client = nexmo.Client(key=getattr(settings, 'NEXMO_API_KEY'), secret=getattr(settings, 'NEXMO_API_SECRET'))
self.default_from = getattr(settings, 'NEXMO_DEFAULT_FROM')
def make_call(self, device, token):
pass
def send_sms(self, device, token):
body = 'Your authentication token is %s' % token
phone_number = device.number.as_e164
......
import datetime
import os
from django.contrib.auth.models import User
from web.redcap_connector import RedcapSubject
from web.models import Location, AppointmentType, Subject, Worker, Visit, Appointment, ConfigurationItem, Language, \
ContactAttempt, FlyingTeam
from web.models.constants import SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL, CONTACT_TYPES_PHONE
ContactAttempt, FlyingTeam, Availability
from web.models.constants import SEX_CHOICES_MALE, SUBJECT_TYPE_CHOICES_CONTROL, CONTACT_TYPES_PHONE, \
MONDAY_AS_DAY_OF_WEEK
from web.redcap_connector import RedcapSubject
from web.views.notifications import get_today_midnight_date
......@@ -98,6 +98,17 @@ def create_worker(user=None, with_test_location=False):
return worker
def create_availability(worker=None):
if worker is None:
worker = create_worker()
availability = Availability.objects.create(person=worker,
day_number=MONDAY_AS_DAY_OF_WEEK,
available_from=get_today_midnight_date(),
available_till=get_today_midnight_date(),
)
return availability
def create_visit(subject=None):
if subject is None:
subject = create_subject()
......
# coding=utf-8
from django.test import TestCase
from mockito import when, verify, ARGS
from phonenumbers import PhoneNumber
from two_factor.models import PhoneDevice
from web.nexmo_gateway import Nexmo
class TestNexmo(TestCase):
def test_send_sms(self):
nexmo = Nexmo()
when(nexmo.client).send_message(*ARGS).thenReturn(True)
device = PhoneDevice()
device.number = PhoneNumber()
nexmo.send_sms(device=device, token="xxy")
verify(nexmo.client).send_message(*ARGS)
......@@ -96,23 +96,22 @@ class ViewFunctionsTests(LoggedInTestCase):
self.assertEqual(appointment1, result['appointments'][1])
self.assertEqual(appointment2, result['appointments'][2])
def test_kit_requests_send_email(self):
item_name = "Test item to be ordered"
item = Item.objects.create(disposable=True, name=item_name)
appointment_type = create_appointment_type()
appointment_type.required_equipment.add(item)
appointment_type.save()
def test_kit_requests_send_email(self):
item_name = "Test item to be ordered"
item = Item.objects.create(disposable=True, name=item_name)
appointment_type = create_appointment_type()
appointment_type.required_equipment.add(item)
appointment_type.save()
appointment = create_appointment()
appointment.datetime_when = get_today_midnight_date() + datetime.timedelta(days=2)
appointment.save()
AppointmentTypeLink.objects.create(appointment=appointment, appointment_type=appointment_type)
appointment = create_appointment()
appointment.datetime_when = get_today_midnight_date() + datetime.timedelta(days=2)
appointment.save()
AppointmentTypeLink.objects.create(appointment=appointment, appointment_type=appointment_type)
response = self.client.get(reverse('web.views.kit_requests_send_mail',
kwargs={'start_date': str(get_today_midnight_date().strftime("%Y-%m-%d"))}))
self.assertEqual(response.status_code, 200)
response = self.client.get(reverse('web.views.kit_requests_send_mail',
kwargs={'start_date': str(get_today_midnight_date().strftime("%Y-%m-%d"))}))
self.assertEqual(response.status_code, 200)
self.assertTrue(item_name in response.content)
self.assertTrue(item_name in response.content)
self.assertEqual(1, len(mail.outbox))
self.assertEqual(1, len(mail.outbox))
import logging
from django.urls import reverse
from web.tests.functions import create_language, create_location, create_availability
from web.forms import WorkerAddForm
from web.tests import create_worker
from web.models import Worker
from .. import LoggedInTestCase
logger = logging.getLogger(__name__)
class DoctorViewTests(LoggedInTestCase):
def test_render_workers_list_request(self):
create_worker()
response = self.client.get(reverse('web.views.doctors'))
self.assertEqual(response.status_code, 200)
def test_render_add_worker_request(self):
create_worker()
response = self.client.get(reverse('web.views.doctor_add'))
self.assertEqual(response.status_code, 200)
def test_render_worker_added_request(self):
language = create_language()
location = create_location()
count = Worker.objects.all().count()
form = WorkerAddForm()
form_data = {}
for key, value in form.initial.items():
if value is not None:
form_data[key] = value
form_data["first_name"] = "John"
form_data["last_name"] = "Doe"
form_data["phone_number"] = "0123456789"
form_data["unit"] = "TEST DEPARTMENT"
form_data["email"] = "john.doe@unknown.domain.com"
form_data["role"] = Worker.ROLE_CHOICES_DOCTOR
form_data["specialization"] = "tester"
form_data["languages"] = [language.id]
form_data["locations"] = [location.id]
response = self.client.post(reverse('web.views.doctor_add'), data=form_data)
self.assertEqual(response.status_code, 302)
new_count = Worker.objects.all().count()
self.assertEqual(count + 1, new_count)
def test_render_edit_worker_request(self):
worker = create_worker()
response = self.client.get(reverse('web.views.doctor_edit', args=[worker.id]))
self.assertEqual(response.status_code, 200)
def test_render_add_availability_request(self):
worker = create_worker()
response = self.client.get(reverse('views.doctor.doctor_availability_add', args=[worker.id]))
self.assertEqual(response.status_code, 200)
def test_render_edit_availability_request(self):
worker = create_worker()
availability = create_availability(worker)
response = self.client.get(reverse('web.views.doctor_availability_edit', args=[availability.id]))
self.assertEqual(response.status_code, 200)
def test_render_add_holiday_request(self):
worker = create_worker()
response = self.client.get(reverse('views.doctor.doctor_holiday_add', args=[worker.id]))
self.assertEqual(response.status_code, 200)
import logging
from django.urls import reverse
from .. import LoggedInTestCase
logger = logging.getLogger(__name__)
class RedcapViewTests(LoggedInTestCase):
def test_render_workers_list_request(self):
response = self.client.get(reverse('web.views.missing_redcap_subject'))
self.assertEqual(response.status_code, 200)
def test_render_add_worker_request(self):
response = self.client.get(reverse('web.views.inconsistent_redcap_subject'))
self.assertEqual(response.status_code, 200)
......@@ -81,7 +81,8 @@ urlpatterns = [
#########################
url(r'^redcap/missing_subjects$', views.redcap.missing_subjects, name='web.views.missing_redcap_subject'),
url(r'^redcap/inconsistent_subjects$', views.redcap.inconsistent_subjects, name='web.views.inconsistent_redcap_subject'),
url(r'^redcap/inconsistent_subjects$', views.redcap.inconsistent_subjects,
name='web.views.inconsistent_redcap_subject'),
####################
# CONTACTS #
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment