def setup(): pyblish_maya.setup() api.install(maya) io.install("test") self._tempdir = tempfile.mkdtemp() api.register_root(self._tempdir) schema.validate(self._config) schema.validate(self._inventory) inventory.save(name=PROJECT_NAME, config=self._config, inventory=self._inventory) project = io.find_one({"type": "project", "name": PROJECT_NAME}) asset = io.find_one({ "type": "asset", "parent": project["_id"], "name": ASSET_NAME }) # Setup environment os.environ["MINDBENDER__PROJECT"] = str(project["_id"]) os.environ["MINDBENDER__ASSET"] = str(asset["_id"]) os.environ["MINDBENDER_PROJECT"] = PROJECT_NAME os.environ["MINDBENDER_ASSET"] = asset["name"] os.environ["MINDBENDER_ASSETPATH"] = ( "{root}/{project}/{silo}/{asset}".format(root=api.registered_root(), project=PROJECT_NAME, asset=ASSET_NAME, silo="assets")) os.environ["MINDBENDER_SILO"] = "assets"
def test_save_project_data(): """The inventory can take (plain) project data as well""" inventory_ = copy.deepcopy(self._inventory) inventory_["key"] = "value" inventory.save(name=self._project["name"], config=self._config, inventory=inventory_) project = io.find_one({"type": "project", "name": PROJECT_NAME}) assert_equals(project["data"]["key"], "value")
def test_save_asset_data(): """The inventory can take asset data as well""" inventory_ = copy.deepcopy(self._inventory) asset = inventory_["assets"][0] asset.update({"key": "value"}) inventory.save(name=self._project["name"], config=self._config, inventory=inventory_) asset = io.find_one({"type": "asset", "name": asset["name"]}) print(asset) assert_equals(asset["data"]["key"], "value")
def test_load(): """Loading produces compatible results for saving""" inventory.save(name=self._project["name"], config=self._config, inventory=self._inventory) _config, _inventory = inventory.load(PROJECT_NAME) schema.validate(_config) schema.validate(_inventory) inventory.save(name=self._project["name"], config=_config, inventory=_inventory) _config, _inventory = inventory.load(PROJECT_NAME) schema.validate(_config) schema.validate(_inventory)
def test_save_idempotent(): """Saving many times doesn't duplicate assets""" inventory.save(name=self._project["name"], config=self._config, inventory=self._inventory) assert_equals( io.find({ "type": "asset" }).count(), len(self._inventory["assets"]) + len(self._inventory["film"])) inventory.save(name=self._project["name"], config=self._config, inventory=self._inventory) assert_equals( io.find({ "type": "asset" }).count(), len(self._inventory["assets"]) + len(self._inventory["film"]))
def test_save(): """Saving works well under normal circumstances""" config_ = { "schema": "mindbender-core:config-1.0", "apps": [ { "name": "app1" }, { "name": "app2" }, ], "tasks": [ { "name": "task1" }, { "name": "task2" }, ], "template": { "work": "{root}/{project}/{silo}/{asset}/work/" "{task}/{user}/{app}", "publish": "{root}/{project}/{silo}/{asset}/publish/" "{subset}/v{version:0>3}/{subset}.{representation}" }, "copy": {} } inventory_ = { "schema": "mindbender-core:inventory-1.0", "assets": [{ "name": "asset1" }, { "name": "asset2" }], "film": [ { "name": "shot1" }, { "name": "shot2" }, ] } schema.validate(config_) schema.validate(inventory_) _id = io.insert_one(self._project).inserted_id project = io.find_one({"_id": _id}) assert_equals(project["config"], self._project["config"]) inventory.save(name=self._project["name"], config=config_, inventory=inventory_) project = io.find_one({"_id": _id}) config_.pop("schema") assert_equals(project["config"], config_) for asset in inventory_["assets"]: assert io.find_one({ "type": "asset", "parent": project["_id"], "name": asset["name"] })