#1784 - location of existing unittests refactored for futuru use

This commit is contained in:
Petr Kalis 2021-07-07 18:50:53 +02:00
parent af62e10b74
commit 7c30263101
10 changed files with 167 additions and 0 deletions

View file

@ -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"}

View file

@ -0,0 +1 @@
{"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_"}],"uuid":"8329d557adfe48018cd533dc648e3b7f","collectionName":"settings"}

View file

@ -0,0 +1 @@
{"indexes":[{"v":{"$numberInt":"2"},"key":{"_id":{"$numberInt":"1"}},"name":"_id_"}],"uuid":"bfe11cd230d041438b288f7d6ad8e70f","collectionName":"test_project"}

View 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)