Skip to content

test: stop stubbing discovery_inquiry_flow, restore real coverage - #63

Open
garvitkaushik-123 wants to merge 1 commit into
IABTechLab:mainfrom
garvitkaushik-123:flows/unstub-discovery-inquiry
Open

test: stop stubbing discovery_inquiry_flow, restore real coverage#63
garvitkaushik-123 wants to merge 1 commit into
IABTechLab:mainfrom
garvitkaushik-123:flows/unstub-discovery-inquiry

Conversation

@garvitkaushik-123

Copy link
Copy Markdown
Contributor

Summary

Part 1 of #60 (green-lit by @atc964 on the issue).

The "pre-existing @listen() bugs with CrewAI version mismatch" stub that every ad_seller.flows-touching test file carried for discovery_inquiry_flow dates to when crewai was pinned at >=0.86.0 (commit 530df34, March 2026). It's >=1.14.4 now (resolves to 1.15.2) — a major version bump. Verified on the issue that the flow runs cleanly end-to-end on the current version, including the exact production call path (flow.query()'s sync self.kickoff() invoked from inside an async FastAPI handler).

This wasn't just stale test hygiene — DiscoveryInquiryFlow backs a live endpoint (POST /discovery, products.py:201), so the blanket stub meant that endpoint had zero real test coverage for as long as the stub existed (grep -rl "DiscoveryInquiryFlow" tests/ returned nothing before this PR).

execution_activation_flow stays stubbed — it has a separate, real bug (a cancel-scope leak in an MCP client cleanup path, not the @listen() issue the old comment claimed) that's tracked as #60 part 2 and will be fixed independently.

Changes

  • Removed the discovery_inquiry_flow entry from the _broken_flows stub list in all 33 test files that had it. execution_activation_flow entries are untouched.
  • Simplified test_deal_flow_e2e.py: its _get_deal_request_flow_class() helper existed solely to bypass flows/__init__.py via manual sys.modules surgery so importing DealRequestFlow wouldn't also trigger discovery_inquiry_flow. With the stub gone that's unnecessary — replaced with a plain module import (net -41 lines in that file alone).
  • Fixed the stale docstring in test_linear_tv.py making the same claim.
  • Added tests/unit/test_discovery_inquiry_flow.py: the flow's own routing logic across all four response types (catalog/pricing/availability/targeting) run for real, plus POST /discovery exercised through the actual FastAPI app with the real flow — not mocked — closing the exact coverage gap the issue found.

Test plan

Full suite: 1491 passed, 28 skipped (pre-existing, unrelated to this change), no regressions. ruff check / format --check clean.

Part of #60.

…sue IABTechLab#60 part 1)

The "pre-existing @listen() bugs with CrewAI version mismatch" stub
that every ad_seller.flows-touching test file carried for
discovery_inquiry_flow dates to when crewai was pinned at >=0.86.0
(commit 530df34, March 2026). crewai is >=1.14.4 now (resolves to
1.15.2) -- a major version bump, and the flow runs cleanly end to end
on it: verified DiscoveryInquiryFlow.kickoff_async() across all four
routing branches, both standalone and under pytest, and confirmed the
production call path (the sync flow.query() wrapper -- which calls
self.kickoff(), not kickoff_async() -- invoked from inside an async
FastAPI handler) also works correctly. atc964 confirmed on the issue
that the rationale was real at the time and just never got revisited
as crewai moved forward.

This wasn't just stale test hygiene: DiscoveryInquiryFlow backs a live
endpoint (POST /discovery, products.py:201), so the blanket stub meant
that endpoint had been running in production with zero real test
coverage for as long as the stub existed. jaanijuk caught that on the
issue -- grep for "DiscoveryInquiryFlow" in tests/ before this change
returns nothing.

execution_activation_flow stays stubbed. It has a separate, real bug
(a cancel-scope leak in an MCP client cleanup path on ad-server
connection failure, landing outside the code's own try/except) that's
being tracked and fixed independently as issue IABTechLab#60 part 2 -- it just
isn't the @listen() bug the old comment claimed either.

Changes:
- Removed the discovery_inquiry_flow entry from the _broken_flows stub
  list in all 33 test files that had it (execution_activation_flow
  entries are untouched).
- Simplified test_deal_flow_e2e.py: its _get_deal_request_flow_class()
  helper existed solely to bypass flows/__init__.py via manual
  sys.modules surgery so importing DealRequestFlow wouldn't also trigger
  discovery_inquiry_flow. With the stub gone that's unnecessary --
  replaced with a plain module import.
- Fixed the stale docstring in test_linear_tv.py making the same claim.
- Added tests/unit/test_discovery_inquiry_flow.py: the flow's own
  routing logic across all four response types run for real (no stub),
  plus POST /discovery exercised through the actual FastAPI app with
  the real flow (not mocked) -- closing the exact coverage gap this
  issue found.

Full suite: 1491 passed, 28 skipped (pre-existing, unrelated), no
regressions. ruff check / format clean.

Part of IABTechLab#60.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant