From eaab19e310edd682af0231fe06f9a647bfcd5834 Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Thu, 9 May 2024 12:19:39 +0200 Subject: Dump yaml without sorting keys, check for dataclass on validate --- tests/test_stash.py | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/test_stash.py b/tests/test_stash.py index 0e84eae..d6f8ab9 100644 --- a/tests/test_stash.py +++ b/tests/test_stash.py @@ -5,7 +5,7 @@ from ymlstash import YmlStash from dataclasses import dataclass from typing import ClassVar -TEST_STASH_PATH = "/tmp" +TEST_STASH_PATH = Path("/tmp") @dataclass @@ -21,9 +21,12 @@ def test_stash_path(): assert stash.path == Path(".") -def test_invalid_path(): +def test_invalid(): with pytest.raises(Exception): YmlStash(User, "/tmp/does/not/exist") + with pytest.raises(Exception) as e: + YmlStash(object, ".") + assert "is not a dataclass" in e.value.args[0] def test_stash(): @@ -55,7 +58,7 @@ def test_stash(): def test_key_field(): @dataclass class Rat: - key: ClassVar[str] = "name" + key: ClassVar[str] = "foo" with pytest.raises(Exception): YmlStash(Rat, ".") @@ -75,3 +78,26 @@ def test_key_field(): assert stash.list_keys() == ["terra", "dupe"] stash.drop() + + +def test_dump_order(): + @dataclass + class Order: + o: int + r: int + d: int + e: int + a: int + z: int + key: ClassVar[str] = "o" + + stash = YmlStash(Order, TEST_STASH_PATH) + order = Order(1, 2, 3, 4, 5, 6) + stash.save(order) + + with open(TEST_STASH_PATH / "1.yml", "r") as f: + lines = f.readlines() + keys = "".join([line[0] for line in lines]) + assert keys == "ordeaz" + + stash.drop() -- cgit v1.3.1