|
8 | 8 | from ietf.utils.test_utils import login_testing_unauthorized |
9 | 9 |
|
10 | 10 | from ietf.doc.models import * |
| 11 | +from ietf.doc.utils import add_state_change_event |
11 | 12 | from ietf.person.models import * |
12 | 13 |
|
13 | 14 | from ietf.sync import iana, rfceditor |
@@ -399,3 +400,37 @@ def test_discrepancies(self): |
399 | 400 |
|
400 | 401 | r = self.client.get(urlreverse("ietf.sync.views.discrepancies")) |
401 | 402 | self.assertTrue(doc.name in r.content) |
| 403 | + |
| 404 | +class RFCEditorUndoTestCase(django.test.TestCase): |
| 405 | + fixtures = ['names'] |
| 406 | + |
| 407 | + def test_rfceditor_undo(self): |
| 408 | + draft = make_test_data() |
| 409 | + |
| 410 | + e = add_state_change_event(draft, Person.objects.get(name="(System)"), None, |
| 411 | + State.objects.get(type="draft-rfceditor", slug="auth")) |
| 412 | + e.desc = "Test" |
| 413 | + e.save() |
| 414 | + |
| 415 | + url = urlreverse('ietf.sync.views.rfceditor_undo') |
| 416 | + login_testing_unauthorized(self, "rfc", url) |
| 417 | + |
| 418 | + # get |
| 419 | + r = self.client.get(url) |
| 420 | + self.assertEquals(r.status_code, 200) |
| 421 | + self.assertTrue(e.doc_id in r.content) |
| 422 | + |
| 423 | + # delete |
| 424 | + deleted_before = DeletedEvent.objects.count() |
| 425 | + |
| 426 | + r = self.client.post(url, dict(event=e.id)) |
| 427 | + self.assertEquals(r.status_code, 302) |
| 428 | + |
| 429 | + self.assertEquals(StateDocEvent.objects.filter(id=e.id).count(), 0) |
| 430 | + self.assertEquals(DeletedEvent.objects.count(), deleted_before + 1) |
| 431 | + |
| 432 | + # let's just test we can recover |
| 433 | + e = DeletedEvent.objects.all().order_by("-time")[0] |
| 434 | + |
| 435 | + e.content_type.model_class().objects.create(**json.loads(e.json)) |
| 436 | + self.assertEquals(draft.latest_event(type="changed_state").desc, "Test") |
0 commit comments