Skip to content

Commit 65bebc2

Browse files
committed
tests: add test for all available BatchCommand errors
1 parent b7776ae commit 65bebc2

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

src/core/tests/test_api.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,14 @@ def patch_item_successful(cls, mocker, item_id, json_result):
188188
status_code=200,
189189
)
190190

191+
@classmethod
192+
def patch_item_fail(cls, mocker, item_id, status_code, json_result):
193+
mocker.patch(
194+
cls.wikibase_url(f"/entities/items/{item_id}"),
195+
json=json_result,
196+
status_code=status_code,
197+
)
198+
191199
@classmethod
192200
def add_statement_successful(cls, mocker, item_id):
193201
mocker.patch(

src/core/tests/test_batch_processing.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,3 +399,55 @@ def test_set_sitelink_invalid(self, mocker):
399399
self.assertEqual(commands[0].operation, BatchCommand.Operation.SET_SITELINK)
400400
self.assertEqual(commands[0].status, BatchCommand.STATUS_ERROR)
401401
self.assertEqual(commands[0].error, BatchCommand.Error.SITELINK_INVALID)
402+
403+
@requests_mock.Mocker()
404+
def test_all_errors(self, mocker):
405+
ApiMocker.wikidata_property_data_types(mocker)
406+
ApiMocker.is_autoconfirmed(mocker)
407+
ApiMocker.item_empty(mocker, "Q1234")
408+
ApiMocker.item_empty(mocker, "Q5")
409+
ApiMocker.item_empty(mocker, "Q7")
410+
ApiMocker.property_data_type(mocker, "P5", "quantity")
411+
ApiMocker.sitelink_invalid(mocker, "Q1234", "ptwikix")
412+
ApiMocker.patch_item_fail(mocker, "Q5", 400, {"code": "code", "message": "message"})
413+
ApiMocker.patch_item_fail(mocker, "Q7", 500, {"code": "code", "message": "message"})
414+
ApiMocker.statements(mocker, "Q9", {})
415+
ApiMocker.statements(mocker, "Q11", {
416+
"P5": [{
417+
"id": "Q1234$abcdefgh-uijkl",
418+
"value": {
419+
"type": "value",
420+
"content": {"amount": "+32", "unit": "1"},
421+
},
422+
}],
423+
})
424+
batch = self.parse("""
425+
CREATE_PROPERTY|url
426+
Q1234|P5|12
427+
Q1234|Sptwikix|"Cool article"
428+
Q5|P5|123
429+
Q7|P5|321
430+
-Q9|P5|123
431+
-Q11|P5|123
432+
""")
433+
batch.combine_commands = True
434+
batch.run()
435+
self.assertEqual(batch.status, Batch.STATUS_DONE)
436+
commands = batch.commands()
437+
self.assertEqual(commands[0].operation, BatchCommand.Operation.CREATE_PROPERTY)
438+
self.assertEqual(commands[0].error, BatchCommand.Error.OP_NOT_IMPLEMENTED)
439+
self.assertEqual(commands[1].operation, BatchCommand.Operation.SET_STATEMENT)
440+
self.assertEqual(commands[1].error, BatchCommand.Error.COMBINING_COMMAND_FAILED)
441+
self.assertEqual(commands[2].operation, BatchCommand.Operation.SET_SITELINK)
442+
self.assertEqual(commands[2].error, BatchCommand.Error.SITELINK_INVALID)
443+
self.assertEqual(commands[3].operation, BatchCommand.Operation.SET_STATEMENT)
444+
self.assertEqual(commands[3].error, BatchCommand.Error.API_USER_ERROR)
445+
self.assertEqual(commands[4].operation, BatchCommand.Operation.SET_STATEMENT)
446+
self.assertEqual(commands[4].error, BatchCommand.Error.API_SERVER_ERROR)
447+
self.assertEqual(commands[5].operation, BatchCommand.Operation.REMOVE_STATEMENT_BY_VALUE)
448+
self.assertEqual(commands[5].error, BatchCommand.Error.NO_STATEMENTS_PROPERTY)
449+
self.assertEqual(commands[6].operation, BatchCommand.Operation.REMOVE_STATEMENT_BY_VALUE)
450+
self.assertEqual(commands[6].error, BatchCommand.Error.NO_STATEMENTS_VALUE)
451+
self.assertEqual(len(commands), 7)
452+
for command in commands:
453+
self.assertEqual(command.status, BatchCommand.STATUS_ERROR)

0 commit comments

Comments
 (0)