-
Notifications
You must be signed in to change notification settings - Fork 0
[MPT-14904] Created e2e tests for commerce agreements #141
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,51 @@ | ||||||||||||||||||
| import pytest | ||||||||||||||||||
| from freezegun import freeze_time | ||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
| @pytest.fixture | ||||||||||||||||||
| def invalid_agreement_id(): | ||||||||||||||||||
| return "AGR-0000-0000" | ||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
| @pytest.fixture | ||||||||||||||||||
| def agreement_factory( # noqa: WPS211 | ||||||||||||||||||
| account_id, | ||||||||||||||||||
| seller_id, | ||||||||||||||||||
| buyer_id, | ||||||||||||||||||
| licensee_id, | ||||||||||||||||||
| commerce_product_id, | ||||||||||||||||||
| authorization_id, | ||||||||||||||||||
| ): | ||||||||||||||||||
| @freeze_time("2025-11-14T09:00:00.000Z") | ||||||||||||||||||
| def factory( | ||||||||||||||||||
| name: str = "E2E Created Agreement", | ||||||||||||||||||
| client_external_id: str = "test-client-external-id", | ||||||||||||||||||
| vendor_external_id: str = "test-vendor-external-id", | ||||||||||||||||||
|
Comment on lines
+20
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion | 🟠 Major Remove type annotations from test code. Per past review comments, this repository doesn't use type annotations in test files. Remove the type hints from the factory function parameters. Apply this diff: - def factory(
- name: str = "E2E Created Agreement",
- client_external_id: str = "test-client-external-id",
- vendor_external_id: str = "test-vendor-external-id",
- ):
+ def factory(
+ name="E2E Created Agreement",
+ client_external_id="test-client-external-id",
+ vendor_external_id="test-vendor-external-id",
+ ):Based on learnings, past review comments indicated that type annotations should not be used in test files in this repository. 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||
| ): | ||||||||||||||||||
| return { | ||||||||||||||||||
| "name": name, | ||||||||||||||||||
| "status": "Active", | ||||||||||||||||||
| "vendor": {"id": account_id}, | ||||||||||||||||||
| "authorization": {"id": authorization_id}, | ||||||||||||||||||
| "seller": {"id": seller_id}, | ||||||||||||||||||
| "buyer": {"id": buyer_id}, | ||||||||||||||||||
| "licensee": {"id": licensee_id}, | ||||||||||||||||||
| "product": {"id": commerce_product_id}, | ||||||||||||||||||
| "value": { | ||||||||||||||||||
| "PPxY": 150, | ||||||||||||||||||
| "PPxM": 12.5, | ||||||||||||||||||
| "SPxY": 165, | ||||||||||||||||||
| "SPxM": 13.75, | ||||||||||||||||||
| "markup": 0.1, | ||||||||||||||||||
| "margin": 0.11, | ||||||||||||||||||
| "currency": "USD", | ||||||||||||||||||
| }, | ||||||||||||||||||
| "startDate": "2025-11-14T09:00:00.000Z", | ||||||||||||||||||
| "endDate": "2026-11-13T09:00:00.000Z", | ||||||||||||||||||
| "externalIds": { | ||||||||||||||||||
| "client": client_external_id, | ||||||||||||||||||
| "vendor": vendor_external_id, | ||||||||||||||||||
| }, | ||||||||||||||||||
| } | ||||||||||||||||||
|
|
||||||||||||||||||
| return factory | ||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,76 @@ | ||
| import pytest | ||
|
|
||
| from mpt_api_client.exceptions import MPTAPIError | ||
| from mpt_api_client.rql.query_builder import RQLQuery | ||
|
|
||
| pytestmark = [pytest.mark.flaky] | ||
|
|
||
|
|
||
| @pytest.fixture | ||
| async def created_agreement(async_mpt_ops, agreement_factory): | ||
| new_agreement_request_data = agreement_factory( | ||
| name="E2E Created Agreement", | ||
| ) | ||
|
|
||
| return await async_mpt_ops.commerce.agreements.create(new_agreement_request_data) | ||
|
|
||
|
|
||
| async def test_get_agreement_by_id(async_mpt_ops, agreement_id): | ||
| result = await async_mpt_ops.commerce.agreements.get(agreement_id) | ||
|
|
||
| assert result is not None | ||
|
|
||
|
|
||
| async def test_list_agreements(async_mpt_ops): | ||
| limit = 10 | ||
|
|
||
| result = await async_mpt_ops.commerce.agreements.fetch_page(limit=limit) | ||
|
|
||
| assert len(result) > 0 | ||
|
|
||
|
|
||
| async def test_get_agreement_by_id_not_found(async_mpt_ops, invalid_agreement_id): | ||
| with pytest.raises(MPTAPIError, match=r"404 Not Found"): | ||
| await async_mpt_ops.commerce.agreements.get(invalid_agreement_id) | ||
|
|
||
|
|
||
| async def test_filter_agreements(async_mpt_ops, agreement_id): | ||
| select_fields = ["-value"] | ||
| filtered_agreements = ( | ||
| async_mpt_ops.commerce.agreements.filter(RQLQuery(id=agreement_id)) | ||
| .filter(RQLQuery(name="E2E Seeded For Commerce for Test Api Client Client")) | ||
| .select(*select_fields) | ||
| ) | ||
|
|
||
| result = [filtered_agreement async for filtered_agreement in filtered_agreements.iterate()] | ||
|
|
||
| assert len(result) == 1 | ||
|
|
||
|
|
||
| def test_create_agreement(created_agreement): | ||
| result = created_agreement | ||
|
|
||
| assert result is not None | ||
|
|
||
|
|
||
| async def test_update_agreement(async_mpt_ops, created_agreement, agreement_factory): | ||
| updated_name = "E2E Updated Agreement Name" | ||
| updated_agreement_data = agreement_factory(name=updated_name) | ||
|
|
||
| result = await async_mpt_ops.commerce.agreements.update( | ||
| created_agreement.id, updated_agreement_data | ||
| ) | ||
|
|
||
| assert result is not None | ||
|
|
||
|
|
||
| async def test_get_agreement_render(async_mpt_ops, agreement_id): | ||
| result = await async_mpt_ops.commerce.agreements.render(agreement_id) | ||
|
|
||
| assert result is not None | ||
|
|
||
|
|
||
| async def test_get_agreement_template(async_mpt_ops, agreement_id): | ||
| result = await async_mpt_ops.commerce.agreements.template(agreement_id) | ||
|
|
||
| assert result is not None |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,74 @@ | ||
| import pytest | ||
|
|
||
| from mpt_api_client.exceptions import MPTAPIError | ||
| from mpt_api_client.rql.query_builder import RQLQuery | ||
|
|
||
| pytestmark = [pytest.mark.flaky] | ||
|
|
||
|
|
||
| @pytest.fixture | ||
| def created_agreement(mpt_ops, agreement_factory): | ||
| new_agreement_request_data = agreement_factory( | ||
| name="E2E Created Agreement", | ||
| ) | ||
|
|
||
| return mpt_ops.commerce.agreements.create(new_agreement_request_data) | ||
|
|
||
|
|
||
| def test_get_agreement_by_id(mpt_ops, agreement_id): | ||
| result = mpt_ops.commerce.agreements.get(agreement_id) | ||
|
|
||
| assert result is not None | ||
|
|
||
|
|
||
| def test_list_agreements(mpt_ops): | ||
| limit = 10 | ||
|
|
||
| result = mpt_ops.commerce.agreements.fetch_page(limit=limit) | ||
|
|
||
| assert len(result) > 0 | ||
|
|
||
|
|
||
| def test_get_agreement_by_id_not_found(mpt_ops, invalid_agreement_id): | ||
| with pytest.raises(MPTAPIError, match=r"404 Not Found"): | ||
| mpt_ops.commerce.agreements.get(invalid_agreement_id) | ||
|
|
||
|
|
||
| def test_filter_agreements(mpt_ops, agreement_id): | ||
| select_fields = ["-value"] | ||
| filtered_agreements = ( | ||
| mpt_ops.commerce.agreements.filter(RQLQuery(id=agreement_id)) | ||
| .filter(RQLQuery(name="E2E Seeded For Commerce for Test Api Client Client")) | ||
| .select(*select_fields) | ||
| ) | ||
|
|
||
| result = list(filtered_agreements.iterate()) | ||
|
|
||
| assert len(result) == 1 | ||
|
|
||
|
|
||
| def test_create_agreement(created_agreement): | ||
| result = created_agreement | ||
|
|
||
| assert result is not None | ||
|
|
||
|
|
||
| def test_update_agreement(mpt_ops, created_agreement, agreement_factory): | ||
| updated_name = "E2E Updated Agreement Name" | ||
| updated_agreement_data = agreement_factory(name=updated_name) | ||
|
|
||
| result = mpt_ops.commerce.agreements.update(created_agreement.id, updated_agreement_data) | ||
|
|
||
| assert result is not None | ||
|
|
||
|
|
||
| def test_get_agreement_render(mpt_ops, agreement_id): | ||
| result = mpt_ops.commerce.agreements.render(agreement_id) | ||
|
|
||
| assert result is not None | ||
|
|
||
|
|
||
| def test_get_agreement_template(mpt_ops, agreement_id): | ||
| result = mpt_ops.commerce.agreements.template(agreement_id) | ||
|
|
||
| assert result is not None |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| import pytest | ||
|
|
||
|
|
||
| @pytest.fixture | ||
| def agreement_id(e2e_config): | ||
| return e2e_config["commerce.agreement.id"] | ||
|
|
||
|
|
||
| @pytest.fixture | ||
| def commerce_product_id(e2e_config): | ||
| return e2e_config["commerce.product.id"] |
Uh oh!
There was an error while loading. Please reload this page.