11from django .test import TestCase , Client
22
33from django .urls import reverse
4+ from django .template import Template , Context
5+
6+
7+ from classroom .models import Student
48
59class LoginPageTest (TestCase ):
610 fixtures = ["datas.json" ]
711
812 def setUp (self ):
913 self .client = Client ()
14+ self .student = Student .objects .get (user__username = 'student' )
1015
1116 def test_login_page_returns_correct_html (self ):
1217 loginurl = reverse ('login' )
@@ -32,7 +37,34 @@ def test_login_as_teacher(self):
3237 # self.assertEqual(response.redirect_chain[1][0],reverse('teachers:quiz_change_list'))
3338 # self.assertIn(b'My Quizzes', response.content)
3439
35-
40+ def test_guest_user_can_access_quiz_list (self ):
41+ home_url = reverse ('home' )
42+ response = self .client .get (home_url )
43+ student_list_url = reverse ('students:student_list' )
44+ about_url = reverse ('about' )
45+
46+ # there is tab view in homepage and check there is quiz list url in home page
47+
48+ tabs = f'''
49+ <ul class="nav nav-tabs mb-3">
50+ <li class="nav-item"><a class="nav-link active" href="{ home_url } ">Quizzes</a></li>
51+ <li class="nav-item"><a class="nav-link" href="{ student_list_url } ">Students</a></li>
52+ <li class="nav-item"><a class="nav-link" href="{ about_url } ">About</a></li>
53+ </ul>'''
54+
55+ self .assertInHTML (tabs , response .content .decode ())
56+
57+ quiz1 = '''<tr>
58+ <td class="align-middle">World War 1</td>
59+ <td class="align-middle d-none d-sm-table-cell"><span class="badge badge-primary" style="background-color: #ffc107">History</span></td>
60+ <td class="align-middle d-none d-sm-table-cell">4</td>
61+ <td class="text-right" data-orderable="false">
62+ <a href="/students/quiz/1/" class="btn btn-primary">Start quiz</a>
63+ </td>
64+ </tr>
65+ '''
66+ self .assertInHTML (quiz1 , response .content .decode ())
67+
3668 def test_guest_user_can_access_student_list (self ):
3769 home_url = reverse ('home' )
3870 student_list_url = reverse ('students:student_list' )
@@ -65,31 +97,41 @@ def test_guest_user_can_access_student_list(self):
6597 '''
6698 self .assertInHTML (student_search_form , response .content .decode ())
6799
100+
101+ # test students listed in the page
102+ student_detail_url = reverse ('students:student_detail' , kwargs = {'student' :self .student .pk })
103+
68104
69- def test_guest_user_can_access_quiz_list (self ):
105+ gravatar_url = Template ('''
106+ {% load quiz_extras %}
107+ <img class="mr-3" src="{{ student.user.username|gravatar_url:50 }}" alt="{{student.user.get_full_name}}">
108+ ''' ).render (Context ({'student' :self .student }))
109+
110+ student_info = f'''
111+ <div class="col-sm-3">
112+ <div class="media">
113+ <a href="{ student_detail_url } ">{ gravatar_url } </a>
114+ <div class="media-body" style="font-size: 12px">
115+ <a href="{ student_detail_url } ">{ self .student .user .username } </a><br>
116+ <strong>0</strong><br>
117+ </div>
118+ </div>
119+ '''
120+ self .assertInHTML (student_info , response .content .decode ())
121+
122+ def test_guest_user_can_access_student_detail (self ):
70123 home_url = reverse ('home' )
71- response = self .client .get (home_url )
72124 student_list_url = reverse ('students:student_list' )
73125 about_url = reverse ('about' )
74-
75- # there is tab view in homepage and check there is quiz list url in home page
126+
127+ student_detail_url = reverse ('students:student_detail' , kwargs = {'student' :self .student .pk })
128+ response = self .client .get (student_detail_url )
76129
77130 tabs = f'''
78131 <ul class="nav nav-tabs mb-3">
79- <li class="nav-item"><a class="nav-link active " href="{ home_url } ">Quizzes</a></li>
80- <li class="nav-item"><a class="nav-link" href="{ student_list_url } ">Students</a></li>
132+ <li class="nav-item"><a class="nav-link" href="{ home_url } ">Quizzes</a></li>
133+ <li class="nav-item"><a class="nav-link active " href="{ student_list_url } ">Students</a></li>
81134 <li class="nav-item"><a class="nav-link" href="{ about_url } ">About</a></li>
82135 </ul>'''
83-
84136 self .assertInHTML (tabs , response .content .decode ())
85-
86- quiz1 = '''<tr>
87- <td class="align-middle">World War 1</td>
88- <td class="align-middle d-none d-sm-table-cell"><span class="badge badge-primary" style="background-color: #ffc107">History</span></td>
89- <td class="align-middle d-none d-sm-table-cell">4</td>
90- <td class="text-right" data-orderable="false">
91- <a href="/students/quiz/1/" class="btn btn-primary">Start quiz</a>
92- </td>
93- </tr>
94- '''
95- self .assertInHTML (quiz1 , response .content .decode ())
137+
0 commit comments