23fc940324
Nachgefüllt ist auf Restkapazität nach Morgen begrenzt, Stand abends auf Morgen plus Nachgefüllt; Werte werden bei Änderungen automatisch gekürzt. Co-authored-by: Cursor <cursoragent@cursor.com>
63 lines
2.1 KiB
TypeScript
63 lines
2.1 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
clampTankLiters,
|
|
computeEveningTankMaxLiters,
|
|
computeRefilledTankMaxLiters,
|
|
extractTankCapacitiesFromYacht,
|
|
formatTankLitersForInput,
|
|
parseOptionalTankLiters,
|
|
tankCapacityInputFromStored
|
|
} from './tankCapacity.js'
|
|
|
|
describe('tankCapacity', () => {
|
|
it('parses optional liters with comma decimal', () => {
|
|
expect(parseOptionalTankLiters('200')).toBe(200)
|
|
expect(parseOptionalTankLiters('12,5')).toBe(12.5)
|
|
expect(parseOptionalTankLiters('')).toBeUndefined()
|
|
})
|
|
|
|
it('rejects negative or invalid liters', () => {
|
|
expect(() => parseOptionalTankLiters('-1')).toThrow('invalid_tank_liters')
|
|
expect(() => parseOptionalTankLiters('abc')).toThrow('invalid_tank_liters')
|
|
})
|
|
|
|
it('extracts capacities from yacht payload', () => {
|
|
expect(
|
|
extractTankCapacitiesFromYacht({
|
|
freshwaterCapacityL: 300,
|
|
fuelCapacityL: 120,
|
|
greywaterCapacityL: 80
|
|
})
|
|
).toEqual({
|
|
freshwaterCapacityL: 300,
|
|
fuelCapacityL: 120,
|
|
greywaterCapacityL: 80
|
|
})
|
|
expect(extractTankCapacitiesFromYacht({ name: 'Test' })).toEqual({})
|
|
})
|
|
|
|
it('formats stored capacity for input', () => {
|
|
expect(tankCapacityInputFromStored(150)).toBe('150')
|
|
expect(formatTankLitersForInput(12.5)).toBe('12.5')
|
|
})
|
|
|
|
it('clamps liters to max when set', () => {
|
|
expect(clampTankLiters(250, 200)).toBe(200)
|
|
expect(clampTankLiters(-5, 200)).toBe(0)
|
|
expect(clampTankLiters(50)).toBe(50)
|
|
})
|
|
|
|
it('computes refilled max as capacity minus morning', () => {
|
|
expect(computeRefilledTankMaxLiters('10', 60)).toBe(50)
|
|
expect(computeRefilledTankMaxLiters('60', 60)).toBeUndefined()
|
|
expect(computeRefilledTankMaxLiters('10', undefined)).toBeUndefined()
|
|
})
|
|
|
|
it('computes evening max as morning plus refilled capped by capacity', () => {
|
|
expect(computeEveningTankMaxLiters('10', '20', 60)).toBe(30)
|
|
expect(computeEveningTankMaxLiters('40', '40', 60)).toBe(60)
|
|
expect(computeEveningTankMaxLiters('10', '20')).toBe(30)
|
|
expect(computeEveningTankMaxLiters('0', '0', 60)).toBeUndefined()
|
|
})
|
|
})
|