UNPKG

filecoin-pin

Version:

Bridge IPFS content to Filecoin Onchain Cloud using familiar tools

64 lines (57 loc) 1.91 kB
import { describe, expect, it } from 'vitest' import { formatRunwayDuration, formatRunwaySummary } from '../../core/utils/index.js' describe('formatRunwayDuration', () => { it('formats small durations with days and hours', () => { expect(formatRunwayDuration(0, 5)).toBe('0 day(s) 5 hour(s)') expect(formatRunwayDuration(5, 12)).toBe('5 day(s) 12 hour(s)') expect(formatRunwayDuration(59, 0)).toBe('59 day(s)') }) it('formats medium durations with months and days', () => { expect(formatRunwayDuration(60, 0)).toBe('2 month(s)') expect(formatRunwayDuration(75, 0)).toBe('2 month(s) 15 day(s)') expect(formatRunwayDuration(120, 0)).toBe('4 month(s)') }) it('formats large durations with years, months, and days', () => { expect(formatRunwayDuration(365, 0)).toBe('1 year(s)') expect(formatRunwayDuration(400, 0)).toBe('1 year(s) 1 month(s) 5 day(s)') expect(formatRunwayDuration(800, 0)).toBe('2 year(s) 2 month(s) 10 day(s)') }) }) describe('formatRunwaySummary', () => { it('formats active runway using duration formatter', () => { const summary = { state: 'active', available: 0n, rateUsed: 0n, perDay: 0n, lockupUsed: 0n, days: 5, hours: 12, } as const expect(formatRunwaySummary(summary)).toBe('5 day(s) 12 hour(s)') }) it('describes no-spend state', () => { const summary = { state: 'no-spend', available: 0n, rateUsed: 0n, perDay: 0n, lockupUsed: 0n, days: 0, hours: 0, } as const expect(formatRunwaySummary(summary)).toBe('No active spend detected') }) it('describes unknown state', () => { const summary = { state: 'unknown', available: 0n, rateUsed: 0n, perDay: 0n, lockupUsed: 0n, days: 0, hours: 0, } as const expect(formatRunwaySummary(summary)).toBe('Unknown') }) })