mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-11-02 03:33:04 +08:00
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
from pydantic import (
|
|
BaseModel,
|
|
ConfigDict,
|
|
)
|
|
|
|
from tool_shed.managers.model_cache import (
|
|
hash_model,
|
|
ModelCache,
|
|
)
|
|
|
|
|
|
class Moo(BaseModel):
|
|
foo: int
|
|
|
|
|
|
class MooLike(BaseModel):
|
|
model_config = ConfigDict(title="Moo")
|
|
foo: int
|
|
|
|
|
|
class NewMoo(BaseModel):
|
|
model_config = ConfigDict(title="Moo")
|
|
foo: int
|
|
new_prop: str
|
|
|
|
|
|
def test_hash():
|
|
hash_moo_1 = hash_model(Moo)
|
|
hash_moo_2 = hash_model(Moo)
|
|
assert hash_moo_1 == hash_moo_2
|
|
|
|
|
|
def test_hash_by_value():
|
|
hash_moo_1 = hash_model(Moo)
|
|
hash_moo_like = hash_model(MooLike)
|
|
assert hash_moo_1 == hash_moo_like
|
|
|
|
|
|
def test_hash_different_on_updates():
|
|
hash_moo_1 = hash_model(Moo)
|
|
hash_moo_new = hash_model(NewMoo)
|
|
assert hash_moo_1 != hash_moo_new
|
|
|
|
|
|
def cache_dict(tmp_path):
|
|
model_cache = ModelCache(tmp_path)
|
|
assert not model_cache.has_cached_entry_for(Moo, "moo", "1.0")
|
|
assert None is model_cache.get_cache_entry_for(Moo, "moo", "1.0")
|
|
model_cache.insert_cache_entry_for(Moo(foo=4), "moo", "1.0")
|
|
moo = model_cache.get_cache_entry_for(Moo, "moo", "1.0")
|
|
assert moo
|
|
assert moo.foo == 4
|
|
assert model_cache.has_cached_entry_for(Moo, "moo", "1.0")
|