|
| 1 | +import types |
| 2 | +import datetime |
| 3 | +import pytest |
| 4 | +from dtop.core.docker_tui import DockerTUI |
| 5 | + |
| 6 | +class DummyContainer: |
| 7 | + def __init__(self, id, name, image_tags=None, status='running'): |
| 8 | + self.id = id |
| 9 | + self.name = name |
| 10 | + self.image = types.SimpleNamespace(tags=image_tags or []) |
| 11 | + self.status = status |
| 12 | + self.attrs = { |
| 13 | + 'Created': '2024-01-01T00:00:00Z', |
| 14 | + 'State': { |
| 15 | + 'Running': status == 'running', |
| 16 | + 'StartedAt': '2024-01-01T00:00:00Z' |
| 17 | + } |
| 18 | + } |
| 19 | + |
| 20 | +class DummyClient: |
| 21 | + def __init__(self, containers): |
| 22 | + self.containers = types.SimpleNamespace(list=lambda all=True: containers) |
| 23 | + |
| 24 | +@pytest.fixture |
| 25 | +def dummy_tui(monkeypatch): |
| 26 | + containers = [ |
| 27 | + DummyContainer('1', 'alpha', ['img1'], 'running'), |
| 28 | + DummyContainer('2', 'bravo', ['img2'], 'exited') |
| 29 | + ] |
| 30 | + monkeypatch.setattr('docker.from_env', lambda: DummyClient(containers)) |
| 31 | + monkeypatch.setattr('dtop.core.stats.schedule_stats_collection_sync', lambda *a, **k: None) |
| 32 | + return DockerTUI() |
| 33 | + |
| 34 | +def test_fetch_containers(dummy_tui): |
| 35 | + conts = dummy_tui.fetch_containers() |
| 36 | + assert len(conts) == 2 |
| 37 | + assert {c.name for c in conts} == {'alpha', 'bravo'} |
| 38 | + |
| 39 | +def test_sort_containers(dummy_tui): |
| 40 | + containers = dummy_tui.fetch_containers() |
| 41 | + dummy_tui.sort_column = 0 # NAME |
| 42 | + sorted_list = dummy_tui.sort_containers(containers) |
| 43 | + assert [c.name for c in sorted_list] == ['alpha', 'bravo'] |
| 44 | + |
| 45 | +from dtop.utils.utils import format_bytes, format_datetime |
| 46 | + |
| 47 | +def test_format_bytes(): |
| 48 | + assert format_bytes(1024) == '1.0KB' |
| 49 | + assert format_bytes(1048576) == '1.0MB' |
| 50 | + |
| 51 | +def test_format_datetime(): |
| 52 | + iso = '2024-05-05T12:34:56Z' |
| 53 | + assert format_datetime(iso) == '2024-05-05 12:34:56' |
0 commit comments