feat(canvas): distinguish new user from cleared canvas; stop demo on backend error
Cleared canvas re-showed the demo, and backend errors silently fell back to demo — hiding real outages and forcing users to wipe demo nodes before bulk edits. Now: - backend load reports `initialized` (CanvasState row exists = ever saved) - decideCanvasLoad() picks real | empty | demo; empty is kept empty - backend down/error shows an error banner + toast, never the demo - data-new-user flag reserved as the Getting Started walkthrough hook ha-relevant: yes
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import { describe, it, expect } from 'vitest'
|
||||
import { decideCanvasLoad, isNewUserCanvas } from '../canvasLoadDecision'
|
||||
|
||||
describe('decideCanvasLoad', () => {
|
||||
it('renders real nodes when the canvas has any', () => {
|
||||
expect(decideCanvasLoad(true, true)).toBe('real')
|
||||
// hasNodes wins even if the initialized flag is somehow false
|
||||
expect(decideCanvasLoad(true, false)).toBe('real')
|
||||
})
|
||||
|
||||
it('keeps an initialized-but-empty canvas empty (user cleared it)', () => {
|
||||
expect(decideCanvasLoad(false, true)).toBe('empty')
|
||||
})
|
||||
|
||||
it('shows the demo only for a brand-new, uninitialized canvas', () => {
|
||||
expect(decideCanvasLoad(false, false)).toBe('demo')
|
||||
})
|
||||
})
|
||||
|
||||
describe('isNewUserCanvas', () => {
|
||||
it('is true only for the demo mode', () => {
|
||||
expect(isNewUserCanvas('demo')).toBe(true)
|
||||
expect(isNewUserCanvas('empty')).toBe(false)
|
||||
expect(isNewUserCanvas('real')).toBe(false)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user