1
0
mirror of https://github.com/ihabunek/toot.git synced 2024-06-30 06:35:24 +00:00
toot/tests/integration/test_lists.py

163 lines
5.1 KiB
Python
Raw Normal View History

2023-12-14 13:10:53 +00:00
from uuid import uuid4
2023-11-29 06:21:03 +00:00
from toot import cli
2023-11-28 10:50:44 +00:00
2023-03-30 09:48:54 +00:00
from tests.integration.conftest import register_account
def test_lists_empty(run):
result = run(cli.lists.list)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert result.stdout.strip() == "You have no lists defined."
2023-03-30 09:48:54 +00:00
2023-12-14 13:10:53 +00:00
def test_lists_empty_json(run_json):
lists = run_json(cli.lists.list, "--json")
assert lists == []
2023-03-30 09:48:54 +00:00
def test_list_create_delete(run):
result = run(cli.lists.create, "banana")
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert result.stdout.strip() == '✓ List "banana" created.'
2023-03-30 09:48:54 +00:00
result = run(cli.lists.list)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert "banana" in result.stdout
2023-03-30 09:48:54 +00:00
result = run(cli.lists.create, "mango")
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert result.stdout.strip() == '✓ List "mango" created.'
2023-03-30 09:48:54 +00:00
result = run(cli.lists.list)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert "banana" in result.stdout
assert "mango" in result.stdout
2023-03-30 09:48:54 +00:00
result = run(cli.lists.delete, "banana")
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert result.stdout.strip() == '✓ List "banana" deleted.'
2023-03-30 09:48:54 +00:00
result = run(cli.lists.list)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert "banana" not in result.stdout
assert "mango" in result.stdout
2023-03-30 09:48:54 +00:00
result = run(cli.lists.delete, "mango")
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert result.stdout.strip() == '✓ List "mango" deleted.'
2023-03-30 09:48:54 +00:00
result = run(cli.lists.list)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert result.stdout.strip() == "You have no lists defined."
2023-03-30 09:48:54 +00:00
result = run(cli.lists.delete, "mango")
2023-11-29 06:21:03 +00:00
assert result.exit_code == 1
assert result.stderr.strip() == "Error: List not found"
2023-03-30 09:48:54 +00:00
2023-12-14 13:10:53 +00:00
def test_list_create_delete_json(run, run_json):
result = run_json(cli.lists.list, "--json")
assert result == []
list = run_json(cli.lists.create, "banana", "--json")
assert list["title"] == "banana"
[list] = run_json(cli.lists.list, "--json")
assert list["title"] == "banana"
list = run_json(cli.lists.create, "mango", "--json")
assert list["title"] == "mango"
lists = run_json(cli.lists.list, "--json")
[list1, list2] = sorted(lists, key=lambda l: l["title"])
assert list1["title"] == "banana"
assert list2["title"] == "mango"
result = run_json(cli.lists.delete, "banana", "--json")
assert result == {}
[list] = run_json(cli.lists.list, "--json")
assert list["title"] == "mango"
result = run_json(cli.lists.delete, "mango", "--json")
assert result == {}
result = run_json(cli.lists.list, "--json")
assert result == []
result = run(cli.lists.delete, "mango", "--json")
assert result.exit_code == 1
assert result.stderr.strip() == "Error: List not found"
2023-03-30 09:48:54 +00:00
def test_list_add_remove(run, app):
2023-12-14 13:10:53 +00:00
list_name = str(uuid4())
2023-03-30 09:48:54 +00:00
acc = register_account(app)
2023-12-14 13:10:53 +00:00
run(cli.lists.create, list_name)
2023-03-30 09:48:54 +00:00
2023-12-14 13:10:53 +00:00
result = run(cli.lists.add, list_name, acc.username)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 1
assert result.stderr.strip() == f"Error: You must follow @{acc.username} before adding this account to a list."
2023-03-30 09:48:54 +00:00
run(cli.accounts.follow, acc.username)
2023-03-30 09:48:54 +00:00
2023-12-14 13:10:53 +00:00
result = run(cli.lists.add, list_name, acc.username)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert result.stdout.strip() == f'✓ Added account "{acc.username}"'
2023-03-30 09:48:54 +00:00
2023-12-14 13:10:53 +00:00
result = run(cli.lists.accounts, list_name)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert acc.username in result.stdout
2023-03-30 09:48:54 +00:00
# Account doesn't exist
2023-12-14 13:10:53 +00:00
result = run(cli.lists.add, list_name, "does_not_exist")
2023-11-29 06:21:03 +00:00
assert result.exit_code == 1
assert result.stderr.strip() == "Error: Account not found"
# List doesn't exist
result = run(cli.lists.add, "does_not_exist", acc.username)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 1
assert result.stderr.strip() == "Error: List not found"
2023-12-14 13:10:53 +00:00
result = run(cli.lists.remove, list_name, acc.username)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert result.stdout.strip() == f'✓ Removed account "{acc.username}"'
2023-03-30 09:48:54 +00:00
2023-12-14 13:10:53 +00:00
result = run(cli.lists.accounts, list_name)
2023-11-29 06:21:03 +00:00
assert result.exit_code == 0
assert result.stdout.strip() == "This list has no accounts."
2023-12-14 13:10:53 +00:00
def test_list_add_remove_json(run, run_json, app):
list_name = str(uuid4())
acc = register_account(app)
run(cli.lists.create, list_name)
result = run(cli.lists.add, list_name, acc.username, "--json")
assert result.exit_code == 1
assert result.stderr.strip() == f"Error: You must follow @{acc.username} before adding this account to a list."
run(cli.accounts.follow, acc.username)
result = run_json(cli.lists.add, list_name, acc.username, "--json")
assert result == {}
[account] = run_json(cli.lists.accounts, list_name, "--json")
assert account["username"] == acc.username
# Account doesn't exist
result = run(cli.lists.add, list_name, "does_not_exist", "--json")
assert result.exit_code == 1
assert result.stderr.strip() == "Error: Account not found"
# List doesn't exist
result = run(cli.lists.add, "does_not_exist", acc.username, "--json")
assert result.exit_code == 1
assert result.stderr.strip() == "Error: List not found"
result = run_json(cli.lists.remove, list_name, acc.username, "--json")
assert result == {}
result = run_json(cli.lists.accounts, list_name, "--json")
assert result == []