def test_get_layouts_by_layout_type(self, tmpdir): """ Given: - Layout FileType. When: - Wanting to retrieve all layout below 6.0.0 version from the current pack. Then: - Ensure only layouts below 6.0.0 version in the pack are returned. """ fake_pack_name = 'FakeTestPack' repo = Repo(tmpdir) repo_path = Path(repo.path) fake_pack = MockPack(repo_path / 'Packs', fake_pack_name, repo) fake_pack.create_layout('close-ExtraHop_Detection', util_load_json(self.LAYOUT_CLOSE_PATH)) fake_pack.create_layout('details-ExtraHop_Detection', util_load_json(self.LAYOUT_DETAILS_PATH)) fake_pack.create_layout('edit-ExtraHop_Detection', util_load_json(self.LAYOUT_EDIT_PATH)) fake_pack.create_layout('quickView-ExtraHop_Detection', util_load_json(self.LAYOUT_QUICK_VIEW_PATH)) fake_pack.create_layout('mobile-ExtraHop_Detection', util_load_json(self.LAYOUT_MOBILE_PATH)) fake_pack_path = fake_pack.path layouts = BaseConverter.get_entities_by_entity_type( Pack(fake_pack_path).layouts, FileType.LAYOUT) assert len(layouts) == 5 assert all(layout.type() == FileType.LAYOUT for layout in layouts) assert {layout.get('kind') for layout in layouts } == {'close', 'details', 'edit', 'mobile', 'quickView'}
def test_group_layouts_needing_conversion_by_layout_id(self, tmpdir): """ Given: - When: - Grouping layouts needing conversion by their layout ID. Then: - Ensure expected dict object is returned. """ fake_pack_name = 'FakeTestPack' repo = Repo(tmpdir) repo_path = Path(repo.path) fake_pack = MockPack(repo_path / 'Packs', fake_pack_name, repo) fake_pack.create_layout('close-ExtraHop_Detection', util_load_json(self.LAYOUT_CLOSE_PATH)) fake_pack.create_layout('details-ExtraHop_Detection', util_load_json(self.LAYOUT_DETAILS_PATH)) fake_pack.create_layout('edit-ExtraHop_Detection', util_load_json(self.LAYOUT_EDIT_PATH)) fake_pack.create_layout('quickView-ExtraHop_Detection', util_load_json(self.LAYOUT_QUICK_VIEW_PATH)) fake_pack.create_layout('mobile-ExtraHop_Detection', util_load_json(self.LAYOUT_MOBILE_PATH)) fake_pack_path = fake_pack.path layout_converter = LayoutSixConverter(Pack(fake_pack_path)) result = layout_converter.group_layouts_needing_conversion_by_layout_id() assert len(result) == 1 and 'ExtraHop Detection' in result layout_kinds = {layout['kind'] for layout in result['ExtraHop Detection']} assert all(layout.layout_id() == 'ExtraHop Detection' for layout in result['ExtraHop Detection']) assert layout_kinds == {'close', 'details', 'edit', 'mobile', 'quickView'}
def test_convert_dir(self, tmpdir): """ Given: - Pack. When: - Converting every layout of version 6.0.0 and above to version 5.9.9 and below. Then: - Ensure expected layouts are created with expected values. """ fake_pack_name = 'FakeTestPack' repo = Repo(tmpdir) repo_path = Path(repo.path) fake_pack = MockPack(repo_path / 'Packs', fake_pack_name, repo) fake_pack.create_layout('close-ExtraHop_Detection', util_load_json(self.LAYOUT_CLOSE_PATH)) fake_pack.create_layout('details-ExtraHop_Detection', util_load_json(self.LAYOUT_DETAILS_PATH)) fake_pack.create_layout('edit-ExtraHop_Detection', util_load_json(self.LAYOUT_EDIT_PATH)) fake_pack.create_layout('quickView-ExtraHop_Detection', util_load_json(self.LAYOUT_QUICK_VIEW_PATH)) fake_pack.create_layout('mobile-ExtraHop_Detection', util_load_json(self.LAYOUT_MOBILE_PATH)) fake_pack_path = fake_pack.path layout_converter = LayoutSixConverter(Pack(fake_pack_path)) layout_converter.convert_dir() expected_new_layout_path = f'{str(layout_converter.pack.path)}/Layouts/layoutscontainer-ExtraHop_Detection.json' assert os.path.exists(expected_new_layout_path) with open(expected_new_layout_path, 'r') as f: layout_data = json.loads(f.read()) test_data_json = util_load_json(os.path.join(__file__, f'{git_path()}/demisto_sdk/commands/convert/converters/layout/' 'tests/test_data' '/layoutscontainer-ExtraHop_Detection.json')) assert layout_data == test_data_json os.remove(expected_new_layout_path)
def test_calculate_new_layout_group(self, tmpdir, old_layout_path: str, expected: str): """ Given: - 'old_layouts': List of old layout objects. When: - Calculating the group field value for the layout above 6.0.0 version to be created. Then: - Ensure the expected group value is returned. """ fake_pack_name = 'FakeTestPack' repo = Repo(tmpdir) repo_path = Path(repo.path) fake_pack = MockPack(repo_path / 'Packs', fake_pack_name, repo) fake_pack.create_layout('test', util_load_json(old_layout_path)) fake_pack_path = fake_pack.path layout_converter = LayoutSixConverter(Pack(fake_pack_path)) assert layout_converter.calculate_new_layout_group( [layout for layout in layout_converter.pack.layouts]) == expected