40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
"""The renderer identities keep the legacy data contract intact."""
|
|
import importlib.util
|
|
import json
|
|
from pathlib import Path
|
|
import unittest
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
def load(name):
|
|
spec = importlib.util.spec_from_file_location(name, ROOT / "nodes" / f"{name}.py")
|
|
module = importlib.util.module_from_spec(spec)
|
|
spec.loader.exec_module(module)
|
|
return module
|
|
|
|
|
|
class TileContractTests(unittest.TestCase):
|
|
def test_callout_preserves_storage_and_no_execution(self):
|
|
module = load("node_callout")
|
|
plain, tile = module.AusBossCallout, module.AusBossCalloutTile
|
|
self.assertEqual(plain.INPUT_TYPES(), tile.INPUT_TYPES())
|
|
self.assertEqual(tile.RETURN_TYPES, ())
|
|
self.assertFalse(getattr(tile, "OUTPUT_NODE", False))
|
|
self.assertEqual(tile().noop("exact\ntext"), ())
|
|
|
|
def test_note_defaults_are_independent_and_tile_is_explicit(self):
|
|
module = load("node_workflow_note")
|
|
plain, tile = module.AusBossWorkflowNote, module.AusBossWorkflowNoteTile
|
|
original = plain.INPUT_TYPES()
|
|
tile_inputs = tile.INPUT_TYPES()
|
|
self.assertEqual(list(original["required"]), list(tile_inputs["required"]))
|
|
self.assertEqual(json.loads(tile_inputs["required"]["note"][1]["default"])["layout"], "tile")
|
|
self.assertEqual(plain.INPUT_TYPES(), original)
|
|
self.assertEqual(tile.RETURN_TYPES, ())
|
|
self.assertFalse(getattr(tile, "OUTPUT_NODE", False))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|