Analyse: Freischalten selbstheilend, Sperre, Retention-Abschaltung

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-01 10:13:28 +00:00
1 parent f0eee196ed
commit 37203f00c4
6 files changed
+149 -33

No files matched your search

+21
View File
@@ -306,3 +306,24 @@ test('retention_loescht_news: Beiträge, Fotos und Funktionen fälliger Kunden',
assert.equal(feat.enabled, false)
assert.equal([...aw.docs('portalFeatures').values()].find((d) => d.$id === 'rn2_feat').state, 'active')
})
test('retention: Analyse-Dokument schaltet auch den Sammeldienst ab', async () => {
const { analyseDeps } = await import('../server/services/analyse.js')
sub('ra_sub', 'ra', { status: 'canceled', endedAt: '2022-03-15T10:00:00.000Z' })
stripeSub('ra_sub', 'ra')
aw.seed('websiteProjects', { $id: 'rap', customerId: 'ra', projectName: 'Alt', subdomain: 'altprojekt', isPublic: true })
aw.seed('portalFeatures', { $id: 'ra_feat', customerId: 'ra', projectId: 'rap', featureKey: 'analyse', state: 'active', enabled: true, siteKey: 'abcdefghij234567' })
const puts = []
const ok = analyseDeps.client
analyseDeps.client = { putSite: async (k, b) => { puts.push([k, b]) } }
try {
const plan = await findDueDeletions(JAN_2026)
assert.ok(plan.news.find((n) => n.customerId === 'ra').featureIds.includes('ra_feat'))
const result = await applyDeletions(plan)
assert.deepEqual(result.failed, [])
assert.deepEqual(puts, [['abcdefghij234567', { projectId: 'rap', domains: ['altprojekt.project.webklar.com'], active: false }]])
assert.equal([...aw.docs('portalFeatures').values()].find((d) => d.$id === 'ra_feat').state, 'disabled')
} finally {
analyseDeps.client = ok
}
})