mirror of
https://github.com/supabase/supabase.git
synced 2026-10-16 22:59:11 +03:00
* clean circular deps in telemetry * clean circular deps in command * fix commandmenu circular deps * rm deps.json * fix consent circular dep * fix TOC circular deps * fix wrong import path * fix test types * fix missing fn * undo let change * fix consent component * empty
168 lines
5.4 KiB
TypeScript
168 lines
5.4 KiB
TypeScript
import { beforeEach, describe, expect, it } from 'vitest'
|
|
|
|
import { type ICommandsState, type ICommandSection } from '../types'
|
|
import { initCommandsState, orderSectionFirst } from './commandsState'
|
|
import { section$new } from '../CommandSection'
|
|
|
|
describe('orderSectionFirst', () => {
|
|
it('Orders newly created section first', () => {
|
|
const first = section$new('First')
|
|
const second = section$new('Second')
|
|
const third = section$new('Third')
|
|
const sections = [first, second, third]
|
|
|
|
const expected = [third, first, second]
|
|
const actual = orderSectionFirst(sections, 2)
|
|
expect(actual).toEqual(expected)
|
|
})
|
|
|
|
it('Orders sole section first', () => {
|
|
const only = section$new('Only')
|
|
const sections = [only]
|
|
|
|
const actual = orderSectionFirst(sections, 0)
|
|
expect(actual).toEqual(sections)
|
|
})
|
|
|
|
it('Orders existing section first', () => {
|
|
const first = section$new('First')
|
|
const second = section$new('Second')
|
|
const third = section$new('Third')
|
|
const sections = [first, second, third]
|
|
|
|
const expected = [second, first, third]
|
|
const actual = orderSectionFirst(sections, 1)
|
|
expect(actual).toEqual(expected)
|
|
})
|
|
})
|
|
|
|
describe('commandState', () => {
|
|
let commandsState: ICommandsState
|
|
|
|
beforeEach(() => {
|
|
commandsState = initCommandsState()
|
|
})
|
|
|
|
it('Registers commands in new section', () => {
|
|
const sectionName = 'Section'
|
|
const commands = [
|
|
{ id: 'first', name: 'First', action: () => {} },
|
|
{ id: 'second', name: 'Second', action: () => {} },
|
|
]
|
|
|
|
const expected = [section$new(sectionName)]
|
|
expected[0].commands = commands
|
|
|
|
commandsState.registerSection(sectionName, commands)
|
|
|
|
expect(commandsState.commandSections).toEqual(expected)
|
|
})
|
|
|
|
it('Registers command in pre-existing section', () => {
|
|
const sectionA = 'A'
|
|
const sectionB = 'B'
|
|
|
|
const existingCommands = [
|
|
{ id: 'first', name: 'First', action: () => {} },
|
|
{ id: 'second', name: 'Second', action: () => {} },
|
|
]
|
|
|
|
const commandsToAdd = [{ id: 'third', name: 'Third', action: () => {} }]
|
|
|
|
const sections = [section$new(sectionA), section$new(sectionB)]
|
|
sections[0].commands = existingCommands
|
|
commandsState.commandSections = sections
|
|
|
|
const expected = [section$new(sectionA), section$new(sectionB)]
|
|
expected[0].commands = existingCommands
|
|
expected[0].commands = expected[0].commands.concat(commandsToAdd)
|
|
|
|
commandsState.registerSection('A', commandsToAdd)
|
|
expect(commandsState.commandSections).toEqual(expected)
|
|
})
|
|
|
|
it('Reorders sections if orderSection is given', () => {
|
|
const sectionA = 'A'
|
|
const sectionB = 'B'
|
|
|
|
const commands = [{ id: 'first', name: 'First', action: () => {} }]
|
|
|
|
const sections = [section$new(sectionA), section$new(sectionB)]
|
|
commandsState.commandSections = sections
|
|
|
|
const expected = [section$new(sectionB), section$new(sectionA)]
|
|
expected[0].commands = commands
|
|
|
|
commandsState.registerSection('B', commands, { orderSection: orderSectionFirst })
|
|
expect(commandsState.commandSections).toEqual(expected)
|
|
})
|
|
|
|
it('Reorders commands if orderCommands is given', () => {
|
|
const sectionName = 'Section'
|
|
|
|
const existingCommands = [
|
|
{ id: 'first', name: 'First', action: () => {} },
|
|
{ id: 'second', name: 'Second', action: () => {} },
|
|
]
|
|
|
|
const sections = [section$new(sectionName)]
|
|
sections[0].commands = existingCommands
|
|
commandsState.commandSections = sections
|
|
|
|
const commandsToAdd = [{ id: 'third', name: 'Third', action: () => {} }]
|
|
|
|
const expected = [section$new(sectionName)]
|
|
expected[0].commands = [existingCommands[0], commandsToAdd[0], existingCommands[1]]
|
|
|
|
commandsState.registerSection('Section', commandsToAdd, {
|
|
orderCommands: (oldCommands, newCommands) => {
|
|
const commands = [...oldCommands]
|
|
commands.splice(1, 0, ...newCommands)
|
|
return commands
|
|
},
|
|
})
|
|
|
|
expect(commandsState.commandSections).toEqual(expected)
|
|
})
|
|
|
|
it('Unregisters commands when returned function is called', () => {
|
|
const sectionName = 'Section'
|
|
const firstCommands = [{ id: 'command', name: 'Command', action: () => {} }]
|
|
const secondCommands = [{ id: 'second', name: 'Second', action: () => {} }]
|
|
|
|
const expected = [section$new(sectionName)]
|
|
expected[0].commands = [...firstCommands, ...secondCommands]
|
|
|
|
commandsState.registerSection(sectionName, firstCommands)
|
|
const unregister = commandsState.registerSection(sectionName, secondCommands)
|
|
|
|
expect(commandsState.commandSections).toEqual(expected)
|
|
|
|
const newExpected = [section$new(sectionName)]
|
|
newExpected[0].commands = firstCommands
|
|
|
|
unregister()
|
|
expect(commandsState.commandSections).toHaveLength(1)
|
|
expect(commandsState.commandSections[0].commands).toHaveLength(1)
|
|
expect(commandsState.commandSections).toEqual(newExpected)
|
|
})
|
|
|
|
it('Unregisters entire section if no commands remain', () => {
|
|
const sectionName = 'Section'
|
|
const commands = [{ id: 'command', name: 'Command', action: () => {} }]
|
|
|
|
const expected = [section$new(sectionName)]
|
|
expected[0].commands = commands
|
|
|
|
const unregister = commandsState.registerSection(sectionName, commands)
|
|
|
|
expect(commandsState.commandSections).toEqual(expected)
|
|
|
|
const newExpected: ICommandSection[] = []
|
|
|
|
unregister()
|
|
expect(commandsState.commandSections).toHaveLength(0)
|
|
expect(commandsState.commandSections).toEqual(newExpected)
|
|
})
|
|
})
|