Skip to content

Commit 479f124

Browse files
author
Robert Segal
committed
Added Accounts user groups e2e tests
1 parent 000bf54 commit 479f124

File tree

8 files changed

+199
-5
lines changed

8 files changed

+199
-5
lines changed

.github/workflows/cron-main-e2e.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
jobs:
77
build:
88
runs-on: ubuntu-latest
9-
timeout-minutes: 10
9+
timeout-minutes: 15
1010
steps:
1111
- name: "Checkout"
1212
uses: actions/checkout@v4

.github/workflows/pr-build-merge.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
build:
1616

1717
runs-on: ubuntu-latest
18-
timeout-minutes: 10
18+
timeout-minutes: 15
1919

2020
steps:
2121
- name: "Checkout"

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
build:
1313

1414
runs-on: ubuntu-latest
15-
timeout-minutes: 10
15+
timeout-minutes: 15
1616

1717
steps:
1818
- name: "Checkout"

e2e_config.test.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
"catalog.product.parameter.id": "PAR-7255-3950-0016",
66
"accounts.account.id": "ACC-9042-0088",
77
"accounts.buyer.account.id": "ACC-1086-6867",
8-
"accounts.buyer.id": "BUY-1591-2112"
8+
"accounts.buyer.id": "BUY-1591-2112",
9+
"accounts.user_group.id": "UGR-6822-0561"
910
}

tests/e2e/accounts/conftest.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def _seller(
4646
@pytest.fixture
4747
def account():
4848
def _account(
49-
name: str = "Test Api Client Vendor",
49+
name: str = "E2E Test Api Client Vendor",
5050
):
5151
return {
5252
"name": name,
@@ -90,3 +90,20 @@ def _buyer(
9090
}
9191

9292
return _buyer
93+
94+
95+
@pytest.fixture
96+
def user_group(account_id):
97+
def _user_group(
98+
name: str = "E2E Test Api Client User Group",
99+
):
100+
return {
101+
"name": name,
102+
"account": {"id": account_id},
103+
"buyers": None,
104+
"logo": "",
105+
"description": "User group for E2E tests",
106+
"modules": [{"id": "MOD-1756"}],
107+
}
108+
109+
return _user_group
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import pytest
2+
3+
from mpt_api_client.exceptions import MPTAPIError
4+
from mpt_api_client.rql.query_builder import RQLQuery
5+
6+
pytestmark = [pytest.mark.flaky]
7+
8+
9+
@pytest.fixture
10+
async def created_user_group(async_mpt_ops, user_group):
11+
new_user_group_request_data = user_group()
12+
created_user_group = await async_mpt_ops.accounts.user_groups.create(
13+
new_user_group_request_data
14+
)
15+
16+
yield created_user_group
17+
18+
try:
19+
await async_mpt_ops.accounts.user_groups.delete(created_user_group.id)
20+
except MPTAPIError as error:
21+
print(f"TEARDOWN - Unable to delete user group: {error.title}") # noqa: WPS421
22+
23+
24+
async def test_get_user_group_by_id(async_mpt_ops, user_group_id):
25+
user_group = await async_mpt_ops.accounts.user_groups.get(user_group_id)
26+
assert user_group is not None
27+
28+
29+
async def test_list_user_groups(async_mpt_ops):
30+
limit = 10
31+
user_groups = await async_mpt_ops.accounts.user_groups.fetch_page(limit=limit)
32+
assert len(user_groups) > 0
33+
34+
35+
async def test_get_user_group_by_id_not_found(async_mpt_ops, invalid_user_group_id):
36+
with pytest.raises(MPTAPIError, match=r"404 Not Found"):
37+
await async_mpt_ops.accounts.user_groups.get(invalid_user_group_id)
38+
39+
40+
async def test_filter_user_groups(async_mpt_ops, user_group_id):
41+
select_fields = ["-name"]
42+
43+
filtered_user_groups = (
44+
async_mpt_ops.accounts.user_groups.filter(RQLQuery(id=user_group_id))
45+
.filter(RQLQuery(name="E2E Seeded User Group"))
46+
.select(*select_fields)
47+
)
48+
49+
user_groups = [
50+
filtered_user_group async for filtered_user_group in filtered_user_groups.iterate()
51+
]
52+
53+
assert len(user_groups) == 1
54+
55+
56+
def test_create_user_group(created_user_group):
57+
new_user_group = created_user_group
58+
assert new_user_group is not None
59+
60+
61+
async def test_delete_user_group(async_mpt_ops, created_user_group):
62+
await async_mpt_ops.accounts.user_groups.delete(created_user_group.id)
63+
64+
65+
async def test_delete_user_group_not_found(async_mpt_ops, invalid_user_group_id):
66+
with pytest.raises(MPTAPIError, match=r"404 Not Found"):
67+
await async_mpt_ops.accounts.user_groups.delete(invalid_user_group_id)
68+
69+
70+
async def test_update_user_group(async_mpt_ops, user_group, created_user_group):
71+
updated_user_group_data = user_group(name="E2E Updated User Group")
72+
73+
updated_user_group = await async_mpt_ops.accounts.user_groups.update(
74+
created_user_group.id, updated_user_group_data
75+
)
76+
77+
assert updated_user_group is not None
78+
79+
80+
async def test_update_user_group_not_found(async_mpt_ops, user_group, invalid_user_group_id):
81+
updated_user_group_data = user_group(name="Nonexistent User Group")
82+
83+
with pytest.raises(MPTAPIError, match=r"404 Not Found"):
84+
await async_mpt_ops.accounts.user_groups.update(
85+
invalid_user_group_id, updated_user_group_data
86+
)
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import pytest
2+
3+
from mpt_api_client.exceptions import MPTAPIError
4+
from mpt_api_client.rql.query_builder import RQLQuery
5+
6+
pytestmark = [pytest.mark.flaky]
7+
8+
9+
@pytest.fixture
10+
def created_user_group(mpt_ops, user_group):
11+
new_user_group_request_data = user_group()
12+
created_user_group = mpt_ops.accounts.user_groups.create(new_user_group_request_data)
13+
14+
yield created_user_group
15+
16+
try:
17+
mpt_ops.accounts.user_groups.delete(created_user_group.id)
18+
except MPTAPIError as error:
19+
print(f"TEARDOWN - Unable to delete user group: {error.title}") # noqa: WPS421
20+
21+
22+
def test_get_user_group_by_id(mpt_ops, user_group_id):
23+
user_group = mpt_ops.accounts.user_groups.get(user_group_id)
24+
assert user_group is not None
25+
26+
27+
def test_list_user_groups(mpt_ops):
28+
limit = 10
29+
user_groups = mpt_ops.accounts.user_groups.fetch_page(limit=limit)
30+
assert len(user_groups) > 0
31+
32+
33+
def test_get_user_group_by_id_not_found(mpt_ops, invalid_user_group_id):
34+
with pytest.raises(MPTAPIError, match=r"404 Not Found"):
35+
mpt_ops.accounts.user_groups.get(invalid_user_group_id)
36+
37+
38+
def test_filter_user_groups(mpt_ops, user_group_id):
39+
select_fields = ["-name"]
40+
41+
filtered_user_groups = (
42+
mpt_ops.accounts.user_groups.filter(RQLQuery(id=user_group_id))
43+
.filter(RQLQuery(name="E2E Seeded User Group"))
44+
.select(*select_fields)
45+
)
46+
47+
user_groups = list(filtered_user_groups.iterate())
48+
49+
assert len(user_groups) == 1
50+
51+
52+
def test_create_user_group(created_user_group):
53+
new_user_group = created_user_group
54+
assert new_user_group is not None
55+
56+
57+
def test_delete_user_group(mpt_ops, created_user_group):
58+
mpt_ops.accounts.user_groups.delete(created_user_group.id)
59+
60+
61+
def test_delete_user_group_not_found(mpt_ops, invalid_user_group_id):
62+
with pytest.raises(MPTAPIError, match=r"404 Not Found"):
63+
mpt_ops.accounts.user_groups.delete(invalid_user_group_id)
64+
65+
66+
def test_update_user_group(mpt_ops, user_group, created_user_group):
67+
updated_user_group_data = user_group(name="E2E Updated User Group")
68+
69+
updated_user_group = mpt_ops.accounts.user_groups.update(
70+
created_user_group.id, updated_user_group_data
71+
)
72+
73+
assert updated_user_group is not None
74+
75+
76+
def test_update_user_group_not_found(mpt_ops, user_group, invalid_user_group_id):
77+
updated_user_group_data = user_group(name="Nonexistent User Group")
78+
79+
with pytest.raises(MPTAPIError, match=r"404 Not Found"):
80+
mpt_ops.accounts.user_groups.update(invalid_user_group_id, updated_user_group_data)

tests/e2e/conftest.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,13 @@ def buyer_id(e2e_config):
113113
@pytest.fixture
114114
def buyer_account_id(e2e_config):
115115
return e2e_config["accounts.buyer.account.id"]
116+
117+
118+
@pytest.fixture
119+
def user_group_id(e2e_config):
120+
return e2e_config["accounts.user_group.id"]
121+
122+
123+
@pytest.fixture
124+
def invalid_user_group_id():
125+
return "UGR-0000-0000"

0 commit comments

Comments
 (0)