-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests.py
More file actions
171 lines (133 loc) · 6.74 KB
/
tests.py
File metadata and controls
171 lines (133 loc) · 6.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
from django.test import TestCase
from info.models import Dept, Class, Course, User, Student, Teacher, Assign, AssignTime, AttendanceTotal, Attendance, StudentCourse, Marks, MarksClass
from django.urls import reverse
from django.test.client import Client
# Create your tests here.
class InfoTest(TestCase):
def create_user(self, username='testuser', password='project123'):
self.client = Client()
return User.objects.create(username=username, password=password)
def test_user_creation(self):
us = self.create_user()
ut = self.create_user(username='teacher')
s = Student(user=us, USN='CS01', name='test')
s.save()
t = Teacher(user=ut, id='CS01', name='test')
t.save()
self.assertTrue(isinstance(us, User))
self.assertEqual(us.is_student, hasattr(us, 'student'))
self.assertEqual(ut.is_teacher, hasattr(ut, 'teacher'))
def create_dept(self, id='CS', name='CS'):
return Dept.objects.create(id=id, name=name)
def test_dept_creation(self):
d = self.create_dept()
self.assertTrue(isinstance(d, Dept))
self.assertEqual(d.__str__(), d.name)
def create_class(self, id='CS5A', sem=5, section='A'):
dept = self.create_dept()
return Class.objects.create(id=id, dept=dept, sem=sem, section=section)
def test_class_creation(self):
c = self.create_class()
self.assertTrue(isinstance(c, Class))
self.assertEqual(c.__str__(), "%s : %d %s" % (c.dept.name, c.sem, c.section))
def create_course(self, id='CS510', name='Data Struct', shortname='DS'):
dept = self.create_dept(id='CS2')
return Course.objects.create(id=id, dept=dept, name=name, shortname=shortname)
def test_course_creation(self):
c = self.create_course()
self.assertTrue(isinstance(c, Course))
self.assertEqual(c.__str__(), c.name)
def create_student(self, usn='CS01', name='samarth'):
cl = self.create_class()
u = self.create_user()
return Student.objects.create(user=u, class_id=cl, USN=usn, name=name)
def test_student_creation(self):
s = self.create_student()
self.assertTrue(isinstance(s, Student))
self.assertEqual(s.__str__(), s.name)
def create_teacher(self, id='CS01', name='teacher'):
dept = self.create_dept(id='CS3')
return Teacher.objects.create(id=id, name=name, dept=dept)
def test_teacher_creation(self):
s = self.create_teacher()
self.assertTrue(isinstance(s, Teacher))
self.assertEqual(s.__str__(), s.name)
def create_assign(self):
cl = self.create_class()
cr = self.create_course()
t = self.create_teacher()
return Assign.objects.create(class_id=cl, course=cr, teacher=t)
def test_assign_creation(self):
a = self.create_assign()
self.assertTrue(isinstance(a, Assign))
# views
def setUp(self):
self.client = Client()
self.user = User.objects.create_user('test_user', 'test@test.com', 'test_password')
def test_index_admin(self):
self.client.login(username='test_user', password='test_password')
response = self.client.get(reverse('index'))
self.assertContains(response, "you have been logged out")
self.assertEqual(response.status_code, 200)
def test_index_student(self):
self.client.login(username='test_user', password='test_password')
s = Student.objects.create(user=User.objects.first(), USN='test', name='test_name')
response = self.client.get(reverse('index'))
self.assertContains(response, s.name)
self.assertEqual(response.status_code, 200)
def test_index_teacher(self):
self.client.login(username='test_user', password='test_password')
s = Teacher.objects.create(user=User.objects.first(), id='test', name='test_name')
response = self.client.get(reverse('index'))
self.assertContains(response, s.name)
self.assertEqual(response.status_code, 200)
def test_no_attendance(self):
s = self.create_student()
self.client.login(username='test_user', password='test_password')
response = self.client.get(reverse('attendance', args=(s.USN,)))
self.assertContains(response, "student has no courses")
self.assertEqual(response.status_code, 200)
def test_attendance_view(self):
s = self.create_student()
self.client.login(username='test_user', password='test_password')
Assign.objects.create(class_id=s.class_id, course=self.create_course(), teacher=self.create_teacher())
response = self.client.get(reverse('attendance', args=(s.USN,)))
self.assertEqual(response.status_code, 200)
self.assertQuerysetEqual(response.context['att_list'], ['<AttendanceTotal: AttendanceTotal object (1)>'])
def test_no_attendance__detail(self):
s = self.create_student()
cr = self.create_course()
self.client.login(username='test_user', password='test_password')
resp = self.client.get(reverse('attendance_detail', args=(s.USN, cr.id)))
self.assertEqual(resp.status_code, 200)
self.assertContains(resp, "student has no attendance")
def test_attendance__detail(self):
s = self.create_student()
cr = self.create_course()
Attendance.objects.create(student=s, course=cr)
self.client.login(username='test_user', password='test_password')
resp = self.client.get(reverse('attendance_detail', args=(s.USN, cr.id)))
self.assertEqual(resp.status_code, 200)
self.assertQuerysetEqual(resp.context['att_list'], ['<Attendance: ' + s.name + ' : ' + cr.shortname + '>'])
#teacher
# def test_attendance_class(self):
# t = self.create_teacher()
# Assign.objects.create(teacher=t, class_id=self.create_class(), course=self.create_course())
# self.client.login(username='test_user', password='test_password')
# resp = self.client.get(reverse('t_clas', args=(t.id, 1)))
# print(resp.content)
# self.assertEqual(resp.status_code, 200)
# self.assertContains(resp, "Enter Attendance")
# def test_attendance_class(self):
# t = self.create_teacher()
# self.client.login(username='test_user', password='test_password')
# resp = self.client.get(reverse('t_clas', args=(t.id, 1)))
# self.assertEqual(resp.status_code, 200)
# self.assertContains(resp, "Enter Attendance")
#
# def test_attendance_class(self):
# t = self.create_teacher()
# self.client.login(username='test_user', password='test_password')
# resp = self.client.get(reverse('t_clas', args=(t.id, 1)))
# self.assertEqual(resp.status_code, 200)
# self.assertContains(resp, "Enter Attendance")