4f363fa9e7
- HQ stores: partner column uses companyName/name/phone via partnerOptionLabel - Dev plan: version RELEASED auto-marks tasks RELEASED and tickets PUBLISHED with releasedVersionNo - mini-user/h5-shop/h5-partner v3.4.13 UX fixes (store UI, iOS scan OAuth, partner login guard) - Docs: v3.4.13 dev doc + status audit updates Co-authored-by: Cursor <cursoragent@cursor.com>
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { validateSupportTicketStatusTransition } from './support-ticket';
|
|
|
|
describe('validateSupportTicketStatusTransition', () => {
|
|
it('allows DEVELOPING -> TESTING', () => {
|
|
expect(
|
|
validateSupportTicketStatusTransition('DEVELOPING', 'TESTING', {
|
|
linkedTaskCount: 1,
|
|
isSuperAdmin: true,
|
|
}).ok,
|
|
).toBe(true);
|
|
});
|
|
|
|
it('blocks PENDING_REVIEW -> DEVELOPING without tasks', () => {
|
|
expect(
|
|
validateSupportTicketStatusTransition('PENDING_REVIEW', 'DEVELOPING', {
|
|
linkedTaskCount: 0,
|
|
isSuperAdmin: true,
|
|
}).ok,
|
|
).toBe(false);
|
|
});
|
|
|
|
it('blocks rollback PASSED -> DEVELOPING', () => {
|
|
expect(
|
|
validateSupportTicketStatusTransition('PASSED', 'DEVELOPING', {
|
|
linkedTaskCount: 1,
|
|
isSuperAdmin: true,
|
|
}).ok,
|
|
).toBe(false);
|
|
});
|
|
|
|
it('allows PASSED -> PUBLISHED', () => {
|
|
expect(
|
|
validateSupportTicketStatusTransition('PASSED', 'PUBLISHED', {
|
|
linkedTaskCount: 1,
|
|
isSuperAdmin: true,
|
|
}).ok,
|
|
).toBe(true);
|
|
});
|
|
|
|
it('requires super admin and reason for REJECTED', () => {
|
|
expect(
|
|
validateSupportTicketStatusTransition('DEVELOPING', 'REJECTED', {
|
|
linkedTaskCount: 1,
|
|
isSuperAdmin: false,
|
|
rejectReason: 'x',
|
|
}).ok,
|
|
).toBe(false);
|
|
expect(
|
|
validateSupportTicketStatusTransition('DEVELOPING', 'REJECTED', {
|
|
linkedTaskCount: 1,
|
|
isSuperAdmin: true,
|
|
rejectReason: '',
|
|
}).ok,
|
|
).toBe(false);
|
|
});
|
|
});
|