12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- """
- Copyright (c) Contributors to the Open 3D Engine Project.
- For complete copyright and license terms please see the LICENSE at the root of this distribution.
- SPDX-License-Identifier: Apache-2.0 OR MIT
- """
- def AddEntity_UnderChildEntityOfPrefab():
- """
- Test description:
- - Creates an entity.
- - Creates a prefab out of the above entity.
- - Focuses on the created prefab and adds a new child entity.
- - Creates a child entity under the above child entity of the created prefab.
- - Checks that the entity is correctly added.
- """
- from editor_python_test_tools.editor_entity_utils import EditorEntity
- from editor_python_test_tools.prefab_utils import Prefab
- from editor_python_test_tools.wait_utils import PrefabWaiter
- import Prefab.tests.PrefabTestUtils as prefab_test_utils
- prefab_test_utils.open_base_tests_level()
- from pathlib import Path
- PREFAB_FILE_NAME = Path(__file__).stem + '_' + 'some_prefab'
- # Creates a new entity at the root level
- entity = EditorEntity.create_editor_entity()
- assert entity.id.IsValid(), "Couldn't create entity."
- # Creates a new Prefab, gets focus, and adds a child entity
- # Asserts if prefab creation doesn't succeed
- child_prefab, child_instance = Prefab.create_prefab([entity], PREFAB_FILE_NAME)
- child_entity_ids_inside_prefab_instance = child_instance.get_direct_child_entities()
- assert len(child_entity_ids_inside_prefab_instance) == 1, f"{len(child_entity_ids_inside_prefab_instance)} entities found inside prefab" \
- f" when there should have been just 1 entity"
- child_entity_inside_prefab = child_entity_ids_inside_prefab_instance[0]
- child_entity_inside_prefab.focus_on_owning_prefab()
- second_child_entity = child_entity_inside_prefab.create_editor_entity(parent_id=child_entity_inside_prefab.id)
- # Wait till prefab propagation finishes before validating add second child entity
- PrefabWaiter.wait_for_propagation()
- assert second_child_entity.id.IsValid(), "Couldn't add second child entity"
- # Test undo/redo on add second child entity
- azlmbr.legacy.general.undo()
- PrefabWaiter.wait_for_propagation()
- child_entity_ids_inside_prefab = child_entity_inside_prefab.get_children()
- assert len(child_entity_ids_inside_prefab) == 0, f"{len(child_entity_ids_inside_prefab)} child entities found inside prefab" \
- f" after Undo operation, when there should have been 0 child entities"
- azlmbr.legacy.general.redo()
- PrefabWaiter.wait_for_propagation()
- child_entity_ids_inside_prefab = child_entity_inside_prefab.get_children()
- assert len(child_entity_ids_inside_prefab) == 1, f"{len(child_entity_ids_inside_prefab)} child entities found inside prefab" \
- f" after Redo operation, when there should have been 1 child entity"
- if __name__ == "__main__":
- from editor_python_test_tools.utils import Report
- Report.start_test(AddEntity_UnderChildEntityOfPrefab)
|