mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
#1784 - location of existing unittests refactored for futuru use
This commit is contained in:
parent
af62e10b74
commit
7c30263101
10 changed files with 167 additions and 0 deletions
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
{"options":{"capped":true,"size":{"$numberDouble":"1.073741824E+09"},"max":{"$numberInt":"5000"}},"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_"}],"uuid":"f982c4d7baf54d03b88aaa540c9ced8e","collectionName":"logs"}
|
||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
{"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_"}],"uuid":"8329d557adfe48018cd533dc648e3b7f","collectionName":"settings"}
|
||||
Binary file not shown.
|
|
@ -0,0 +1 @@
|
|||
{"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_"}],"uuid":"bfe11cd230d041438b288f7d6ad8e70f","collectionName":"test_project"}
|
||||
164
tests/unit/openpype/modules/sync_server/test_site_operations.py
Normal file
164
tests/unit/openpype/modules/sync_server/test_site_operations.py
Normal file
|
|
@ -0,0 +1,164 @@
|
|||
"""Test file for Sync Server, tests site operations add_site, remove_site"""
|
||||
import os
|
||||
import pytest
|
||||
from bson.objectid import ObjectId
|
||||
|
||||
from tests.lib.DBHandler import DBHandler
|
||||
|
||||
TEST_DB_NAME = "test_db"
|
||||
TEST_PROJECT_NAME = "test_project"
|
||||
TEST_OPENPYPE_NAME = "test_openpype"
|
||||
REPRESENTATION_ID = "60e578d0c987036c6a7b741d"
|
||||
|
||||
|
||||
@pytest.fixture(scope='session')
|
||||
def monkeypatch_session():
|
||||
"""Monkeypatch couldn't be used with module or session fixtures."""
|
||||
from _pytest.monkeypatch import MonkeyPatch
|
||||
m = MonkeyPatch()
|
||||
yield m
|
||||
m.undo()
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def db_init(monkeypatch_session):
|
||||
backup_dir = os.path.abspath(
|
||||
os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
'fixture'
|
||||
)
|
||||
)
|
||||
|
||||
uri = os.environ.get("OPENPYPE_MONGO") or "mongodb://localhost:27017"
|
||||
db = DBHandler(uri)
|
||||
db.setup_from_dump(TEST_DB_NAME, backup_dir, True,
|
||||
db_name_out=TEST_DB_NAME)
|
||||
|
||||
db.setup_from_dump("openpype", backup_dir, True,
|
||||
db_name_out=TEST_OPENPYPE_NAME)
|
||||
|
||||
# set needed env vars temporarily for tests
|
||||
monkeypatch_session.setenv("OPENPYPE_MONGO", uri)
|
||||
monkeypatch_session.setenv("AVALON_MONGO", uri)
|
||||
monkeypatch_session.setenv("OPENPYPE_DATABASE_NAME", TEST_OPENPYPE_NAME)
|
||||
monkeypatch_session.setenv("AVALON_TIMEOUT", '3000')
|
||||
monkeypatch_session.setenv("AVALON_DB", TEST_DB_NAME)
|
||||
monkeypatch_session.setenv("AVALON_PROJECT", TEST_PROJECT_NAME)
|
||||
monkeypatch_session.setenv("PYPE_DEBUG", "3")
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def setup_avalon_db(db_init):
|
||||
"""Connect to Avalon, only after 'db_init' sets env vars."""
|
||||
from avalon.api import AvalonMongoDB
|
||||
db = AvalonMongoDB()
|
||||
yield db
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def setup_sync_server_module(db_init):
|
||||
"""Get sync_server_module from ModulesManager"""
|
||||
from openpype.modules import ModulesManager
|
||||
|
||||
manager = ModulesManager()
|
||||
sync_server = manager.modules_by_name["sync_server"]
|
||||
yield sync_server
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("setup_avalon_db")
|
||||
def test_project_created(setup_avalon_db):
|
||||
assert ['test_project'] == setup_avalon_db.database.collection_names(False)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("setup_avalon_db")
|
||||
def test_objects_imported(setup_avalon_db):
|
||||
count_obj = len(list(setup_avalon_db.database[TEST_PROJECT_NAME].find({})))
|
||||
assert 15 == count_obj
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("setup_sync_server_module")
|
||||
def test_add_site(setup_avalon_db, setup_sync_server_module):
|
||||
"""Adds 'test_site', checks that added, checks that doesn't duplicate."""
|
||||
query = {
|
||||
"_id": ObjectId(REPRESENTATION_ID)
|
||||
}
|
||||
|
||||
ret = setup_avalon_db.database[TEST_PROJECT_NAME].find(query)
|
||||
|
||||
assert 1 == len(list(ret)), \
|
||||
"Single {} must be in DB".format(REPRESENTATION_ID)
|
||||
|
||||
setup_sync_server_module.add_site(TEST_PROJECT_NAME, REPRESENTATION_ID,
|
||||
site_name='test_site')
|
||||
|
||||
ret = list(setup_avalon_db.database[TEST_PROJECT_NAME].find(query))
|
||||
|
||||
assert 1 == len(ret), \
|
||||
"Single {} must be in DB".format(REPRESENTATION_ID)
|
||||
|
||||
ret = ret.pop()
|
||||
site_names = [site["name"] for site in ret["files"][0]["sites"]]
|
||||
assert 'test_site' in site_names, "Site name wasn't added"
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("setup_sync_server_module")
|
||||
def test_add_site_again(setup_avalon_db, setup_sync_server_module):
|
||||
"""Depends on test_add_site, must throw exception."""
|
||||
with pytest.raises(ValueError):
|
||||
setup_sync_server_module.add_site(TEST_PROJECT_NAME, REPRESENTATION_ID,
|
||||
site_name='test_site')
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("setup_sync_server_module")
|
||||
def test_add_site_again_force(setup_avalon_db, setup_sync_server_module):
|
||||
"""Depends on test_add_site, must not throw exception."""
|
||||
setup_sync_server_module.add_site(TEST_PROJECT_NAME, REPRESENTATION_ID,
|
||||
site_name='test_site', force=True)
|
||||
|
||||
query = {
|
||||
"_id": ObjectId(REPRESENTATION_ID)
|
||||
}
|
||||
|
||||
ret = list(setup_avalon_db.database[TEST_PROJECT_NAME].find(query))
|
||||
|
||||
assert 1 == len(ret), \
|
||||
"Single {} must be in DB".format(REPRESENTATION_ID)
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("setup_sync_server_module")
|
||||
def test_remove_site(setup_avalon_db, setup_sync_server_module):
|
||||
"""Depends on test_add_site, must remove 'test_site'."""
|
||||
setup_sync_server_module.remove_site(TEST_PROJECT_NAME, REPRESENTATION_ID,
|
||||
site_name='test_site')
|
||||
|
||||
query = {
|
||||
"_id": ObjectId(REPRESENTATION_ID)
|
||||
}
|
||||
|
||||
ret = list(setup_avalon_db.database[TEST_PROJECT_NAME].find(query))
|
||||
|
||||
assert 1 == len(ret), \
|
||||
"Single {} must be in DB".format(REPRESENTATION_ID)
|
||||
|
||||
ret = ret.pop()
|
||||
site_names = [site["name"] for site in ret["files"][0]["sites"]]
|
||||
|
||||
assert 'test_site' not in site_names, "Site name wasn't removed"
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("setup_sync_server_module")
|
||||
def test_remove_site_again(setup_avalon_db, setup_sync_server_module):
|
||||
"""Depends on test_add_site, must trow exception"""
|
||||
with pytest.raises(ValueError):
|
||||
setup_sync_server_module.remove_site(TEST_PROJECT_NAME,
|
||||
REPRESENTATION_ID,
|
||||
site_name='test_site')
|
||||
|
||||
query = {
|
||||
"_id": ObjectId(REPRESENTATION_ID)
|
||||
}
|
||||
|
||||
ret = list(setup_avalon_db.database[TEST_PROJECT_NAME].find(query))
|
||||
|
||||
assert 1 == len(ret), \
|
||||
"Single {} must be in DB".format(REPRESENTATION_ID)
|
||||
Loading…
Add table
Add a link
Reference in a new issue