Files
Aniworld/tests/robot/api/download.robot

146 lines
5.8 KiB
Plaintext

*** 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_count
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_count
Should Be Equal As Integers ${pending} 2
${total}= Get JSON Value ${resp} $.statistics.total
Should Be Equal As Integers ${total} 2