|
18 | 18 |
|
19 | 19 | class ViewsTest(TestCase): |
20 | 20 | URL_NAME = "profile" |
| 21 | + maxDiff = None |
21 | 22 |
|
22 | 23 | def assertInRes(self, substring, response): |
23 | 24 | """Checks if a substring is contained in response content""" |
@@ -560,3 +561,44 @@ def test_batch_preview_commands(self, mocker): |
560 | 561 | self.assertInRes("Save and run batch", res) |
561 | 562 | res = self.client.get("/batch/new/preview/commands/") |
562 | 563 | self.assertEqual(res.status_code, 200) |
| 564 | + |
| 565 | + @requests_mock.Mocker() |
| 566 | + def test_batch_report(self, mocker): |
| 567 | + ApiMocker.is_autoconfirmed(mocker) |
| 568 | + ApiMocker.wikidata_property_data_types(mocker) |
| 569 | + ApiMocker.property_data_type(mocker, "P2", "wikibase-item") |
| 570 | + ApiMocker.item_empty(mocker, "Q1234") |
| 571 | + ApiMocker.item_empty(mocker, "Q11") |
| 572 | + ApiMocker.patch_item_successful(mocker, "Q1234", {"id": "Q1234$stuff"}) |
| 573 | + ApiMocker.patch_item_successful(mocker, "Q11", {"id": "Q11", "labels": {"en": "label"}}) |
| 574 | + user, api_client = self.login_user_and_get_token("wikiuser") |
| 575 | + parser = V1CommandParser() |
| 576 | + batch = parser.parse("Batch", "wikiuser", """Q1234\tP2\tQ1||Q11|Len|"label" """) |
| 577 | + batch.save_batch_and_preview_commands() |
| 578 | + pk = batch.pk |
| 579 | + |
| 580 | + response = self.client.get(f"/batch/{pk}/") |
| 581 | + self.assertEqual(response.status_code, 200) |
| 582 | + self.assertTemplateUsed("batch.html") |
| 583 | + self.assertNotInRes(f"""<form method="GET" action="/batch/{pk}/report/">""", response) |
| 584 | + |
| 585 | + batch.run() |
| 586 | + |
| 587 | + response = self.client.get(f"/batch/{pk}/") |
| 588 | + self.assertEqual(response.status_code, 200) |
| 589 | + self.assertTemplateUsed("batch.html") |
| 590 | + self.assertInRes(f"""<form method="GET" action="/batch/{pk}/report/">""", response) |
| 591 | + |
| 592 | + response = self.client.post(f"/batch/{pk}/report/") |
| 593 | + self.assertEqual(response.status_code, 405) |
| 594 | + |
| 595 | + response = self.client.get(f"/batch/{pk}/report/") |
| 596 | + self.assertEqual(response.status_code, 200) |
| 597 | + self.assertEqual(response.headers["Content-Disposition"], f'attachment; filename="batch-{pk}-report.csv"') |
| 598 | + result = ( |
| 599 | + """b'batch_id,index,operation,status,error,message,entity_id,raw_input,api_response\\r\\n""" |
| 600 | + """1,0,set_statement,Done,,,Q1234,Q1234|P2|Q1,{\\\'id\\\': \\\'Q1234$stuff\\\'}\\r\\n""" |
| 601 | + """1,1,set_label,Done,,,Q11,"Q11|Len|""label"" ",""" |
| 602 | + """"{\\\'id\\\': \\\'Q11\\\', \\\'labels\\\': {\\\'en\\\': \\\'label\\\'}}"\\r\\n\'""" |
| 603 | + ) |
| 604 | + self.assertEqual(result, str(response.content).strip()) |
0 commit comments