From fdc2f98358b60d3d096260dde34ca71828504485 Mon Sep 17 00:00:00 2001
From: mahesh
Date: Wed, 7 Jun 2017 18:47:35 +0530
Subject: Adds coverage and moves test scripts to a separate folder
---
.coveragerc | 18 +++
.travis.yml | 7 +-
requirements.txt | 1 +
workshop_app/test_models.py | 189 -----------------------------
workshop_app/test_views.py | 245 --------------------------------------
workshop_app/tests/__init__.py | 0
workshop_app/tests/test_models.py | 189 +++++++++++++++++++++++++++++
workshop_app/tests/test_views.py | 244 +++++++++++++++++++++++++++++++++++++
8 files changed, 458 insertions(+), 435 deletions(-)
create mode 100644 .coveragerc
delete mode 100644 workshop_app/test_models.py
delete mode 100644 workshop_app/test_views.py
create mode 100644 workshop_app/tests/__init__.py
create mode 100644 workshop_app/tests/test_models.py
create mode 100644 workshop_app/tests/test_views.py
diff --git a/.coveragerc b/.coveragerc
new file mode 100644
index 0000000..d96c65a
--- /dev/null
+++ b/.coveragerc
@@ -0,0 +1,18 @@
+[run]
+branch = True
+source = .
+omit =
+ *tests*
+ *migrations*
+ *init*
+ local_settings.py
+ workshop_app/apps.py
+ workshop_portal/settings.py
+ workshop_portal/wsgi.py
+
+
+[report]
+exclude_lines =
+ except ImportError:
+ raise NotImplementedError
+ if __name__ == .__main__.:
diff --git a/.travis.yml b/.travis.yml
index 5d52997..1ffb76a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,4 +17,9 @@ install:
script:
- python manage.py makemigrations
- python manage.py migrate
- - python manage.py test
+ - coverage erase
+ - coverage run -p manage.py test -v2
+
+after_success:
+ - coverage combine
+ - coverage report
diff --git a/requirements.txt b/requirements.txt
index 0c22f6b..d546151 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -4,3 +4,4 @@ packaging==16.8
python-dateutil==2.6.0
pytz==2016.10
six==1.10.0
+coverage
diff --git a/workshop_app/test_models.py b/workshop_app/test_models.py
deleted file mode 100644
index c9ac41c..0000000
--- a/workshop_app/test_models.py
+++ /dev/null
@@ -1,189 +0,0 @@
-from django.test import TestCase
-from .models import (
- Profile, User, Workshop, WorkshopType,
- RequestedWorkshop, BookedWorkshop, ProposeWorkshopDate
- )
-from datetime import datetime
-
-# Setup for Model Test
-def setUpModule():
- '''
- Sets up database
- demo user as coordinator and test user as instructor
- '''
-
- demoUser1 = User.objects.create(username='demouser1',
- email='test.user@gmail.com', password='pass@123')
- demoUser2 = User.objects.create(username='demouser2',
- email='test.user@gmail.com', password='pass@123')
-
- testUser1 = User.objects.create(username='testuser1',
- email='test.user@gmail.com',password='pass@123')
-
- testUser2 = User.objects.create(username='testuser2',
- email='test.user@gmail.com', password='pass@123')
-
- instructor_profile = Profile.objects.create(user=testUser2, position='instructor',
- department='cs', institute='ace', phone_number='1122334456',
- is_email_verified=1)
-
- coordinator_profile = Profile.objects.create(user=demoUser2, position='coordinator',
- department='IT', institute='iit', phone_number='1122334456',
- is_email_verified=1)
-
- workshoptype1 = WorkshopType.objects.create(workshoptype_name='ISCP',
- workshoptype_description='Introduction to Scientific Computing in\
- Python
> Numpy
> Matplotlib
> iPython
',
- workshoptype_duration='1day, 8hours a day')
-
- requested_workshop = RequestedWorkshop.objects.create(
- requested_workshop_instructor=testUser2,
- requested_workshop_coordinator=demoUser2,
- requested_workshop_title=workshoptype1,
- requested_workshop_date='2017-07-24'
- )
-
- propose_workshop = ProposeWorkshopDate.objects.create(
- proposed_workshop_coordinator=demoUser2,
- proposed_workshop_instructor=testUser2,
- proposed_workshop_title=workshoptype1,
- proposed_workshop_date='2017-07-06',
- condition_one=1,
- condition_two=1,
- condition_three=1
- )
-
-
-def tearDownModule():
- User.objects.all().delete()
- Profile.objects.all().delete()
- ProposeWorkshopDate.objects.all().delete()
- RequestedWorkshop.objects.all().delete()
- WorkshopType.objects.all().delete()
-
-class ProfileModelTest(TestCase):
- '''
- This class tests the Profile Model
- '''
- def setUp(self):
- '''
- setsup profile for instructor and coordinator
- '''
- self.testuser1 = User.objects.get(username='testuser1')
- self.demouser1 = User.objects.get(username='demouser1')
-
- self.instructor_profile1 = Profile.objects.create(user=self.testuser1, position='instructor',
- department='cs', institute='ace', phone_number='1123323344558899192',
- is_email_verified=1)
-
- self.coordinator_profile1 = Profile.objects.create(user=self.demouser1, position='coordinator',
- department='IT', institute='iit', phone_number='112233',
- is_email_verified=1)
-
- def test_profile_model(self):
- self.assertEqual(self.demouser1.email,'test.user@gmail.com')
- self.assertEqual(self.testuser1.email,'test.user@gmail.com')
- self.assertEqual(self.instructor_profile1.position,'instructor')
- self.assertEqual(self.coordinator_profile1.position,'coordinator')
-
-
-class WorkshopTypeModelTest(TestCase):
- '''
- This class tests the WorkshopType Model
- '''
-
- def setUp(self):
- self.workshoptype1 = WorkshopType.objects.create(workshoptype_name='ISCP',
- workshoptype_description='Introduction to Scientific Computing in\
- Python
> Numpy
> Matplotlib
> iPython
',
- workshoptype_duration='1day, 8hours a day')
-
- self.workshoptype2 = WorkshopType.objects.create(workshoptype_name='Basic Python',
- workshoptype_description='Basic Python
> DataTypes
\
- > Conditions
> Loops
> Functions'
- ,workshoptype_duration='3days, 8hours a day')
-
- def test_workshoptype_model(self):
- self.assertEqual(self.workshoptype2.workshoptype_duration,'3days, 8hours a day')
- self.assertEqual(self.workshoptype1.workshoptype_name, 'ISCP')
-
-
-class WorkshopModelTest(TestCase):
- '''
- This class tests the Workshop Model
- '''
-
- def setUp(self):
- self.testuser2 = User.objects.get(username='testuser2')
- self.instructor_profile = Profile.objects.get(user=self.testuser2)
- self.workshoptype = WorkshopType.objects.get(workshoptype_name='ISCP')
- self.workshop = Workshop.objects.create(workshop_instructor=self.testuser2,
- workshop_title=self.workshoptype,
- recurrences='RRULE:FREQ=WEEKLY;UNTIL=20170629T183000Z;BYDAY=TH')
-
- def test_workshop_model(self):
- self.assertEqual(self.workshop.workshop_title.workshoptype_name,'ISCP' )
- self.assertEqual(self.workshop.recurrences.rrules[0].__dict__['freq'],2)
-
-
-class RequestedWorkshopModelTest(TestCase):
- '''
- This class tests the RequestedWorkshop Model
- '''
-
- def setUp(self):
- self.testuser2 = User.objects.get(username='testuser2')
- self.demouser2 = User.objects.get(username='demouser2')
- self.workshoptype = WorkshopType.objects.get(workshoptype_name='ISCP')
- self.requestedworkshop = RequestedWorkshop.objects.create(
- requested_workshop_instructor=self.testuser2,
- requested_workshop_coordinator=self.demouser2,
- requested_workshop_title=self.workshoptype,
- requested_workshop_date='2017-05-24'
- )
-
- def test_requestedworkshop_model(self):
- self.assertEqual(self.requestedworkshop.requested_workshop_date, '2017-05-24')
- self.assertEqual(self.requestedworkshop.status, 'Pending')
-
-
-class ProposedWorkshopDateModelTest(TestCase):
- '''
- This class tests the ProposeWorkshopDate Model
- '''
-
- def setUp(self):
- self.testuser2 = User.objects.get(username='testuser2')
- self.demouser2 = User.objects.get(username='demouser2')
- self.workshoptype = WorkshopType.objects.get(workshoptype_name='ISCP')
- self.propose_workshop = ProposeWorkshopDate.objects.create(
- proposed_workshop_coordinator=self.demouser2,
- proposed_workshop_instructor=self.testuser2,
- proposed_workshop_title=self.workshoptype,
- proposed_workshop_date='2017-06-06',
- condition_one=1,
- condition_two=1,
- condition_three=1
- )
-
- def test_proposedworkshopdate_model(self):
- self.assertEqual(self.propose_workshop.proposed_workshop_title.workshoptype_name,'ISCP')
- self.assertEqual(self.propose_workshop.condition_three, 1)
- self.assertEqual(self.propose_workshop.status, 'Pending')
-
-class BookedWorkshopModelTest(TestCase):
- '''
- This class tests the BookedWorkshop Model
- '''
-
- def setUp(self):
- self.requestedworkshop = RequestedWorkshop.objects.get(requested_workshop_date='2017-07-24')
- self.propose_workshop = ProposeWorkshopDate.objects.get(proposed_workshop_date='2017-07-06')
- self.bwr = BookedWorkshop.objects.create(booked_workshop_requested=self.requestedworkshop)
- self.bwp = BookedWorkshop.objects.create(booked_workshop_proposed=self.propose_workshop)
-
- def test_bookedworkshop_model(self):
- self.assertEqual(self.bwp.booked_workshop_proposed.condition_one,1)
- self.assertEqual(self.bwr.booked_workshop_requested.requested_workshop_title.workshoptype_name,
- 'ISCP' )
-
diff --git a/workshop_app/test_views.py b/workshop_app/test_views.py
deleted file mode 100644
index ebf48c0..0000000
--- a/workshop_app/test_views.py
+++ /dev/null
@@ -1,245 +0,0 @@
-from .views import view_profile, user_login, edit_profile
-from django.test import TestCase
-from .models import Profile, User, Workshop, WorkshopType,\
- RequestedWorkshop, BookedWorkshop, ProposeWorkshopDate,\
- has_profile
-
-from datetime import datetime
-from json import dumps
-from django.test import Client
-from django.contrib.auth.models import Group, Permission
-from django.contrib.auth import authenticate
-from django.core.urlresolvers import reverse
-from .forms import CreateWorkshop
-
-class TestProfile(TestCase):
- def setUp(self):
- self.client = Client()
-
- self.user1 = User.objects.create(
- username='demo_test_user1',
- password='pass@123',
- email='test.user@gmail.com')
-
- self.user2 = User.objects.create(
- username='demo_test_user2',
- email='test.user@gmail.com')
-
- self.user2.set_password('pass@123')
- self.user2.save()
-
- self.user2_profile = Profile.objects.create(
- user=self.user2,
- department='cs',
- institute='ace',
- position='instructor',
- phone_number='1122993388',
- is_email_verified=1
- )
-
- def test_has_profile_for_user_without_profile(self):
- """
- If no profile exists for user passed as argument return False
- """
- has_profile_status = has_profile(self.user1)
- self.assertFalse(has_profile_status)
-
- def test_has_profile_for_user_with_profile(self):
- """
- If profile exists for user passed as argument return True
- """
- has_profile_status = has_profile(self.user2)
- self.assertTrue(has_profile_status)
-
- def test_view_profile_denies_anonymous(self):
- """
- If not logged in redirect to login page
- """
- response = self.client.get(reverse(view_profile), follow=True)
- redirect_destination = '/login/?next=/view_profile/'
- self.assertTrue(response.status_code,200)
- self.assertRedirects(response, redirect_destination)
-
- def test_edit_profile_get(self):
- """
- GET request to edit profile should display profile form
- """
-
- self.client.login(username=self.user2, password='pass@123')
- response = self.client.get(reverse(edit_profile))
- self.assertEqual(response.status_code, 200)
- self.client.logout()
-
- def test_edit_profile_post(self):
-
- self.client.login(username=self.user2, password='pass@123')
- response = self.client.post('/edit_profile/',
- data = {
- 'first_name': 'demo_test',
- 'last_name': 'user2',
- 'institute': 'IIT',
- 'department': 'Aerospace'
- })
-
- updated_profile_user = User.objects.get(id=self.user2.id)
- updated_profile = Profile.objects.get(user=updated_profile_user)
-
- self.assertEqual(updated_profile.institute, 'IIT')
- self.assertEqual(updated_profile.department, 'Aerospace')
- self.assertEqual(updated_profile.position, 'instructor')
- self.assertEqual(response.status_code, 200)
- self.assertTemplateUsed(response, 'workshop_app/profile_updated.html')
-
-
-class TestWorkshopCreation(TestCase):
- def setUp(self):
- '''
- demo user as coordinator and test user as instructor
- '''
- self.superuser = User.objects.create_superuser(
- username='admin',
- password='pass@123',
- email='test.user@gmail.com')
-
- self.mod_group = Group.objects.create(name='instructor')
-
- self.user_one = User.objects.create(
- username='test_user1',
- email='test.user@gmail.com')
-
- self.user_one.set_password('pass@123')
- self.user_one.save()
-
- self.user_one_profile = Profile.objects.create(
- user=self.user_one,
- department='cs',
- institute='IIT',
- position='instructor',
- phone_number='1122993388',
- is_email_verified=1
- )
-
- #Add user_one in instructor group and give required permissions
- self.mod_group.user_set.add(self.user_one)
- self.permission = (Permission.objects.all())
- self.user_one.user_permissions.add(self.permission[44])
- self.user_one.user_permissions.add(self.permission[43])
- self.user_one.user_permissions.add(self.permission[42])
-
- self.user_two = User.objects.create(
- username='demo_user2',
- email='test.user@gmail.com')
-
- self.user_two.set_password('pass@123')
- self.user_two.save()
-
- self.user_two_profile = Profile.objects.create(
- user=self.user_two,
- department='cs',
- institute='ace',
- position='coordinator',
- phone_number='1122993388',
- is_email_verified=1
- )
-
- self.workshoptype = WorkshopType.objects.create(workshoptype_name='ISCP', workshoptype_description='Introduction to Scientific Computing in Python
\
- > Numpy
> Matplotlib
> iPython
', workshoptype_duration='1days, 8hours a day')
-
- def test_create_workshoptype_superuser(self):
- self.client.login(username=self.superuser, password='pass@123')
- self.client.post(('/admin/workshop_app/workshoptype/add/'),
- data={
- 'workshoptype_name': 'Basic Python',
- 'workshoptype_description': 'Basics of Python
\
- > Conditions
> Datatypes
> Loops
',
- 'workshoptype_duration': '3days, 8hours a day'
- })
- self.workshoptype_one = WorkshopType.objects.get(workshoptype_name='Basic Python')
- self.assertEqual(self.workshoptype_one.workshoptype_name, 'Basic Python')
- self.assertEqual(self.workshoptype_one.workshoptype_duration, '3days, 8hours a day')
- self.client.logout()
-
- def test_create_workshop_instructor(self):
- self.client.login(username=self.user_one, password='pass@123')
- self.client.post('/create_workshop/',
- {
- 'workshop_title' : (2),
- 'recurrences' : 'RRULE:FREQ=WEEKLY;UNTIL=20170624T183000Z;BYDAY=WE;'
- })
- self.workshop = Workshop.objects.get(workshop_instructor=self.user_one)
- self.assertEqual(str(self.workshop.workshop_title), 'ISCP 1days, 8hours a day')
- self.client.logout()
-
-
- def test_propose_workshop_coordinator(self):
- self.client.login(username=self.user_two, password='pass@123')
- self.client.post('/propose_workshop/',
- {
- 'condition_one': 1,
- 'condition_two': 1,
- 'condition_three': 1,
- 'proposed_workshop_title': (2),
- 'proposed_workshop_date': '2017-06-06'
- })
- self.proposed_workshop = ProposeWorkshopDate.objects.get(proposed_workshop_date='2017-06-06')
- self.assertEqual(str(self.proposed_workshop.proposed_workshop_title),'ISCP 1days, 8hours a day')
- self.client.logout()
-
-
-class TestWorkshopDashboard(TestCase):
- def setUp(self):
- self.superuser = User.objects.create_superuser(
- username='admin',
- password='pass@123',
- email='test.user@gmail.com')
-
- self.mod_group = Group.objects.create(name='instructor')
-
- self.user_one = User.objects.create(
- username='test_user1',
- email='test.user@gmail.com')
-
- self.user_one.set_password('pass@123')
- self.user_one.save()
-
- self.user_one_profile = Profile.objects.create(
- user=self.user_one,
- department='cs',
- institute='IIT',
- position='instructor',
- phone_number='1122993388',
- is_email_verified=1
- )
-
- #Add user_one in instructor group and give required permissions
- self.mod_group.user_set.add(self.user_one)
- self.permissions = Permission.objects.all()
- self.user_one.user_permissions.add(self.permissions[44])
- self.user_one.user_permissions.add(self.permissions[43])
- self.user_one.user_permissions.add(self.permissions[42])
-
- self.user_two = User.objects.create(
- username='demo_user2',
- email='test.user@gmail.com')
-
- self.user_two.set_password('pass@123')
- self.user_two.save()
-
- self.user_two_profile = Profile.objects.create(
- user=self.user_two,
- department='cs',
- institute='ace',
- position='coordinator',
- phone_number='1122993388',
- is_email_verified=1
- )
-
- self.workshoptype = WorkshopType.objects.create(workshoptype_name='ISCP', workshoptype_description='Introduction to Scientific Computing in Python
\
- > Numpy
> Matplotlib
> iPython
', workshoptype_duration='1days, 8hours a day')
-
- self.workshop = Workshop.objects.create(workshop_instructor=self.user_one,
- workshop_title=self.workshoptype,
- recurrences='RRULE:FREQ=WEEKLY;UNTIL=20170624T183000Z;BYDAY=WE;'
- )
-
-
\ No newline at end of file
diff --git a/workshop_app/tests/__init__.py b/workshop_app/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/workshop_app/tests/test_models.py b/workshop_app/tests/test_models.py
new file mode 100644
index 0000000..bd037ec
--- /dev/null
+++ b/workshop_app/tests/test_models.py
@@ -0,0 +1,189 @@
+from django.test import TestCase
+from workshop_app.models import (
+ Profile, User, Workshop, WorkshopType,
+ RequestedWorkshop, BookedWorkshop, ProposeWorkshopDate
+ )
+from datetime import datetime
+
+# Setup for Model Test
+def setUpModule():
+ '''
+ Sets up database
+ demo user as coordinator and test user as instructor
+ '''
+
+ demoUser1 = User.objects.create(username='demouser1',
+ email='test.user@gmail.com', password='pass@123')
+ demoUser2 = User.objects.create(username='demouser2',
+ email='test.user@gmail.com', password='pass@123')
+
+ testUser1 = User.objects.create(username='testuser1',
+ email='test.user@gmail.com',password='pass@123')
+
+ testUser2 = User.objects.create(username='testuser2',
+ email='test.user@gmail.com', password='pass@123')
+
+ instructor_profile = Profile.objects.create(user=testUser2, position='instructor',
+ department='cs', institute='ace', phone_number='1122334456',
+ is_email_verified=1)
+
+ coordinator_profile = Profile.objects.create(user=demoUser2, position='coordinator',
+ department='IT', institute='iit', phone_number='1122334456',
+ is_email_verified=1)
+
+ workshoptype1 = WorkshopType.objects.create(workshoptype_name='ISCP',
+ workshoptype_description='Introduction to Scientific Computing in\
+ Python
> Numpy
> Matplotlib
> iPython
',
+ workshoptype_duration='1day, 8hours a day')
+
+ requested_workshop = RequestedWorkshop.objects.create(
+ requested_workshop_instructor=testUser2,
+ requested_workshop_coordinator=demoUser2,
+ requested_workshop_title=workshoptype1,
+ requested_workshop_date='2017-07-24'
+ )
+
+ propose_workshop = ProposeWorkshopDate.objects.create(
+ proposed_workshop_coordinator=demoUser2,
+ proposed_workshop_instructor=testUser2,
+ proposed_workshop_title=workshoptype1,
+ proposed_workshop_date='2017-07-06',
+ condition_one=1,
+ condition_two=1,
+ condition_three=1
+ )
+
+
+def tearDownModule():
+ User.objects.all().delete()
+ Profile.objects.all().delete()
+ ProposeWorkshopDate.objects.all().delete()
+ RequestedWorkshop.objects.all().delete()
+ WorkshopType.objects.all().delete()
+
+class ProfileModelTest(TestCase):
+ '''
+ This class tests the Profile Model
+ '''
+ def setUp(self):
+ '''
+ setsup profile for instructor and coordinator
+ '''
+ self.testuser1 = User.objects.get(username='testuser1')
+ self.demouser1 = User.objects.get(username='demouser1')
+
+ self.instructor_profile1 = Profile.objects.create(user=self.testuser1, position='instructor',
+ department='cs', institute='ace', phone_number='1123323344558899192',
+ is_email_verified=1)
+
+ self.coordinator_profile1 = Profile.objects.create(user=self.demouser1, position='coordinator',
+ department='IT', institute='iit', phone_number='112233',
+ is_email_verified=1)
+
+ def test_profile_model(self):
+ self.assertEqual(self.demouser1.email,'test.user@gmail.com')
+ self.assertEqual(self.testuser1.email,'test.user@gmail.com')
+ self.assertEqual(self.instructor_profile1.position,'instructor')
+ self.assertEqual(self.coordinator_profile1.position,'coordinator')
+
+
+class WorkshopTypeModelTest(TestCase):
+ '''
+ This class tests the WorkshopType Model
+ '''
+
+ def setUp(self):
+ self.workshoptype1 = WorkshopType.objects.create(workshoptype_name='ISCP',
+ workshoptype_description='Introduction to Scientific Computing in\
+ Python
> Numpy
> Matplotlib
> iPython
',
+ workshoptype_duration='1day, 8hours a day')
+
+ self.workshoptype2 = WorkshopType.objects.create(workshoptype_name='Basic Python',
+ workshoptype_description='Basic Python
> DataTypes
\
+ > Conditions
> Loops
> Functions'
+ ,workshoptype_duration='3days, 8hours a day')
+
+ def test_workshoptype_model(self):
+ self.assertEqual(self.workshoptype2.workshoptype_duration,'3days, 8hours a day')
+ self.assertEqual(self.workshoptype1.workshoptype_name, 'ISCP')
+
+
+class WorkshopModelTest(TestCase):
+ '''
+ This class tests the Workshop Model
+ '''
+
+ def setUp(self):
+ self.testuser2 = User.objects.get(username='testuser2')
+ self.instructor_profile = Profile.objects.get(user=self.testuser2)
+ self.workshoptype = WorkshopType.objects.get(workshoptype_name='ISCP')
+ self.workshop = Workshop.objects.create(workshop_instructor=self.testuser2,
+ workshop_title=self.workshoptype,
+ recurrences='RRULE:FREQ=WEEKLY;UNTIL=20170629T183000Z;BYDAY=TH')
+
+ def test_workshop_model(self):
+ self.assertEqual(self.workshop.workshop_title.workshoptype_name,'ISCP' )
+ self.assertEqual(self.workshop.recurrences.rrules[0].__dict__['freq'],2)
+
+
+class RequestedWorkshopModelTest(TestCase):
+ '''
+ This class tests the RequestedWorkshop Model
+ '''
+
+ def setUp(self):
+ self.testuser2 = User.objects.get(username='testuser2')
+ self.demouser2 = User.objects.get(username='demouser2')
+ self.workshoptype = WorkshopType.objects.get(workshoptype_name='ISCP')
+ self.requestedworkshop = RequestedWorkshop.objects.create(
+ requested_workshop_instructor=self.testuser2,
+ requested_workshop_coordinator=self.demouser2,
+ requested_workshop_title=self.workshoptype,
+ requested_workshop_date='2017-05-24'
+ )
+
+ def test_requestedworkshop_model(self):
+ self.assertEqual(self.requestedworkshop.requested_workshop_date, '2017-05-24')
+ self.assertEqual(self.requestedworkshop.status, 'Pending')
+
+
+class ProposedWorkshopDateModelTest(TestCase):
+ '''
+ This class tests the ProposeWorkshopDate Model
+ '''
+
+ def setUp(self):
+ self.testuser2 = User.objects.get(username='testuser2')
+ self.demouser2 = User.objects.get(username='demouser2')
+ self.workshoptype = WorkshopType.objects.get(workshoptype_name='ISCP')
+ self.propose_workshop = ProposeWorkshopDate.objects.create(
+ proposed_workshop_coordinator=self.demouser2,
+ proposed_workshop_instructor=self.testuser2,
+ proposed_workshop_title=self.workshoptype,
+ proposed_workshop_date='2017-06-06',
+ condition_one=1,
+ condition_two=1,
+ condition_three=1
+ )
+
+ def test_proposedworkshopdate_model(self):
+ self.assertEqual(self.propose_workshop.proposed_workshop_title.workshoptype_name,'ISCP')
+ self.assertEqual(self.propose_workshop.condition_three, 1)
+ self.assertEqual(self.propose_workshop.status, 'Pending')
+
+class BookedWorkshopModelTest(TestCase):
+ '''
+ This class tests the BookedWorkshop Model
+ '''
+
+ def setUp(self):
+ self.requestedworkshop = RequestedWorkshop.objects.get(requested_workshop_date='2017-07-24')
+ self.propose_workshop = ProposeWorkshopDate.objects.get(proposed_workshop_date='2017-07-06')
+ self.bwr = BookedWorkshop.objects.create(booked_workshop_requested=self.requestedworkshop)
+ self.bwp = BookedWorkshop.objects.create(booked_workshop_proposed=self.propose_workshop)
+
+ def test_bookedworkshop_model(self):
+ self.assertEqual(self.bwp.booked_workshop_proposed.condition_one,1)
+ self.assertEqual(self.bwr.booked_workshop_requested.requested_workshop_title.workshoptype_name,
+ 'ISCP' )
+
diff --git a/workshop_app/tests/test_views.py b/workshop_app/tests/test_views.py
new file mode 100644
index 0000000..fd93a3a
--- /dev/null
+++ b/workshop_app/tests/test_views.py
@@ -0,0 +1,244 @@
+from workshop_app.views import view_profile, user_login, edit_profile
+from django.test import TestCase
+from workshop_app.models import Profile, User, Workshop, WorkshopType,\
+ RequestedWorkshop, BookedWorkshop, ProposeWorkshopDate,\
+ has_profile
+from datetime import datetime
+from json import dumps
+from django.test import Client
+from django.contrib.auth.models import Group, Permission
+from django.contrib.auth import authenticate
+from django.core.urlresolvers import reverse
+from workshop_app.forms import CreateWorkshop
+
+class TestProfile(TestCase):
+ def setUp(self):
+ self.client = Client()
+
+ self.user1 = User.objects.create(
+ username='demo_test_user1',
+ password='pass@123',
+ email='test.user@gmail.com')
+
+ self.user2 = User.objects.create(
+ username='demo_test_user2',
+ email='test.user@gmail.com')
+
+ self.user2.set_password('pass@123')
+ self.user2.save()
+
+ self.user2_profile = Profile.objects.create(
+ user=self.user2,
+ department='cs',
+ institute='ace',
+ position='instructor',
+ phone_number='1122993388',
+ is_email_verified=1
+ )
+
+ def test_has_profile_for_user_without_profile(self):
+ """
+ If no profile exists for user passed as argument return False
+ """
+ has_profile_status = has_profile(self.user1)
+ self.assertFalse(has_profile_status)
+
+ def test_has_profile_for_user_with_profile(self):
+ """
+ If profile exists for user passed as argument return True
+ """
+ has_profile_status = has_profile(self.user2)
+ self.assertTrue(has_profile_status)
+
+ def test_view_profile_denies_anonymous(self):
+ """
+ If not logged in redirect to login page
+ """
+ response = self.client.get(reverse(view_profile), follow=True)
+ redirect_destination = '/login/?next=/view_profile/'
+ self.assertTrue(response.status_code,200)
+ self.assertRedirects(response, redirect_destination)
+
+ def test_edit_profile_get(self):
+ """
+ GET request to edit profile should display profile form
+ """
+
+ self.client.login(username=self.user2, password='pass@123')
+ response = self.client.get(reverse(edit_profile))
+ self.assertEqual(response.status_code, 200)
+ self.client.logout()
+
+ def test_edit_profile_post(self):
+
+ self.client.login(username=self.user2, password='pass@123')
+ response = self.client.post('/edit_profile/',
+ data = {
+ 'first_name': 'demo_test',
+ 'last_name': 'user2',
+ 'institute': 'IIT',
+ 'department': 'Aerospace'
+ })
+
+ updated_profile_user = User.objects.get(id=self.user2.id)
+ updated_profile = Profile.objects.get(user=updated_profile_user)
+
+ self.assertEqual(updated_profile.institute, 'IIT')
+ self.assertEqual(updated_profile.department, 'Aerospace')
+ self.assertEqual(updated_profile.position, 'instructor')
+ self.assertEqual(response.status_code, 200)
+ self.assertTemplateUsed(response, 'workshop_app/profile_updated.html')
+
+
+class TestWorkshopCreation(TestCase):
+ def setUp(self):
+ '''
+ demo user as coordinator and test user as instructor
+ '''
+ self.superuser = User.objects.create_superuser(
+ username='admin',
+ password='pass@123',
+ email='test.user@gmail.com')
+
+ self.mod_group = Group.objects.create(name='instructor')
+
+ self.user_one = User.objects.create(
+ username='test_user1',
+ email='test.user@gmail.com')
+
+ self.user_one.set_password('pass@123')
+ self.user_one.save()
+
+ self.user_one_profile = Profile.objects.create(
+ user=self.user_one,
+ department='cs',
+ institute='IIT',
+ position='instructor',
+ phone_number='1122993388',
+ is_email_verified=1
+ )
+
+ #Add user_one in instructor group and give required permissions
+ self.mod_group.user_set.add(self.user_one)
+ self.permission = (Permission.objects.all())
+ self.user_one.user_permissions.add(self.permission[44])
+ self.user_one.user_permissions.add(self.permission[43])
+ self.user_one.user_permissions.add(self.permission[42])
+
+ self.user_two = User.objects.create(
+ username='demo_user2',
+ email='test.user@gmail.com')
+
+ self.user_two.set_password('pass@123')
+ self.user_two.save()
+
+ self.user_two_profile = Profile.objects.create(
+ user=self.user_two,
+ department='cs',
+ institute='ace',
+ position='coordinator',
+ phone_number='1122993388',
+ is_email_verified=1
+ )
+
+ self.workshoptype = WorkshopType.objects.create(workshoptype_name='ISCP', workshoptype_description='Introduction to Scientific Computing in Python
\
+ > Numpy
> Matplotlib
> iPython
', workshoptype_duration='1days, 8hours a day')
+
+ def test_create_workshoptype_superuser(self):
+ self.client.login(username=self.superuser, password='pass@123')
+ self.client.post(('/admin/workshop_app/workshoptype/add/'),
+ data={
+ 'workshoptype_name': 'Basic Python',
+ 'workshoptype_description': 'Basics of Python
\
+ > Conditions
> Datatypes
> Loops
',
+ 'workshoptype_duration': '3days, 8hours a day'
+ })
+ self.workshoptype_one = WorkshopType.objects.get(workshoptype_name='Basic Python')
+ self.assertEqual(self.workshoptype_one.workshoptype_name, 'Basic Python')
+ self.assertEqual(self.workshoptype_one.workshoptype_duration, '3days, 8hours a day')
+ self.client.logout()
+
+ def test_create_workshop_instructor(self):
+ self.client.login(username=self.user_one, password='pass@123')
+ self.client.post('/create_workshop/',
+ {
+ 'workshop_title' : (2),
+ 'recurrences' : 'RRULE:FREQ=WEEKLY;UNTIL=20170624T183000Z;BYDAY=WE;'
+ })
+ self.workshop = Workshop.objects.get(workshop_instructor=self.user_one)
+ self.assertEqual(str(self.workshop.workshop_title), 'ISCP 1days, 8hours a day')
+ self.client.logout()
+
+
+ def test_propose_workshop_coordinator(self):
+ self.client.login(username=self.user_two, password='pass@123')
+ self.client.post('/propose_workshop/',
+ {
+ 'condition_one': 1,
+ 'condition_two': 1,
+ 'condition_three': 1,
+ 'proposed_workshop_title': (2),
+ 'proposed_workshop_date': '2017-06-06'
+ })
+ self.proposed_workshop = ProposeWorkshopDate.objects.get(proposed_workshop_date='2017-06-06')
+ self.assertEqual(str(self.proposed_workshop.proposed_workshop_title),'ISCP 1days, 8hours a day')
+ self.client.logout()
+
+
+class TestWorkshopDashboard(TestCase):
+ def setUp(self):
+ self.superuser = User.objects.create_superuser(
+ username='admin',
+ password='pass@123',
+ email='test.user@gmail.com')
+
+ self.mod_group = Group.objects.create(name='instructor')
+
+ self.user_one = User.objects.create(
+ username='test_user1',
+ email='test.user@gmail.com')
+
+ self.user_one.set_password('pass@123')
+ self.user_one.save()
+
+ self.user_one_profile = Profile.objects.create(
+ user=self.user_one,
+ department='cs',
+ institute='IIT',
+ position='instructor',
+ phone_number='1122993388',
+ is_email_verified=1
+ )
+
+ #Add user_one in instructor group and give required permissions
+ self.mod_group.user_set.add(self.user_one)
+ self.permissions = Permission.objects.all()
+ self.user_one.user_permissions.add(self.permissions[44])
+ self.user_one.user_permissions.add(self.permissions[43])
+ self.user_one.user_permissions.add(self.permissions[42])
+
+ self.user_two = User.objects.create(
+ username='demo_user2',
+ email='test.user@gmail.com')
+
+ self.user_two.set_password('pass@123')
+ self.user_two.save()
+
+ self.user_two_profile = Profile.objects.create(
+ user=self.user_two,
+ department='cs',
+ institute='ace',
+ position='coordinator',
+ phone_number='1122993388',
+ is_email_verified=1
+ )
+
+ self.workshoptype = WorkshopType.objects.create(workshoptype_name='ISCP', workshoptype_description='Introduction to Scientific Computing in Python
\
+ > Numpy
> Matplotlib
> iPython
', workshoptype_duration='1days, 8hours a day')
+
+ self.workshop = Workshop.objects.create(workshop_instructor=self.user_one,
+ workshop_title=self.workshoptype,
+ recurrences='RRULE:FREQ=WEEKLY;UNTIL=20170624T183000Z;BYDAY=WE;'
+ )
+
+
--
cgit