Skip to content
This repository was archived by the owner on Apr 7, 2022. It is now read-only.

Commit 09e7d30

Browse files
committed
[WIPTEST] New test:test_edit_zone
1 parent 42ab189 commit 09e7d30

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

cfme/base/__init__.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,11 +385,15 @@ class Region(BaseEntity, sentaku.modeling.ElementMixin):
385385

386386
@property
387387
def settings_string(self):
388+
# TODO: This does not work when region description is not set to default.
388389
return f"{self.appliance.product_name} Region: Region {self.number} [{self.number}]"
389390

390391
@property
391392
def region_string(self):
392-
"""Return Region string like `Region 0`"""
393+
"""
394+
Return Region string like `Region 0`
395+
TODO: This does not work when region description is not set to default.
396+
"""
393397
return f"Region {self.number}"
394398

395399
@property
@@ -470,6 +474,15 @@ def set_help_menu_configuration(self, config):
470474
view.submit.click()
471475
view.flash.assert_no_error()
472476

477+
@property
478+
def rest_api_entity(self):
479+
try:
480+
return self.appliance.rest_api.collections.regions.get(region_number=self.number)
481+
except ValueError:
482+
raise RestLookupError(
483+
f"No region rest entity found matching region_number {self.number}"
484+
)
485+
473486

474487
@attr.s
475488
class RegionCollection(BaseCollection, sentaku.modeling.ElementMixin):

cfme/tests/configure/test_rest_config.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
import fauxfactory
12
import pytest
23

34
from cfme import test_requirements
45
from cfme.utils.appliance.implementations.ui import navigate_to
6+
from cfme.utils.rest import assert_response
7+
from cfme.utils.wait import wait_for
58

69
pytestmark = [test_requirements.rest, pytest.mark.tier(1)]
710

@@ -33,3 +36,40 @@ def _reset_settings():
3336

3437
view = navigate_to(appliance.server, "Advanced")
3538
assert view.is_displayed
39+
40+
41+
@pytest.mark.meta(automates=[1805844])
42+
@pytest.mark.parametrize("from_detail", [True, False], ids=["from_detail", "from_collection"])
43+
def test_edit_region(temp_appliance_preconfig_funcscope, from_detail):
44+
"""
45+
Bugzilla:
46+
1805844
47+
48+
Polarion:
49+
assignee: pvala
50+
casecomponent: Configuration
51+
caseimportance: medium
52+
initialEstimate: 1/10h
53+
"""
54+
appliance = temp_appliance_preconfig_funcscope
55+
ui_region = appliance.server.zone.region
56+
view = navigate_to(ui_region, "Details")
57+
payload = {
58+
"description": fauxfactory.gen_alpha(start=f"Edited {ui_region.region_string} ", length=20)
59+
}
60+
expected_title = f'CFME Region "{payload["description"]} [{ui_region.number}]"'
61+
currently_selected = f'CFME Region: {payload["description"]} [{ui_region.number}]'
62+
63+
region = ui_region.rest_api_entity
64+
if from_detail:
65+
region.action.edit(**payload)
66+
else:
67+
payload.update(region._ref_repr())
68+
appliance.rest_api.collections.regions.action.edit(payload)
69+
70+
assert_response(appliance)
71+
wait_for(
72+
lambda: region.description == payload["description"], fail_func=region.reload, timeout=30
73+
)
74+
wait_for(lambda: view.title.text == expected_title, fail_func=view.browser.refresh, timeout=800)
75+
assert currently_selected in view.accordions.settings.tree.currently_selected

0 commit comments

Comments
 (0)