What you pay for, what Discord drops, and pixiv switched off #251
@@ -27,7 +27,10 @@ import { computed } from 'vue'
|
||||
import { formatRelative } from '../../utils/date.js'
|
||||
|
||||
const props = defineProps({
|
||||
// { last_tick_at, next_due_at, due_now, auto_sources } | null
|
||||
// { last_tick_at, next_due_at, due_now, auto_sources,
|
||||
// failing_sources, no_access_sources, platform_cooldowns } | null
|
||||
// This bar renders the scheduling half; the ingestion counts are read by the
|
||||
// front door's FeedStatusRibbon (#387 B3) off the same payload.
|
||||
status: { type: Object, default: null },
|
||||
})
|
||||
|
||||
|
||||
@@ -55,10 +55,16 @@ async def test_schedule_status_shape(client):
|
||||
body = await resp.get_json()
|
||||
assert set(body) == {
|
||||
"last_tick_at", "next_due_at", "due_now", "auto_sources",
|
||||
"failing_sources", "no_access_sources",
|
||||
"platform_cooldowns",
|
||||
}
|
||||
assert isinstance(body["due_now"], int)
|
||||
assert isinstance(body["auto_sources"], int)
|
||||
# #387 B3: the front-door ribbon reads these two. Kept in the exact-set
|
||||
# assertion deliberately — it is what catches a key being renamed out from
|
||||
# under a consumer, which is how this test earned its keep.
|
||||
assert isinstance(body["failing_sources"], int)
|
||||
assert isinstance(body["no_access_sources"], int)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
|
||||
@@ -62,6 +62,7 @@ async def test_summary_returns_rollup_shape(client, monkeypatch):
|
||||
assert isinstance(body["failing"], int)
|
||||
assert set(body["scheduler"]) == {
|
||||
"last_tick_at", "next_due_at", "due_now", "auto_sources",
|
||||
"failing_sources", "no_access_sources",
|
||||
"platform_cooldowns",
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user