mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +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."""
|
"""Content traits for the pipeline."""
|
||||||
from __future__ import annotations
|
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 pydantic import Field
|
||||||
|
|
||||||
from .trait import TraitBase
|
from .trait import TraitBase
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
|
|
||||||
class MimeType(TraitBase):
|
class MimeType(TraitBase):
|
||||||
"""MimeType trait model.
|
"""MimeType trait model.
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ from __future__ import annotations
|
||||||
import inspect
|
import inspect
|
||||||
import sys
|
import sys
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
|
from collections import OrderedDict
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
from typing import ClassVar, Optional, Type, Union
|
from typing import ClassVar, Optional, Type, Union
|
||||||
|
|
||||||
|
|
@ -179,11 +180,13 @@ class TraitsData:
|
||||||
dict: Data dictionary.
|
dict: Data dictionary.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
result = {
|
result = OrderedDict()
|
||||||
trait_id: dict(sorted(trait.dict()))
|
for trait_id, trait in self._data.items():
|
||||||
for trait_id, trait in self._data.items()
|
if not trait or not trait_id:
|
||||||
}
|
continue
|
||||||
return dict(sorted(result))
|
result[trait_id] = OrderedDict(trait.dict())
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
"""Return the length of the data."""
|
"""Return the length of the data."""
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,8 @@ ignore = [
|
||||||
"UP006", # support for older python version (type vs. Type)
|
"UP006", # support for older python version (type vs. Type)
|
||||||
"UP007", # ..^
|
"UP007", # ..^
|
||||||
"UP035", # ..
|
"UP035", # ..
|
||||||
"ARG002"
|
"ARG002",
|
||||||
|
"INP001", # add `__init__.py` to namespaced package
|
||||||
]
|
]
|
||||||
|
|
||||||
# Allow fix for all enabled rules (when `--fix`) is provided.
|
# 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