test_smoke: billing takes the seat crm no longer holds

The document at the pinned ref names no `crm` tag and serves no /v1/crm,
so `hanzoai.cloud.api.crm_api` is a module the generator had nothing to
write — the import has raised ModuleNotFoundError since the emission that
dropped it.

This is the document's call, not a generation defect. The client emits one
module per tag and its 120 modules are exactly the 120 tags api.hanzo.ai
declares, with no difference in either direction; cli's spec/cloud.json,
projected from this same ref and digest, likewise carries neither the tag
nor the routes. So the expectation moves to the spec rather than the
client moving to the expectation.

Unlike tracker, analytics and chat before it, crm did not fold into
another product: contacts, companies, opportunities and applications have
no successor address anywhere in the document. billing replaces it because
it has been in every emission since the first generated client, which is
the property the test is really asserting — that whole products, not just
the AI routes, reach the SDK.

Co-authored-by: Hanzo Dev <[email protected]>
This commit is contained in:
2026-09-04 00:09:01 -07:00
co-authored by Hanzo Dev
parent e740bb318b
commit eb953b9fd5
+9 -3
View File
@@ -62,14 +62,20 @@ def test_product_apis_present():
Name products the document still tags, read off the client rather than
guessed. Tags move: `tracker`, then `analytics` and `chat`, each stood here
until cloud folded those routes into the product that owns them.
until cloud folded those routes into the product that owns them. `crm` left
differently — cloud withdrew /v1/crm entirely, so contacts, companies,
opportunities and applications have no successor address to follow.
`billing` takes the seat because it has been in every emission since the
first, which is the property this test wants: a product broad enough that
losing it would mean the client stopped projecting whole products.
"""
from hanzoai.cloud.api.billing_api import BillingApi
from hanzoai.cloud.api.commerce_api import CommerceApi
from hanzoai.cloud.api.crm_api import CrmApi
from hanzoai.cloud.api.iam_api import IamApi
client = hanzoai.cloud.ApiClient(hanzoai.cloud.Configuration(host="https://api.hanzo.ai"))
for cls in (CommerceApi, CrmApi, IamApi):
for cls in (BillingApi, CommerceApi, IamApi):
assert cls(client) is not None