Skip to content
← Public packages

@kentcdodds/codemod-runner

Run codemods over your own saved packages: scan, dry-run with real publish checks and diffs, apply, and revert.

src/time-budget.test.ts

53 lines · 1.1 KB · TypeScript
import assert from 'node:assert/strict'
import { describe, it } from 'node:test'
import {
	shouldStopBeforeNextPackage,
	stepHardCeilingMs,
	stepTimeBudgetMs,
} from './time-budget.ts'

describe('shouldStopBeforeNextPackage', () => {
	it('always starts the first package', () => {
		assert.equal(
			shouldStopBeforeNextPackage({
				elapsedMs: stepHardCeilingMs + 1,
				completedCount: 0,
				lastPackageMs: 60_000,
			}),
			false,
		)
	})

	it('stops after the step budget once something has completed', () => {
		assert.equal(
			shouldStopBeforeNextPackage({
				elapsedMs: stepTimeBudgetMs + 1,
				completedCount: 1,
				lastPackageMs: 1_000,
			}),
			true,
		)
	})

	it('stops when the last package duration would cross the ceiling', () => {
		assert.equal(
			shouldStopBeforeNextPackage({
				elapsedMs: 50_000,
				completedCount: 1,
				lastPackageMs: 30_000,
			}),
			true,
		)
	})

	it('continues while both budgets still have room', () => {
		assert.equal(
			shouldStopBeforeNextPackage({
				elapsedMs: 20_000,
				completedCount: 1,
				lastPackageMs: 15_000,
			}),
			false,
		)
	})
})