27 lines
1.2 KiB
JavaScript
27 lines
1.2 KiB
JavaScript
import { describe, it, expect } from 'vitest'
|
|
import { getConversionFactor, calculateTotals } from '@/units'
|
|
|
|
describe('units', () => {
|
|
it('returns conversion factors for aliases and base units', () => {
|
|
expect(getConversionFactor('kg')).toEqual({ unit: 'kg', factor: 1 })
|
|
expect(getConversionFactor('g')).toEqual({ unit: 'kg', factor: 1000 })
|
|
expect(getConversionFactor('kgs')).toEqual({ unit: 'kg', factor: 1 })
|
|
expect(getConversionFactor('litre')).toEqual({ unit: 'litres', factor: 1 })
|
|
expect(getConversionFactor('ml')).toEqual({ unit: 'litres', factor: 1000 })
|
|
})
|
|
|
|
it('calculates totals grouped by base units', () => {
|
|
const totals = calculateTotals([
|
|
{ quantity: 500, unit: 'g' },
|
|
{ quantity: 0.5, unit: 'kg' },
|
|
{ quantity: 250, unit: 'ml' },
|
|
{ quantity: 0.75, unit: 'litre' },
|
|
])
|
|
// Expect kg total = 0.5 (from g) + 0.5 (from kg) = 1
|
|
const kgTotal = totals.find((t) => t.unit === 'kg')
|
|
expect(kgTotal.quantity).toBeCloseTo(1)
|
|
// Expect litres total = 0.25 (from ml) + 0.75 (from litre) = 1
|
|
const lTotal = totals.find((t) => t.unit === 'litres')
|
|
expect(lTotal.quantity).toBeCloseTo(1)
|
|
})
|
|
})
|