DeletePrefab_DuplicatedPrefabInstance.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. """
  2. Copyright (c) Contributors to the Open 3D Engine Project.
  3. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. SPDX-License-Identifier: Apache-2.0 OR MIT
  5. """
  6. def DeletePrefab_DuplicatedPrefabInstance():
  7. from pathlib import Path
  8. import azlmbr.legacy.general as general
  9. from editor_python_test_tools.editor_entity_utils import EditorEntity
  10. from editor_python_test_tools.prefab_utils import Prefab
  11. from editor_python_test_tools.wait_utils import PrefabWaiter
  12. import Prefab.tests.PrefabTestUtils as prefab_test_utils
  13. CAR_PREFAB_FILE_NAME = Path(__file__).stem + 'car_prefab'
  14. prefab_test_utils.open_base_tests_level()
  15. # Creates a new entity at the root level
  16. car_entity = EditorEntity.create_editor_entity()
  17. car_prefab_entities = [car_entity]
  18. # Creates a prefab from the new entity
  19. _, car = Prefab.create_prefab(
  20. car_prefab_entities, CAR_PREFAB_FILE_NAME)
  21. # Duplicate the created instance
  22. duplicate_car = Prefab.duplicate_prefabs([car])[0]
  23. # Get parent entity and container id for verifying successful Undo/Redo operations
  24. duplicate_car_parent_id = EditorEntity(duplicate_car.container_entity.get_parent_id())
  25. duplicate_car_id = duplicate_car.container_entity.id
  26. # Deletes the prefab instance
  27. Prefab.remove_prefabs([duplicate_car])
  28. # Undo the prefab delete
  29. general.undo()
  30. PrefabWaiter.wait_for_propagation()
  31. child_ids = duplicate_car_parent_id.get_children_ids()
  32. assert duplicate_car_id in child_ids and len(child_ids) == 2, \
  33. "Undo Failed: Failed to find restored prefab instance after Undo."
  34. # Redo the prefab delete
  35. general.redo()
  36. PrefabWaiter.wait_for_propagation()
  37. child_ids = duplicate_car_parent_id.get_children_ids()
  38. assert duplicate_car_id not in child_ids and len(child_ids) == 1, \
  39. "Redo Failed: Instance was still found after redo of instance deletion."
  40. if __name__ == "__main__":
  41. from editor_python_test_tools.utils import Report
  42. Report.start_test(DeletePrefab_DuplicatedPrefabInstance)