File: test_py_convert.py

package info (click to toggle)
tina 0.1.14-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 920 kB
  • sloc: ansic: 1,653; sh: 1,415; python: 1,189; makefile: 42
file content (38 lines) | stat: -rw-r--r-- 1,230 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# SPDX-FileCopyrightText: Peter Pentchev <roam@ringlet.net>
# SPDX-License-Identifier: GPL-2.0-or-later
"""Test the interoperability between `tina-convert` and the Python `tina_mgr` library."""

from __future__ import annotations

import typing

from tina_mgr import db
from tina_mgr import parse
from unit import util as t_util

from . import defs as tc_defs


if typing.TYPE_CHECKING:
    from typing import Any, Final


def raw_to_db(entries: list[dict[str, Any]]) -> list[db.TinaEntry]:
    """Convert the raw dict representation into a list of [`TinaEntry`] objects."""

    def raw_to_entry(entry: dict[str, Any]) -> db.TinaEntry:
        """Convert a single dict to a [`TinaEntry`] object."""
        return db.TinaEntry(
            id=entry["id"],
            desc=entry["desc"],
            children=raw_to_db(entry["children"]) if entry["children"] is not None else [],
        )

    return [raw_to_entry(entry) for entry in entries]


def test_read_db() -> None:
    """Read the test database in the native format, compare it to what we expect."""
    contents: Final = t_util.TEST_DB.read_text(encoding="UTF-8")
    test_entries: Final = parse.loads(contents)
    assert test_entries == raw_to_db(tc_defs.TEST_DATA)