Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kentcdodds/lineage

src/ui/refresh-state.node.test.ts

51 lines · 1.2 KB · TypeScript
import assert from 'node:assert/strict'
import { describe, it } from 'node:test'
import { afterRefresh, whileRefreshing } from './refresh-state.ts'

describe('refresh presentation', () => {
	it('keeps the last series visible while a cached refresh is in flight', () => {
		assert.deepEqual(whileRefreshing(true), {
			showFullPageLoading: false,
			statusUpdating: true,
			treatAsOffline: false,
		})
	})

	it('uses the full-page loading card only when there is no series yet', () => {
		assert.deepEqual(whileRefreshing(false), {
			showFullPageLoading: true,
			statusUpdating: false,
			treatAsOffline: false,
		})
	})

	it('does not call a successful refresh offline', () => {
		assert.deepEqual(
			afterRefresh({
				hasCachedSeries: true,
				fetchSucceeded: true,
				networkOnline: true,
			}),
			{
				showFullPageLoading: false,
				statusUpdating: false,
				treatAsOffline: false,
			},
		)
	})

	it('marks a failed refresh offline only when a cached series is still on screen', () => {
		assert.deepEqual(
			afterRefresh({
				hasCachedSeries: true,
				fetchSucceeded: false,
				networkOnline: true,
			}),
			{
				showFullPageLoading: false,
				statusUpdating: false,
				treatAsOffline: true,
			},
		)
	})
})