*** Settings *** Documentation Download queue API tests for Aniworld. ... Covers status, add, start/stop/pause/resume, clear, retry, and remove. Resource ${CURDIR}/../resources/common.resource Resource ${CURDIR}/../resources/api_keywords.resource Test Setup Run Keywords ... Create Anonymous Session ... AND Setup Master Password ... AND Create Authenticated Session Test Teardown Delete All Sessions *** Test Cases *** # --------------------------------------------------------------------------- # Queue Status # --------------------------------------------------------------------------- Get Empty Queue Status [Documentation] Retrieve queue status when the queue is empty. ${resp}= Get Queue Status Response Should Have Status ${resp} 200 Response Should Contain Keys ${resp} status statistics ${pending}= Get JSON Value ${resp} $.statistics.pending Should Be Equal As Integers ${pending} 0 # --------------------------------------------------------------------------- # Add To Queue # --------------------------------------------------------------------------- Add Episodes To Queue [Documentation] Add episodes to the download queue. ${episodes}= Create List ... {'season': 1, 'episode': 1, 'title': 'Episode 1'} ... {'season': 1, 'episode': 2, 'title': 'Episode 2'} ${payload}= Create Dictionary ... serie_id=test-series ... serie_folder=Test Series ... serie_name=Test Series ... episodes=${episodes} ... priority=NORMAL ${resp}= Add To Queue ${payload} Response Should Have Status ${resp} 201 ${ids}= Get JSON Value ${resp} $.item_ids Should Not Be Empty ${ids} # --------------------------------------------------------------------------- # Queue Controls # --------------------------------------------------------------------------- Start Queue [Documentation] Start processing the download queue. ${resp}= Start Queue Response Should Have Status ${resp} 200 Stop Queue [Documentation] Stop processing the download queue. ${resp}= Stop Queue Response Should Have Status ${resp} 200 Pause Queue [Documentation] Pause the download queue. ${resp}= Pause Queue Response Should Have Status ${resp} 200 Resume Queue [Documentation] Resume the download queue. ${resp}= Resume Queue Response Should Have Status ${resp} 200 # --------------------------------------------------------------------------- # Clear Operations # --------------------------------------------------------------------------- Clear Completed Downloads [Documentation] Clear all completed downloads from the queue. ${resp}= Clear Completed Response Should Have Status ${resp} 200 Clear Failed Downloads [Documentation] Clear all failed downloads from the queue. ${resp}= Clear Failed Response Should Have Status ${resp} 200 Clear Pending Downloads [Documentation] Clear all pending downloads from the queue. ${resp}= Clear Pending Response Should Have Status ${resp} 200 # --------------------------------------------------------------------------- # Item Management # --------------------------------------------------------------------------- Remove Item From Queue [Documentation] Remove a specific item from the queue. ${episodes}= Create List {'season': 1, 'episode': 1, 'title': 'Episode 1'} ${payload}= Create Dictionary ... serie_id=remove-test ... serie_folder=Remove Test ... serie_name=Remove Test ... episodes=${episodes} ... priority=NORMAL ${add_resp}= Add To Queue ${payload} ${json}= Convert String To Json ${add_resp.text} ${ids}= Get Value From Json ${json} $.item_ids ${item_id}= Set Variable ${ids}[0] ${del_resp}= DELETE API /api/queue/item/${item_id} Response Should Have Status ${del_resp} 200 Retry Failed Item [Documentation] Retry a failed download item. ${episodes}= Create List {'season': 1, 'episode': 1, 'title': 'Episode 1'} ${payload}= Create Dictionary ... serie_id=retry-test ... serie_folder=Retry Test ... serie_name=Retry Test ... episodes=${episodes} ... priority=NORMAL ${add_resp}= Add To Queue ${payload} ${json}= Convert String To Json ${add_resp.text} ${ids}= Get Value From Json ${json} $.item_ids ${item_id}= Set Variable ${ids}[0] ${retry_resp}= POST API /api/queue/item/${item_id}/retry Response Should Have Status ${retry_resp} 200 # --------------------------------------------------------------------------- # Queue Statistics Accuracy # --------------------------------------------------------------------------- Queue Statistics Accuracy [Documentation] Verify that queue statistics reflect the actual item counts. # Clear first Clear Pending # Add 2 items ${episodes}= Create List ... {'season': 1, 'episode': 1, 'title': 'Ep 1'} ... {'season': 1, 'episode': 2, 'title': 'Ep 2'} ${payload}= Create Dictionary ... serie_id=stats-test ... serie_folder=Stats Test ... serie_name=Stats Test ... episodes=${episodes} ... priority=NORMAL Add To Queue ${payload} ${resp}= Get Queue Status Response Should Have Status ${resp} 200 ${pending}= Get JSON Value ${resp} $.statistics.pending Should Be Equal As Integers ${pending} 2 ${total}= Get JSON Value ${resp} $.statistics.total Should Be Equal As Integers ${total} 2