pottery-diary/__tests__/lib/utils/coneConverter.test.ts

117 lines
3.4 KiB
TypeScript

import {
getConeTemperature,
getConeData,
suggestConeFromTemperature,
isValidCone,
formatCone,
getBisqueCones,
getGlazeFiringCones,
} from '../../../src/lib/utils/coneConverter';
describe('Cone Converter', () => {
describe('getConeTemperature', () => {
it('returns temperature for cone 04 (bisque)', () => {
const temp = getConeTemperature('04');
expect(temp).not.toBeNull();
expect(temp?.value).toBe(1945);
expect(temp?.unit).toBe('F');
});
it('returns temperature for cone 6 (glaze firing)', () => {
const temp = getConeTemperature('6');
expect(temp).not.toBeNull();
expect(temp?.value).toBe(2232);
expect(temp?.unit).toBe('F');
});
it('returns temperature for cone 10', () => {
const temp = getConeTemperature('10');
expect(temp).not.toBeNull();
expect(temp?.value).toBe(2345);
});
it('handles cone 06 correctly', () => {
const temp = getConeTemperature('06');
expect(temp).not.toBeNull();
expect(temp?.value).toBe(1828);
});
it('returns null for invalid cone', () => {
const temp = getConeTemperature('999');
expect(temp).toBeNull();
});
});
describe('getConeData', () => {
it('returns full cone data', () => {
const data = getConeData('6');
expect(data).not.toBeNull();
expect(data?.cone).toBe('6');
expect(data?.fahrenheit).toBe(2232);
expect(data?.celsius).toBe(1222);
expect(data?.description).toContain('Stoneware');
});
});
describe('suggestConeFromTemperature', () => {
it('suggests cone 6 for 2232°F', () => {
const temp = { value: 2232, unit: 'F' as const };
const suggested = suggestConeFromTemperature(temp);
expect(suggested).not.toBeNull();
expect(suggested?.cone).toBe('6');
});
it('suggests cone 04 for 1945°F', () => {
const temp = { value: 1945, unit: 'F' as const };
const suggested = suggestConeFromTemperature(temp);
expect(suggested).not.toBeNull();
expect(suggested?.cone).toBe('04');
});
it('returns null for temperatures far from any cone', () => {
const temp = { value: 500, unit: 'F' as const };
const suggested = suggestConeFromTemperature(temp);
expect(suggested).toBeNull();
});
});
describe('isValidCone', () => {
it('validates common cones', () => {
expect(isValidCone('04')).toBe(true);
expect(isValidCone('06')).toBe(true);
expect(isValidCone('6')).toBe(true);
expect(isValidCone('10')).toBe(true);
});
it('rejects invalid cones', () => {
expect(isValidCone('99')).toBe(false);
expect(isValidCone('abc')).toBe(false);
});
});
describe('formatCone', () => {
it('formats cone number', () => {
expect(formatCone('04')).toBe('Cone 04');
expect(formatCone('6')).toBe('Cone 6');
});
});
describe('getBisqueCones', () => {
it('returns common bisque cones', () => {
const cones = getBisqueCones();
expect(cones).toContain('04');
expect(cones).toContain('03');
expect(cones.length).toBeGreaterThan(0);
});
});
describe('getGlazeFiringCones', () => {
it('returns common glaze firing cones', () => {
const cones = getGlazeFiringCones();
expect(cones).toContain('6');
expect(cones).toContain('10');
expect(cones.length).toBeGreaterThan(0);
});
});
});