Testing status¶
Which parts of pypresscart have been verified against the real Presscart API, and which are implemented from the public docs only.
Important
Every method in the library is implemented. This page is about which ones have been empirically confirmed to work end-to-end against a live Presscart team. A method marked “not yet exercised” is still there — we just haven’t run it against production, either because it has side-effects (creates billing charges, writes non-test data) or because the server blocks it.
Read-only endpoints — fully exercised¶
Every GET below was hit with a full_access token, the response was parsed into its Pydantic model, and the dict-mode round-trip was verified. Unless noted, filter / sort / pagination variants were also tested.
Resource |
Method |
Endpoint |
|---|---|---|
Auth |
|
|
Outlets |
|
|
Outlets |
|
|
Outlets |
|
|
Outlets |
|
|
Outlets |
|
|
Outlets |
|
|
Outlets |
|
|
Outlets |
|
|
Products |
|
|
Products |
|
|
Products |
|
|
Orders |
|
|
Orders |
|
|
Order Items |
|
|
Profiles |
|
|
Profiles |
|
|
Profiles |
|
|
Profiles |
|
|
Campaigns |
|
|
Campaigns |
|
|
Campaigns |
|
|
Campaigns |
|
|
Articles |
|
|
Files + Folders — full write round-trip¶
The Files and Folders resources have been exercised end-to-end including writes — the test creates a folder and a file, moves the file around, renames the folder, and deletes both. It’s self-cleaning, so running it leaves no residue.
Resource |
Method |
Endpoint |
|---|---|---|
Folders |
|
|
Folders |
|
|
Folders |
|
|
Folders |
|
|
Files |
|
|
Files |
|
|
Files |
|
|
Files |
|
|
Files |
|
|
Files |
|
|
Download bytes are verified to match the uploaded file SHA-256 for SHA-256 before delete — so the compression / CDN round-trip is confirmed lossless.
Not yet exercised — write endpoints with real-world side effects¶
These methods are implemented and covered by unit tests against mocked responses, but haven’t been fired against the real Presscart API. Each one either creates billing charges, modifies production data, or depends on an endpoint that’s currently blocked (see above).
Warning
Use in production with appropriate caution. Run a dry-run against a staging team first, or inspect the request payload with requests hooks before sending.
Orders¶
Method |
Endpoint |
Why untested |
|---|---|---|
|
|
Creates a real order and initiates billing. Not something to run as a smoke test. |
Campaigns¶
Method |
Endpoint |
Why untested |
|---|---|---|
|
|
Creates persistent production data on the test team. |
|
|
Modifies existing campaign; side effects on the live dashboard. |
|
|
Mutates campaign ↔ order-item association. |
|
|
Mutates questionnaire state. |
Articles¶
Method |
Endpoint |
Why untested |
|---|---|---|
|
|
Mutates a real article on the target team; not safe as a smoke test. |
|
|
Advances the article through the workflow and may trigger writer/notification side effects. |
|
|
Same. |
Unit-test coverage¶
All 55+ unit tests in the repo’s tests/ directory mock the HTTP layer with responses and assert shape, error mapping, dual-mode behavior, and retry semantics. The untested endpoints above all have at least one happy-path unit test; they’re just not hit against the live server.
How this was tested¶
Each “fully exercised” resource has a matching pytest module under tests/integration/:
Resource |
Module |
|---|---|
Auth |
|
Outlets |
|
Products |
|
Orders + Order Items |
|
Profiles |
|
Campaigns |
|
Articles |
|
Files |
|
Folders |
|
Every module is marked @pytest.mark.integration. Drop a token into tests/integration/.env.local (template: .env.local.example) and run them with:
uv run pytest -m integration -v -s
Integration tests auto-skip if PRESSCART_API_TOKEN is absent, so CI stays green without one.