|
3 | 3 |
|
4 | 4 |
|
5 | 5 | import datetime |
| 6 | +import json |
6 | 7 | from unittest import mock |
7 | 8 | import re |
8 | 9 |
|
|
15 | 16 | from django.urls import reverse as urlreverse |
16 | 17 | from django.utils import timezone |
17 | 18 |
|
| 19 | +from django.db.models import Max |
| 20 | + |
18 | 21 | import debug # pyflakes:ignore |
19 | 22 |
|
20 | 23 | from ietf.api.views import EmailIngestionError |
|
45 | 48 | from ietf.mailtrigger.utils import gather_address_lists |
46 | 49 | from ietf.message.factories import MessageFactory |
47 | 50 | from ietf.message.models import Message |
| 51 | +from ietf.person.factories import PersonFactory |
48 | 52 | from ietf.utils.mail import outbox, empty_outbox, get_payload_text |
49 | 53 | from ietf.utils.test_utils import TestCase, login_testing_unauthorized |
50 | 54 | from ietf.utils.text import text_to_dict |
@@ -1113,3 +1117,56 @@ def test_patent_details_required_unless_blanket(self): |
1113 | 1117 | val = self.data.pop(pf) |
1114 | 1118 | self.assertTrue(HolderIprDisclosureForm(data=self.data).is_valid()) |
1115 | 1119 | self.data[pf] = val |
| 1120 | + |
| 1121 | +class JsonSnapshotTests(TestCase): |
| 1122 | + def test_json_snapshot(self): |
| 1123 | + h = HolderIprDisclosureFactory() |
| 1124 | + url = urlreverse("ietf.ipr.views.json_snapshot", kwargs=dict(id=h.id)) |
| 1125 | + login_testing_unauthorized(self, "secretary", url) |
| 1126 | + r = self.client.get(url) |
| 1127 | + self.assertEqual(r.status_code, 200) |
| 1128 | + dump = json.loads(r.content) |
| 1129 | + self.assertCountEqual( |
| 1130 | + [o["model"] for o in dump], |
| 1131 | + ["ipr.holderiprdisclosure", "ipr.iprdisclosurebase", "person.person"], |
| 1132 | + ) |
| 1133 | + h.docs.add(WgRfcFactory()) |
| 1134 | + r = self.client.get(url) |
| 1135 | + self.assertEqual(r.status_code, 200) |
| 1136 | + dump = json.loads(r.content) |
| 1137 | + self.assertCountEqual( |
| 1138 | + [o["model"] for o in dump], |
| 1139 | + [ |
| 1140 | + "ipr.holderiprdisclosure", |
| 1141 | + "ipr.iprdisclosurebase", |
| 1142 | + "ipr.iprdocrel", |
| 1143 | + "person.person", |
| 1144 | + ], |
| 1145 | + ) |
| 1146 | + IprEventFactory( |
| 1147 | + disclosure=h, |
| 1148 | + message=MessageFactory(by=PersonFactory()), |
| 1149 | + in_reply_to=MessageFactory(), |
| 1150 | + ) |
| 1151 | + r = self.client.get(url) |
| 1152 | + self.assertEqual(r.status_code, 200) |
| 1153 | + dump = json.loads(r.content) |
| 1154 | + self.assertCountEqual( |
| 1155 | + [o["model"] for o in dump], |
| 1156 | + [ |
| 1157 | + "ipr.holderiprdisclosure", |
| 1158 | + "ipr.iprdisclosurebase", |
| 1159 | + "ipr.iprdocrel", |
| 1160 | + "ipr.iprevent", |
| 1161 | + "message.message", |
| 1162 | + "message.message", |
| 1163 | + "person.person", |
| 1164 | + "person.person", |
| 1165 | + "person.person", |
| 1166 | + "person.person", |
| 1167 | + ], |
| 1168 | + ) |
| 1169 | + no_such_ipr_id = IprDisclosureBase.objects.aggregate(Max("id"))["id__max"] + 1 |
| 1170 | + url = urlreverse("ietf.ipr.views.json_snapshot", kwargs=dict(id=no_such_ipr_id)) |
| 1171 | + r = self.client.get(url) |
| 1172 | + self.assertEqual(r.status_code, 404) |
0 commit comments