|
41 | 41 | from ietf.group.factories import GroupFactory, RoleFactory |
42 | 42 | from ietf.ipr.factories import HolderIprDisclosureFactory |
43 | 43 | from ietf.meeting.models import Meeting, Session, SessionPresentation, SchedulingEvent |
44 | | -from ietf.meeting.factories import MeetingFactory, SessionFactory, SessionPresentationFactory |
| 44 | +from ietf.meeting.factories import ( MeetingFactory, SessionFactory, SessionPresentationFactory, |
| 45 | + ProceedingsMaterialFactory ) |
45 | 46 |
|
46 | | -from ietf.name.models import SessionStatusName, BallotPositionName |
| 47 | +from ietf.name.models import SessionStatusName, BallotPositionName, DocTypeName |
47 | 48 | from ietf.person.models import Person |
48 | 49 | from ietf.person.factories import PersonFactory, EmailFactory |
49 | 50 | from ietf.utils.mail import outbox |
@@ -2246,6 +2247,35 @@ def test_add_document_session(self): |
2246 | 2247 | self.assertEqual(response.status_code,302) |
2247 | 2248 | self.assertEqual(2,doc.docevent_set.count()) |
2248 | 2249 |
|
| 2250 | + def test_get_related_meeting(self): |
| 2251 | + """Should be able to retrieve related meeting""" |
| 2252 | + meeting = MeetingFactory(type_id='ietf') |
| 2253 | + session = SessionFactory(meeting=meeting) |
| 2254 | + procmat = ProceedingsMaterialFactory(meeting=meeting) |
| 2255 | + for doctype in DocTypeName.objects.filter(used=True): |
| 2256 | + doc = DocumentFactory(type=doctype) |
| 2257 | + self.assertIsNone(doc.get_related_meeting(), 'Doc does not yet have a connection to the meeting') |
| 2258 | + # test through a session |
| 2259 | + doc.session_set.add(session) |
| 2260 | + doc = Document.objects.get(pk=doc.pk) |
| 2261 | + if doc.meeting_related(): |
| 2262 | + self.assertEqual(doc.get_related_meeting(), meeting, f'{doc.type.slug} should be related to meeting') |
| 2263 | + else: |
| 2264 | + self.assertIsNone(doc.get_related_meeting(), f'{doc.type.slug} should not be related to meeting') |
| 2265 | + # test with both session and procmat |
| 2266 | + doc.proceedingsmaterial_set.add(procmat) |
| 2267 | + doc = Document.objects.get(pk=doc.pk) |
| 2268 | + if doc.meeting_related(): |
| 2269 | + self.assertEqual(doc.get_related_meeting(), meeting, f'{doc.type.slug} should be related to meeting') |
| 2270 | + else: |
| 2271 | + self.assertIsNone(doc.get_related_meeting(), f'{doc.type.slug} should not be related to meeting') |
| 2272 | + # and test with only procmat |
| 2273 | + doc.session_set.remove(session) |
| 2274 | + doc = Document.objects.get(pk=doc.pk) |
| 2275 | + if doc.meeting_related(): |
| 2276 | + self.assertEqual(doc.get_related_meeting(), meeting, f'{doc.type.slug} should be related to meeting') |
| 2277 | + else: |
| 2278 | + self.assertIsNone(doc.get_related_meeting(), f'{doc.type.slug} should not be related to meeting') |
2249 | 2279 |
|
2250 | 2280 | class ChartTests(ResourceTestCaseMixin, TestCase): |
2251 | 2281 | def test_search_chart_conf(self): |
|
0 commit comments