Coverage report:
100%
hide covered
Files
Functions
Classes
coverage.py v7.16.2
, created at 2026-10-12 18:59 +0000
Statements
Branches
Total
File
function
coverage
statements
missing
excluded
coverage
branches
partial
coverage
src
/
case_router
/
__init__.py
(no function)
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
__main__.py
main
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
__main__.py
(no function)
100%
5
0
2
100%
0
0
100%
src
/
case_router
/
api.py
Settings.from_env
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
CaseIn.to_draft
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
CaseOut.of
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
QueueHealthOut.of
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
app_state
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
current_tenant
100%
6
0
0
100%
2
0
100%
src
/
case_router
/
api.py
health
100%
3
0
0
100%
0
0
100%
src
/
case_router
/
api.py
prometheus_metrics
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
submit_case
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
list_cases
100%
2
0
0
100%
0
0
100%
src
/
case_router
/
api.py
get_case
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
close_case
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
queue_health
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
_rules_out
100%
2
0
0
100%
0
0
100%
src
/
case_router
/
api.py
get_rules
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
replace_rules
100%
5
0
0
100%
0
0
100%
src
/
case_router
/
api.py
_unknown_tenant
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
_case_not_found
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
_already_closed
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
api.py
create_app
100%
16
0
0
100%
2
0
100%
src
/
case_router
/
api.py
create_app.record_latency
100%
5
0
0
100%
0
0
100%
src
/
case_router
/
api.py
(no function)
100%
102
0
0
100%
0
0
100%
src
/
case_router
/
db.py
to_db_time
100%
3
0
0
100%
2
0
100%
src
/
case_router
/
db.py
from_db_time
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
db.py
Database.__init__
100%
6
0
0
100%
2
0
100%
src
/
case_router
/
db.py
Database.connect
100%
7
0
0
100%
0
0
100%
src
/
case_router
/
db.py
TenantRepository.__init__
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
db.py
TenantRepository.get
100%
3
0
0
100%
0
0
100%
src
/
case_router
/
db.py
TenantRepository.save
100%
2
0
0
100%
0
0
100%
src
/
case_router
/
db.py
RuleRepository.__init__
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
db.py
RuleRepository.for_tenant
100%
3
0
0
100%
0
0
100%
src
/
case_router
/
db.py
RuleRepository.replace
100%
5
0
0
100%
2
0
100%
src
/
case_router
/
db.py
_case_from_row
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
db.py
CaseRepository.__init__
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
db.py
CaseRepository.insert
100%
5
0
0
100%
0
0
100%
src
/
case_router
/
db.py
CaseRepository.get
100%
2
0
0
100%
0
0
100%
src
/
case_router
/
db.py
CaseRepository.find
100%
12
0
0
100%
4
0
100%
src
/
case_router
/
db.py
CaseRepository.close
100%
6
0
0
100%
2
0
100%
src
/
case_router
/
db.py
CaseRepository.queue_health
100%
3
0
0
100%
0
0
100%
src
/
case_router
/
db.py
CaseRepository._fetch
100%
4
0
0
100%
2
0
100%
src
/
case_router
/
db.py
(no function)
100%
43
0
0
100%
0
0
100%
src
/
case_router
/
deadlines.py
ResponsePolicy.__post_init__
100%
10
0
0
100%
8
0
100%
src
/
case_router
/
deadlines.py
ResponsePolicy.window
100%
4
0
0
100%
2
0
100%
src
/
case_router
/
deadlines.py
ResponsePolicy.respond_by
100%
3
0
0
100%
2
0
100%
src
/
case_router
/
deadlines.py
(no function)
100%
14
0
0
100%
0
0
100%
src
/
case_router
/
errors.py
(no function)
100%
3
0
0
100%
0
0
100%
src
/
case_router
/
limits.py
TokenBucket.__init__
100%
10
0
0
100%
4
0
100%
src
/
case_router
/
limits.py
TokenBucket._refill
100%
6
0
0
100%
2
0
100%
src
/
case_router
/
limits.py
TokenBucket.try_acquire
100%
6
0
0
100%
2
0
100%
src
/
case_router
/
limits.py
TokenBucket.available
100%
3
0
0
100%
0
0
100%
src
/
case_router
/
limits.py
TenantLimiter.__init__
100%
3
0
0
100%
0
0
100%
src
/
case_router
/
limits.py
TenantLimiter.bucket_for
100%
6
0
0
100%
2
0
100%
src
/
case_router
/
limits.py
TenantLimiter.acquire
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
limits.py
(no function)
100%
21
0
0
100%
0
0
100%
src
/
case_router
/
metrics.py
Metrics.__init__
100%
6
0
0
100%
0
0
100%
src
/
case_router
/
metrics.py
(no function)
100%
4
0
0
100%
0
0
100%
src
/
case_router
/
models.py
Priority.rank
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
models.py
(no function)
100%
60
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
RoutingRule.__init__
100%
3
0
0
100%
2
0
100%
src
/
case_router
/
rules.py
RoutingRule.name
100%
0
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
RoutingRule.matches
100%
0
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
RoutingRule.__repr__
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
MinimumPriorityRule.__init__
100%
2
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
MinimumPriorityRule.name
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
MinimumPriorityRule.matches
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
TierRule.__init__
100%
2
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
TierRule.name
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
TierRule.matches
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
ChannelRule.__init__
100%
2
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
ChannelRule.name
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
ChannelRule.matches
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
KeywordRule.__init__
100%
7
0
0
100%
2
0
100%
src
/
case_router
/
rules.py
KeywordRule.name
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
KeywordRule.matches
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
AnyRule.name
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
AnyRule.matches
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
RuleSet.__init__
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
RuleSet.route
100%
4
0
0
100%
4
0
100%
src
/
case_router
/
rules.py
RuleSet.__iter__
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
RuleSet.__len__
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
rules.py
build_rule
100%
4
0
0
100%
2
0
100%
src
/
case_router
/
rules.py
(no function)
100%
46
0
0
100%
0
0
100%
src
/
case_router
/
seed.py
seed_demo_data
100%
6
0
0
100%
4
0
100%
src
/
case_router
/
seed.py
(no function)
100%
5
0
0
100%
0
0
100%
src
/
case_router
/
service.py
utc_now
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
service.py
CaseService.__init__
100%
6
0
0
100%
0
0
100%
src
/
case_router
/
service.py
CaseService.tenant
100%
4
0
0
100%
2
0
100%
src
/
case_router
/
service.py
CaseService.rule_set
100%
2
0
0
100%
0
0
100%
src
/
case_router
/
service.py
CaseService.submit
100%
7
0
0
100%
0
0
100%
src
/
case_router
/
service.py
CaseService.get
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
service.py
CaseService.find
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
service.py
CaseService.close
100%
5
0
0
100%
0
0
100%
src
/
case_router
/
service.py
CaseService.queue_health
100%
1
0
0
100%
0
0
100%
src
/
case_router
/
service.py
(no function)
100%
20
0
0
100%
0
0
100%
Total
100%
575
0
2
100%
56
0
100%
No items found using the specified filter.