Skip to content

Commit 435e637

Browse files
committed
MPT-14888 Add E2E tests for catalog items
1 parent 4baedb0 commit 435e637

10 files changed

Lines changed: 160 additions & 0 deletions

File tree

e2e_config.test.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22
"catalog.product.id": "PRD-7255-3950",
33
"accounts.seller.id": "SEL-7310-3075",
44
"catalog.product.parameter_group.id": "PGR-7255-3950-0001",
5+
"catalog.product.item_group.id": "IGR-7255-3950-0001",
6+
"catalog.item.id": "ITM-7255-3950-0001",
7+
"catalog.unit.id": "UNT-1229",
58
"accounts.account.id": "ACC-9042-0088"
69
}

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ per-file-ignores =
4949
tests/unit/resources/accounts/test_users.py: WPS204 WPS202 WPS210
5050
tests/unit/test_mpt_client.py: WPS235
5151
tests/e2e/accounts/*.py: WPS430 WPS202
52+
tests/e2e/catalog/items/*.py: WPS110
5253

5354
tests/*:
5455
# Allow magic strings.

tests/e2e/__init__.py

Whitespace-only changes.

tests/e2e/catalog/__init__.py

Whitespace-only changes.

tests/e2e/catalog/conftest.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import pytest
2+
3+
4+
@pytest.fixture
5+
def item_id(e2e_config):
6+
return e2e_config.get("catalog.item.id")
7+
8+
9+
@pytest.fixture
10+
def item_group_id(e2e_config):
11+
return e2e_config.get("catalog.product.item_group.id")
12+
13+
14+
@pytest.fixture
15+
def unit_id(e2e_config):
16+
return e2e_config.get("catalog.unit.id")

tests/e2e/catalog/items/__init__.py

Whitespace-only changes.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import pytest
2+
3+
4+
@pytest.fixture
5+
def item_data(short_uuid, product_id, item_group_id, unit_id):
6+
return {
7+
"name": "e2e - please delete",
8+
"description": "e2e - please delete",
9+
"unit": {
10+
"id": unit_id,
11+
},
12+
"group": {
13+
"id": item_group_id,
14+
},
15+
"product": {
16+
"id": product_id,
17+
},
18+
"terms": {"model": "quantity", "period": "1m", "commitment": "1m"},
19+
"externalIds": {"vendor": f"e2e-delete-{short_uuid}"},
20+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import pytest
2+
3+
from mpt_api_client.exceptions import MPTAPIError
4+
5+
pytestmark = [pytest.mark.flaky]
6+
7+
8+
@pytest.fixture
9+
async def async_created_item(logger, async_mpt_vendor, item_data):
10+
service = async_mpt_vendor.catalog.items
11+
item = await service.create(item_data)
12+
yield item
13+
try:
14+
await service.delete(item.id)
15+
except MPTAPIError as error:
16+
print(f"TEARDOWN - Unable to delete item {item.id}: {error.title}") # noqa: WPS421
17+
18+
19+
def test_create_item(async_created_item):
20+
assert async_created_item.name == "e2e - please delete"
21+
22+
23+
async def test_update_item(async_mpt_vendor, async_created_item):
24+
service = async_mpt_vendor.catalog.items
25+
update_data = {"name": "e2e - delete me (updated)"}
26+
item = await service.update(async_created_item.id, update_data)
27+
assert item.name == "e2e - delete me (updated)"
28+
29+
30+
@pytest.mark.skip(reason="Leaves test items in the catalog")
31+
async def test_review_and_publish_item(async_mpt_vendor, async_mpt_ops, async_created_item):
32+
item = await async_mpt_vendor.catalog.items.review(async_created_item.id)
33+
assert item.status == "Pending"
34+
35+
item = await async_mpt_ops.catalog.items.publish(async_created_item.id)
36+
assert item.status == "Published"
37+
38+
39+
async def test_get_item(async_mpt_vendor, item_id):
40+
if item_id is None:
41+
pytest.skip("No item ID configured for testing")
42+
service = async_mpt_vendor.catalog.items
43+
item = await service.get(item_id)
44+
assert item.id == item_id
45+
46+
47+
async def test_iterate_items(async_mpt_vendor, async_created_item):
48+
service = async_mpt_vendor.catalog.items
49+
items = [item async for item in service.iterate()]
50+
assert any(item.id == async_created_item.id for item in items)
51+
52+
53+
async def test_delete_item(async_mpt_vendor, async_created_item):
54+
service = async_mpt_vendor.catalog.items
55+
await service.delete(async_created_item.id)
56+
with pytest.raises(MPTAPIError):
57+
await service.get(async_created_item.id)
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import pytest
2+
3+
from mpt_api_client.exceptions import MPTAPIError
4+
5+
pytestmark = [pytest.mark.flaky]
6+
7+
8+
@pytest.fixture
9+
def created_item(logger, mpt_vendor, item_data):
10+
service = mpt_vendor.catalog.items
11+
item = service.create(item_data)
12+
yield item
13+
try:
14+
service.delete(item.id)
15+
except MPTAPIError as error:
16+
print(f"TEARDOWN - Unable to delete item {item.id}: {error.title}") # noqa: WPS421
17+
18+
19+
def test_create_item(created_item):
20+
assert created_item.name == "e2e - please delete"
21+
22+
23+
def test_update_item(mpt_vendor, created_item):
24+
service = mpt_vendor.catalog.items
25+
update_data = {"name": "please delete me"}
26+
item = service.update(created_item.id, update_data)
27+
assert item.name == "please delete me"
28+
29+
30+
@pytest.mark.skip(reason="Leaves test items in the catalog")
31+
def test_review_and_publish_item(mpt_vendor, mpt_ops, created_item):
32+
item = mpt_vendor.catalog.items.review(created_item.id)
33+
assert item.status == "Pending"
34+
35+
item = mpt_ops.catalog.items.publish(created_item.id)
36+
assert item.status == "Published"
37+
38+
39+
def test_get_item(mpt_vendor, item_id):
40+
if item_id is None:
41+
pytest.skip("No item ID configured for testing")
42+
service = mpt_vendor.catalog.items
43+
item = service.get(item_id)
44+
assert item.id == item_id
45+
46+
47+
def test_iterate_items(mpt_vendor, created_item):
48+
service = mpt_vendor.catalog.items
49+
items = list(service.iterate())
50+
assert any(item.id == created_item.id for item in items)
51+
52+
53+
def test_delete_item(mpt_vendor, created_item):
54+
service = mpt_vendor.catalog.items
55+
service.delete(created_item.id)
56+
with pytest.raises(MPTAPIError):
57+
service.get(created_item.id)

tests/e2e/conftest.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import logging
33
import os
44
import pathlib
5+
import uuid
56

67
import pytest
78
from reportportal_client import RPLogger
@@ -98,3 +99,8 @@ def account_id(e2e_config):
9899
@pytest.fixture
99100
def invalid_account_id():
100101
return "ACC-0000-0000"
102+
103+
104+
@pytest.fixture
105+
def short_uuid():
106+
return uuid.uuid4().hex[:8]

0 commit comments

Comments
 (0)