|
25 | 25 | MEMBER_USER, SECRETARIAT_USER, EMAIL_DOMAIN, NOMCOM_YEAR |
26 | 26 | from ietf.nomcom.models import NomineePosition, Position, Nominee, \ |
27 | 27 | NomineePositionStateName, Feedback, FeedbackTypeName, \ |
28 | | - Nomination |
| 28 | + Nomination, FeedbackLastSeen |
29 | 29 | from ietf.nomcom.forms import EditMembersForm, EditMembersFormPreview |
30 | 30 | from ietf.nomcom.utils import get_nomcom_by_year, get_or_create_nominee, get_hash_nominee_position |
31 | 31 | from ietf.nomcom.management.commands.send_reminders import Command, is_time_to_send |
32 | 32 |
|
33 | | -from ietf.nomcom.factories import NomComFactory, nomcom_kwargs_for_year, provide_private_key_to_test_client |
| 33 | +from ietf.nomcom.factories import NomComFactory, FeedbackFactory, \ |
| 34 | + nomcom_kwargs_for_year, provide_private_key_to_test_client |
34 | 35 | from ietf.person.factories import PersonFactory |
35 | 36 | from ietf.dbtemplate.factories import DBTemplateFactory |
36 | 37 |
|
@@ -1114,3 +1115,69 @@ def test_can_view_but_not_edit_templates(self): |
1114 | 1115 | q = PyQuery(response.content) |
1115 | 1116 | self.assertFalse( q('#templateform') ) |
1116 | 1117 |
|
| 1118 | +class FeedbackLastSeenTests(TestCase): |
| 1119 | + |
| 1120 | + def setUp(self): |
| 1121 | + self.nc = NomComFactory.create(**nomcom_kwargs_for_year(group__state_id='conclude')) |
| 1122 | + self.author = PersonFactory.create().email_set.first().address |
| 1123 | + self.member = self.nc.group.role_set.filter(name='member').first().person |
| 1124 | + self.nominee = self.nc.nominee_set.first() |
| 1125 | + self.position = self.nc.position_set.first() |
| 1126 | + for type_id in ['comment','nomina','questio']: |
| 1127 | + f = FeedbackFactory.create(author=self.author,nomcom=self.nc,type_id=type_id) |
| 1128 | + f.positions.add(self.position) |
| 1129 | + f.nominees.add(self.nominee) |
| 1130 | + now = datetime.datetime.now() |
| 1131 | + self.hour_ago = now - datetime.timedelta(hours=1) |
| 1132 | + self.half_hour_ago = now - datetime.timedelta(minutes=30) |
| 1133 | + self.second_from_now = now + datetime.timedelta(seconds=1) |
| 1134 | + |
| 1135 | + def test_feedback_index_badges(self): |
| 1136 | + url = reverse('nomcom_view_feedback',kwargs={'year':self.nc.year()}) |
| 1137 | + login_testing_unauthorized(self, self.member.user.username, url) |
| 1138 | + provide_private_key_to_test_client(self) |
| 1139 | + response = self.client.get(url) |
| 1140 | + self.assertEqual(response.status_code,200) |
| 1141 | + q = PyQuery(response.content) |
| 1142 | + self.assertEqual( len(q('.label-success')), 3 ) |
| 1143 | + |
| 1144 | + f = self.nc.feedback_set.first() |
| 1145 | + f.time = self.hour_ago |
| 1146 | + f.save() |
| 1147 | + FeedbackLastSeen.objects.create(reviewer=self.member,nominee=self.nominee) |
| 1148 | + FeedbackLastSeen.objects.update(time=self.half_hour_ago) |
| 1149 | + response = self.client.get(url) |
| 1150 | + self.assertEqual(response.status_code,200) |
| 1151 | + q = PyQuery(response.content) |
| 1152 | + self.assertEqual( len(q('.label-success')), 2 ) |
| 1153 | + |
| 1154 | + FeedbackLastSeen.objects.update(time=self.second_from_now) |
| 1155 | + response = self.client.get(url) |
| 1156 | + self.assertEqual(response.status_code,200) |
| 1157 | + q = PyQuery(response.content) |
| 1158 | + self.assertEqual( len(q('.label-success')), 0 ) |
| 1159 | + |
| 1160 | + def test_feedback_nominee_badges(self): |
| 1161 | + url = reverse('nomcom_view_feedback_nominee',kwargs={'year':self.nc.year(),'nominee_id':self.nominee.id}) |
| 1162 | + login_testing_unauthorized(self, self.member.user.username, url) |
| 1163 | + provide_private_key_to_test_client(self) |
| 1164 | + response = self.client.get(url) |
| 1165 | + self.assertEqual(response.status_code,200) |
| 1166 | + q = PyQuery(response.content) |
| 1167 | + self.assertEqual( len(q('.label-success')), 3 ) |
| 1168 | + |
| 1169 | + f = self.nc.feedback_set.first() |
| 1170 | + f.time = self.hour_ago |
| 1171 | + f.save() |
| 1172 | + FeedbackLastSeen.objects.create(reviewer=self.member,nominee=self.nominee) |
| 1173 | + FeedbackLastSeen.objects.update(time=self.half_hour_ago) |
| 1174 | + response = self.client.get(url) |
| 1175 | + self.assertEqual(response.status_code,200) |
| 1176 | + q = PyQuery(response.content) |
| 1177 | + self.assertEqual( len(q('.label-success')), 2 ) |
| 1178 | + |
| 1179 | + FeedbackLastSeen.objects.update(time=self.second_from_now) |
| 1180 | + response = self.client.get(url) |
| 1181 | + self.assertEqual(response.status_code,200) |
| 1182 | + q = PyQuery(response.content) |
| 1183 | + self.assertEqual( len(q('.label-success')), 0 ) |
0 commit comments