|
20 | 20 | from ietf.doc.models import ( Document, DocAlias, DocRelationshipName, RelatedDocument, State, |
21 | 21 | DocEvent, BallotPositionDocEvent, LastCallDocEvent, WriteupDocEvent, NewRevisionDocEvent, |
22 | 22 | save_document_in_history ) |
| 23 | +from ietf.doc.factories import DocumentFactory |
23 | 24 | from ietf.group.models import Group |
| 25 | +from ietf.group.factories import GroupFactory |
24 | 26 | from ietf.meeting.models import Meeting, Session, SessionPresentation |
| 27 | +from ietf.meeting.factories import SessionFactory |
25 | 28 | from ietf.name.models import SessionStatusName |
26 | 29 | from ietf.person.models import Person |
| 30 | +from ietf.person.factories import PersonFactory |
27 | 31 | from ietf.utils.mail import outbox |
28 | 32 | from ietf.utils.test_data import make_test_data |
29 | 33 | from ietf.utils.test_utils import login_testing_unauthorized, unicontent |
@@ -904,3 +908,65 @@ def testExpansions(self): |
904 | 908 | self.assertEqual(r.status_code, 200) |
905 | 909 | self.assertTrue('draft-ietf-mars-test.all@ietf.org' in unicontent(r)) |
906 | 910 | self.assertTrue('ballot_saved' in unicontent(r)) |
| 911 | + |
| 912 | +class DocumentMeetingTests(TestCase): |
| 913 | + |
| 914 | + def setUp(self): |
| 915 | + self.group = GroupFactory(type_id='wg',state_id='active') |
| 916 | + |
| 917 | + today = datetime.date.today() |
| 918 | + cut_days = settings.MEETING_MATERIALS_SUBMISSION_CORRECTION_DAYS |
| 919 | + self.past_cutoff = SessionFactory.create(meeting__type_id='ietf',group=self.group,meeting__date=today-datetime.timedelta(days=1+cut_days)) |
| 920 | + self.past = SessionFactory.create(meeting__type_id='ietf',group=self.group,meeting__date=today-datetime.timedelta(days=cut_days/2)) |
| 921 | + self.inprog = SessionFactory.create(meeting__type_id='ietf',group=self.group,meeting__date=today-datetime.timedelta(days=1)) |
| 922 | + SessionFactory.create(meeting__type_id='ietf',group=self.group,meeting__date=today+datetime.timedelta(days=90)) |
| 923 | + SessionFactory.create(meeting__type_id='interim',group=self.group,meeting__date=today+datetime.timedelta(days=45)) |
| 924 | + |
| 925 | + def test_view_document_meetings(self): |
| 926 | + doc = DocumentFactory.create() |
| 927 | + doc.sessionpresentation_set.create(session=self.inprog,rev=None) |
| 928 | + |
| 929 | + url = urlreverse('ietf.doc.views_material.all_presentations', kwargs=dict(name=doc.name)) |
| 930 | + response = self.client.get(url) |
| 931 | + self.assertEqual(response.status_code, 200) |
| 932 | + q = PyQuery(response.content) |
| 933 | + self.assertTrue(q('#inprogressmeets')) |
| 934 | + self.assertFalse(any([q(id) for id in ['#pastmeets','#futuremeets']])) |
| 935 | + self.assertFalse(q('#addsessionsbutton')) |
| 936 | + self.assertFalse(q("a.btn:contains('Remove document')")) |
| 937 | + |
| 938 | + doc.sessionpresentation_set.create(session=self.past_cutoff,rev=None) |
| 939 | + doc.sessionpresentation_set.create(session=self.past,rev=None) |
| 940 | + |
| 941 | + self.client.login(username="secretary", password="secretary+password") |
| 942 | + response = self.client.get(url) |
| 943 | + self.assertEqual(response.status_code, 200) |
| 944 | + q = PyQuery(response.content) |
| 945 | + self.assertTrue(q('#addsessionsbutton')) |
| 946 | + self.assertEqual(1,len(q("#inprogressmeets a.btn-default:contains('Remove document')"))) |
| 947 | + self.assertEqual(1,len(q("#pastmeets a.btn-default:contains('Remove document')"))) |
| 948 | + self.assertEqual(1,len(q("#pastmeets a.btn-warning:contains('Remove document')"))) |
| 949 | + |
| 950 | + group_chair = PersonFactory() |
| 951 | + self.group.role_set.create(name_id='chair',person=group_chair,email=group_chair.email()) |
| 952 | + self.client.login(username=group_chair.user.username,password='%s+password'%group_chair.user.username) |
| 953 | + response = self.client.get(url) |
| 954 | + self.assertEqual(response.status_code, 200) |
| 955 | + q = PyQuery(response.content) |
| 956 | + self.assertTrue(q('#addsessionsbutton')) |
| 957 | + self.assertEqual(1,len(q("#inprogressmeets a.btn-default:contains('Remove document')"))) |
| 958 | + self.assertEqual(1,len(q("#pastmeets a.btn-default:contains('Remove document')"))) |
| 959 | + self.assertTrue(q('#pastmeets')) |
| 960 | + self.assertFalse(q("#pastmeets a.btn-warning:contains('Remove document')")) |
| 961 | + |
| 962 | + other_group = GroupFactory(type_id='wg',state_id='active') |
| 963 | + other_chair = PersonFactory() |
| 964 | + other_group.role_set.create(name_id='chair',person=other_chair,email=group_chair.email()) |
| 965 | + self.client.login(username=other_chair.user.username,password='%s+password'%other_chair.user.username) |
| 966 | + response = self.client.get(url) |
| 967 | + self.assertEqual(response.status_code, 200) |
| 968 | + q = PyQuery(response.content) |
| 969 | + self.assertTrue(q('#addsessionsbutton')) |
| 970 | + self.assertTrue(all([q(id) for id in ['#pastmeets','#inprogressmeets']])) |
| 971 | + self.assertFalse(q("#inprogressmeets a.btn:contains('Remove document')")) |
| 972 | + self.assertFalse(q("#pastmeets a.btn:contains('Remove document')")) |
0 commit comments