mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 12:54:40 +01:00
⚗️ add tests
This commit is contained in:
parent
092325e64e
commit
3981a2e4da
5 changed files with 97 additions and 10 deletions
|
|
@ -1,15 +1,14 @@
|
|||
"""Content traits for the pipeline."""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING, ClassVar, Optional
|
||||
# TCH003 is there because Path in TYPECHECKING will fail in tests
|
||||
from pathlib import Path # noqa: TCH003
|
||||
from typing import ClassVar, Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from .trait import TraitBase
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
class MimeType(TraitBase):
|
||||
"""MimeType trait model.
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ from __future__ import annotations
|
|||
import inspect
|
||||
import sys
|
||||
from abc import ABC, abstractmethod
|
||||
from collections import OrderedDict
|
||||
from functools import lru_cache
|
||||
from typing import ClassVar, Optional, Type, Union
|
||||
|
||||
|
|
@ -179,11 +180,13 @@ class TraitsData:
|
|||
dict: Data dictionary.
|
||||
|
||||
"""
|
||||
result = {
|
||||
trait_id: dict(sorted(trait.dict()))
|
||||
for trait_id, trait in self._data.items()
|
||||
}
|
||||
return dict(sorted(result))
|
||||
result = OrderedDict()
|
||||
for trait_id, trait in self._data.items():
|
||||
if not trait or not trait_id:
|
||||
continue
|
||||
result[trait_id] = OrderedDict(trait.dict())
|
||||
|
||||
return result
|
||||
|
||||
def __len__(self):
|
||||
"""Return the length of the data."""
|
||||
|
|
|
|||
|
|
@ -86,7 +86,8 @@ ignore = [
|
|||
"UP006", # support for older python version (type vs. Type)
|
||||
"UP007", # ..^
|
||||
"UP035", # ..
|
||||
"ARG002"
|
||||
"ARG002",
|
||||
"INP001", # add `__init__.py` to namespaced package
|
||||
]
|
||||
|
||||
# Allow fix for all enabled rules (when `--fix`) is provided.
|
||||
|
|
|
|||
1
tests/client/ayon_core/pipeline/traits/__init__.py
Normal file
1
tests/client/ayon_core/pipeline/traits/__init__.py
Normal file
|
|
@ -0,0 +1 @@
|
|||
"""Tests for the representation traits."""
|
||||
83
tests/client/ayon_core/pipeline/traits/test_traits.py
Normal file
83
tests/client/ayon_core/pipeline/traits/test_traits.py
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
"""Tests for the representation traits."""
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
from ayon_core.pipeline.traits import (
|
||||
FileLocation,
|
||||
Image,
|
||||
PixelBased,
|
||||
Planar,
|
||||
TraitBase,
|
||||
TraitsData,
|
||||
)
|
||||
|
||||
TRAITS_DATA = {
|
||||
FileLocation.id: {
|
||||
"file_path": Path("/path/to/file"),
|
||||
"file_size": 1024,
|
||||
"file_hash": None,
|
||||
},
|
||||
Image.id: {},
|
||||
PixelBased.id: {
|
||||
"display_window_width": 1920,
|
||||
"display_window_height": 1080,
|
||||
"pixel_aspect_ratio": 1.0,
|
||||
},
|
||||
Planar.id: {
|
||||
"planar_configuration": "RGB",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def traits_data() -> TraitsData:
|
||||
"""Return a traits data instance."""
|
||||
return TraitsData(traits=[
|
||||
FileLocation(**TRAITS_DATA[FileLocation.id]),
|
||||
Image(),
|
||||
PixelBased(**TRAITS_DATA[PixelBased.id]),
|
||||
Planar(**TRAITS_DATA[Planar.id]),
|
||||
])
|
||||
|
||||
def test_traits_data(traits_data: TraitsData) -> None:
|
||||
"""Test setting and getting traits."""
|
||||
assert len(traits_data) == len(TRAITS_DATA)
|
||||
assert traits_data.get(trait_id=FileLocation.id)
|
||||
assert traits_data.get(trait_id=Image.id)
|
||||
assert traits_data.get(trait_id=PixelBased.id)
|
||||
assert traits_data.get(trait_id=Planar.id)
|
||||
|
||||
assert traits_data.get(trait=FileLocation)
|
||||
assert traits_data.get(trait=Image)
|
||||
assert traits_data.get(trait=PixelBased)
|
||||
assert traits_data.get(trait=Planar)
|
||||
|
||||
assert issubclass(type(traits_data.get(trait=FileLocation)), TraitBase)
|
||||
|
||||
assert traits_data.get(
|
||||
trait=FileLocation) == traits_data.get(trait_id=FileLocation.id)
|
||||
assert traits_data.get(
|
||||
trait=Image) == traits_data.get(trait_id=Image.id)
|
||||
assert traits_data.get(
|
||||
trait=PixelBased) == traits_data.get(trait_id=PixelBased.id)
|
||||
assert traits_data.get(
|
||||
trait=Planar) == traits_data.get(trait_id=Planar.id)
|
||||
|
||||
assert traits_data.get(trait_id="ayon.2d.Image.v1")
|
||||
assert traits_data.get(trait_id="ayon.2d.PixelBased.v1")
|
||||
assert traits_data.get(trait_id="ayon.2d.Planar.v1")
|
||||
|
||||
assert traits_data.get(
|
||||
trait_id="ayon.2d.PixelBased.v1").display_window_width == \
|
||||
TRAITS_DATA[PixelBased.id]["display_window_width"]
|
||||
assert traits_data.get(
|
||||
trait=PixelBased).display_window_height == \
|
||||
TRAITS_DATA[PixelBased.id]["display_window_height"]
|
||||
|
||||
|
||||
def test_traits_data_to_dict(traits_data: TraitsData) -> None:
|
||||
"""Test converting traits data to dictionary."""
|
||||
result = traits_data.as_dict()
|
||||
assert result == TRAITS_DATA
|
||||
Loading…
Add table
Add a link
Reference in a new issue