tabs.test.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { beforeEach, describe, expect, it } from 'vitest'
  2. import { createTabsState } from './tabs'
  3. import { ENTITY_TYPE } from '@/data/entity-types/entity-type-constants'
  4. describe('tabs recent items', () => {
  5. beforeEach(() => {
  6. localStorage.clear()
  7. })
  8. it('refreshes an existing recent item label when the tab is re-added', () => {
  9. const store = createTabsState('default')
  10. store.addRecentItem({
  11. id: 'r-1',
  12. type: ENTITY_TYPE.TABLE,
  13. label: 'tasks',
  14. metadata: {
  15. schema: 'public',
  16. name: 'tasks',
  17. tableId: 1,
  18. },
  19. })
  20. store.addRecentItem({
  21. id: 'r-1',
  22. type: ENTITY_TYPE.TABLE,
  23. label: 'routines',
  24. metadata: {
  25. schema: 'public',
  26. name: 'routines',
  27. tableId: 1,
  28. },
  29. })
  30. expect(store.recentItems).toHaveLength(1)
  31. expect(store.recentItems[0].label).toBe('routines')
  32. expect(store.recentItems[0].metadata?.name).toBe('routines')
  33. })
  34. it('keeps recent items aligned when an open tab label changes', () => {
  35. const store = createTabsState('default')
  36. store.addTab({
  37. id: 'r-1',
  38. type: ENTITY_TYPE.TABLE,
  39. label: 'tasks',
  40. metadata: {
  41. schema: 'public',
  42. name: 'tasks',
  43. tableId: 1,
  44. },
  45. isPreview: false,
  46. })
  47. store.updateTab('r-1', { label: 'routines' })
  48. expect(store.tabsMap['r-1'].label).toBe('routines')
  49. expect(store.recentItems[0].label).toBe('routines')
  50. expect(store.recentItems[0].metadata?.name).toBe('routines')
  51. })
  52. })