UNPKG

@tanstack/devtools

Version:

TanStack Devtools is a set of tools for building advanced devtools for your application.

214 lines (193 loc) 5.29 kB
import { describe, expect, it } from 'vitest' import { MAX_ACTIVE_PLUGINS } from './constants' import { getDefaultActivePlugins } from './get-default-active-plugins' import type { PluginWithId } from './get-default-active-plugins' describe('getDefaultActivePlugins', () => { it('should return empty array when no plugins provided', () => { const result = getDefaultActivePlugins([]) expect(result).toEqual([]) }) it('should automatically activate a single plugin', () => { const plugins: Array<PluginWithId> = [ { id: 'only-plugin', }, ] const result = getDefaultActivePlugins(plugins) expect(result).toEqual(['only-plugin']) }) it('should automatically activate a single plugin even if defaultOpen is false', () => { const plugins: Array<PluginWithId> = [ { id: 'only-plugin', defaultOpen: false, }, ] const result = getDefaultActivePlugins(plugins) expect(result).toEqual(['only-plugin']) }) it('should return empty array when multiple plugins without defaultOpen', () => { const plugins: Array<PluginWithId> = [ { id: 'plugin1', }, { id: 'plugin2', }, { id: 'plugin3', }, ] const result = getDefaultActivePlugins(plugins) expect(result).toEqual([]) }) it('should activate plugins with defaultOpen: true', () => { const plugins: Array<PluginWithId> = [ { id: 'plugin1', defaultOpen: true, }, { id: 'plugin2', defaultOpen: false, }, { id: 'plugin3', defaultOpen: true, }, ] const result = getDefaultActivePlugins(plugins) expect(result).toEqual(['plugin1', 'plugin3']) }) it('should limit defaultOpen plugins to MAX_ACTIVE_PLUGINS', () => { const plugins: Array<PluginWithId> = [ { id: 'plugin1', defaultOpen: true, }, { id: 'plugin2', defaultOpen: true, }, { id: 'plugin3', defaultOpen: true, }, { id: 'plugin4', defaultOpen: true, }, { id: 'plugin5', defaultOpen: true, }, ] const result = getDefaultActivePlugins(plugins) // Pinned to the constant, so raising the cap cannot make this pass by // accident the way a hardcoded 3 did. expect(result).toEqual( plugins.slice(0, MAX_ACTIVE_PLUGINS).map((plugin) => plugin.id), ) expect(result.length).toBeLessThanOrEqual(MAX_ACTIVE_PLUGINS) }) it('should activate exactly MAX_ACTIVE_PLUGINS when that many have defaultOpen', () => { const plugins: Array<PluginWithId> = [ { id: 'plugin1', defaultOpen: true, }, { id: 'plugin2', defaultOpen: true, }, { id: 'plugin3', defaultOpen: true, }, { id: 'plugin4', defaultOpen: false, }, ] const result = getDefaultActivePlugins(plugins) expect(result).toEqual(['plugin1', 'plugin2', 'plugin3']) expect(result.length).toBe(3) }) it('should handle mix of defaultOpen true/false/undefined', () => { const plugins: Array<PluginWithId> = [ { id: 'plugin1', defaultOpen: true, }, { id: 'plugin2', // undefined defaultOpen }, { id: 'plugin3', defaultOpen: false, }, { id: 'plugin4', defaultOpen: true, }, ] const result = getDefaultActivePlugins(plugins) // Only plugin1 and plugin4 have defaultOpen: true expect(result).toEqual(['plugin1', 'plugin4']) }) it('should return single plugin even if it has defaultOpen: true', () => { const plugins: Array<PluginWithId> = [ { id: 'only-plugin', defaultOpen: true, }, ] const result = getDefaultActivePlugins(plugins) expect(result).toEqual(['only-plugin']) }) it('should stop at MAX_ACTIVE_PLUGINS limit when more plugins have defaultOpen: true', () => { const plugins: Array<PluginWithId> = [ { id: 'plugin1', defaultOpen: true, }, { id: 'plugin2', defaultOpen: true, }, { id: 'plugin3', defaultOpen: true, }, { id: 'plugin4', defaultOpen: true, }, { id: 'plugin5', defaultOpen: true, }, ] const result = getDefaultActivePlugins(plugins) // Fewer plugins here than the cap allows, so all of them open. The cap is // exercised by the test above, against the constant. expect(result).toEqual([ 'plugin1', 'plugin2', 'plugin3', 'plugin4', 'plugin5', ]) expect(result.length).toBeLessThanOrEqual(MAX_ACTIVE_PLUGINS) }) it('never returns more than MAX_ACTIVE_PLUGINS however many ask to open', () => { const plugins: Array<PluginWithId> = Array.from( { length: MAX_ACTIVE_PLUGINS + 4 }, (_, index) => ({ id: `plugin${index}`, defaultOpen: true }), ) const result = getDefaultActivePlugins(plugins) expect(result).toHaveLength(MAX_ACTIVE_PLUGINS) expect(result).not.toContain(`plugin${MAX_ACTIVE_PLUGINS}`) }) })