refactor: change portfolio list output format from table to line-based
- Replace Rich Table format with line-based output for portfolio list display - Each portfolio item now displays as individual key-value pairs - Simplified output structure with better readability - Update test assertion to match new output format
This commit is contained in:
+16
-23
@@ -39,29 +39,22 @@ def to_plain_data(value: Any) -> Any:
|
|||||||
|
|
||||||
|
|
||||||
def print_portfolio_table(console: Console, portfolios: list[PortfolioListItem]) -> None:
|
def print_portfolio_table(console: Console, portfolios: list[PortfolioListItem]) -> None:
|
||||||
table = Table(title="Portfolios", expand=True)
|
for i, item in enumerate(portfolios):
|
||||||
table.add_column("ID", style="cyan", no_wrap=True)
|
if i > 0:
|
||||||
table.add_column("Broker")
|
console.print()
|
||||||
table.add_column("Status", no_wrap=True)
|
lines = [
|
||||||
table.add_column("Symbol", no_wrap=True)
|
f"id: {item.portfolio_id}",
|
||||||
table.add_column("Cash", justify="right")
|
f"broker: {item.broker}",
|
||||||
table.add_column("Qty", justify="right")
|
f"status: {item.status}",
|
||||||
table.add_column("Price", justify="right")
|
f"symbol: {item.symbol}",
|
||||||
table.add_column("Buffer", justify="right")
|
f"cash: {format_currency(item.cash_balance)}",
|
||||||
table.add_column("Total", justify="right")
|
f"qty: {item.asset_quantity:g}",
|
||||||
for item in portfolios:
|
f"price: {format_currency(item.price)}",
|
||||||
table.add_row(
|
f"buffer: {format_currency(item.profit_buffer)}",
|
||||||
item.portfolio_id,
|
f"total: {format_currency(item.total_value)}",
|
||||||
item.broker,
|
]
|
||||||
item.status,
|
for line in lines:
|
||||||
item.symbol,
|
console.print(line)
|
||||||
format_currency(item.cash_balance),
|
|
||||||
f"{item.asset_quantity:g}",
|
|
||||||
format_currency(item.price),
|
|
||||||
format_currency(item.profit_buffer),
|
|
||||||
format_currency(item.total_value),
|
|
||||||
)
|
|
||||||
console.print(table)
|
|
||||||
|
|
||||||
|
|
||||||
def print_portfolio_detail(console: Console, detail: PortfolioDetailResponse) -> None:
|
def print_portfolio_detail(console: Console, detail: PortfolioDetailResponse) -> None:
|
||||||
|
|||||||
+1
-1
@@ -507,7 +507,7 @@ def test_cli_list_renders_table() -> None:
|
|||||||
|
|
||||||
assert result.exit_code == 0
|
assert result.exit_code == 0
|
||||||
assert "005930:tv" in result.stdout
|
assert "005930:tv" in result.stdout
|
||||||
assert "Portfolios" in result.stdout
|
assert "id: 005930:tv" in result.stdout
|
||||||
|
|
||||||
|
|
||||||
def test_cli_status_supports_json_output() -> None:
|
def test_cli_status_supports_json_output() -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user