import { describe, expect, it } from 'vitest'; import { isLandlinePhone, isMobilePhone, isStoreContactPhone, normalizeContactPhone, toDialablePhone, } from './phone'; describe('store contact phone', () => { it('accepts mainland mobile numbers', () => { expect(isMobilePhone('13800138000')).toBe(true); expect(isStoreContactPhone('13800138000')).toBe(true); expect(isStoreContactPhone(' 13800138000 ')).toBe(true); }); it('accepts landlines with or without hyphens and optional extension', () => { expect(isLandlinePhone('0379-8888888')).toBe(true); expect(isLandlinePhone('010-12345678')).toBe(true); expect(isLandlinePhone('03798888888')).toBe(true); expect(isLandlinePhone('01012345678')).toBe(true); expect(isLandlinePhone('0379-8888888-12')).toBe(true); expect(isStoreContactPhone('0379-8888 888')).toBe(true); }); it('rejects login-style invalid and incomplete numbers', () => { expect(isStoreContactPhone('')).toBe(false); expect(isStoreContactPhone('12345678')).toBe(false); expect(isStoreContactPhone('12345678901')).toBe(false); expect(isStoreContactPhone('400-123-4567')).toBe(false); expect(isMobilePhone('0379-8888888')).toBe(false); }); it('normalizes spaces and strips dial punctuation', () => { expect(normalizeContactPhone(' 0379-8888 888 ')).toBe('0379-8888888'); expect(toDialablePhone('0379-8888888')).toBe('03798888888'); expect(toDialablePhone('010 1234 5678')).toBe('01012345678'); }); });