示例#1
0
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"
示例#2
0
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")
示例#3
0
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")
示例#4
0
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)
示例#5
0
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"]))
示例#6
0
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"]
        })