ProjectBranchSelector.utils.test.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { describe, expect, it } from 'vitest'
  2. import { getProjectBranchSelectorState } from './ProjectBranchSelector.utils'
  3. describe('getProjectBranchSelectorState', () => {
  4. it('returns main branch when branching disabled', () => {
  5. const result = getProjectBranchSelectorState({
  6. selectedBranch: undefined,
  7. isBranchingEnabled: false,
  8. selectedOrganization: undefined,
  9. })
  10. expect(result.isMainBranch).toBe(true)
  11. expect(result.branchDisplayName).toBe('main')
  12. })
  13. it('returns main when branching enabled and selected branch is default', () => {
  14. const result = getProjectBranchSelectorState({
  15. selectedBranch: {
  16. id: '1',
  17. name: 'main',
  18. project_ref: 'ref',
  19. is_default: true,
  20. created_at: '',
  21. } as any,
  22. isBranchingEnabled: true,
  23. selectedOrganization: undefined,
  24. })
  25. expect(result.isMainBranch).toBe(true)
  26. expect(result.branchDisplayName).toBe('main')
  27. })
  28. it('returns non-main when branching enabled and selected branch is not default', () => {
  29. const result = getProjectBranchSelectorState({
  30. selectedBranch: {
  31. id: '2',
  32. name: 'feature-x',
  33. project_ref: 'ref-2',
  34. is_default: false,
  35. created_at: '',
  36. } as any,
  37. isBranchingEnabled: true,
  38. selectedOrganization: undefined,
  39. })
  40. expect(result.isMainBranch).toBe(false)
  41. expect(result.branchDisplayName).toBe('feature-x')
  42. })
  43. it('returns main when selected branch undefined and branching enabled', () => {
  44. const result = getProjectBranchSelectorState({
  45. selectedBranch: undefined,
  46. isBranchingEnabled: true,
  47. selectedOrganization: undefined,
  48. })
  49. expect(result.branchDisplayName).toBe('main')
  50. })
  51. it('returns organization href when org has slug', () => {
  52. const result = getProjectBranchSelectorState({
  53. selectedBranch: undefined,
  54. isBranchingEnabled: false,
  55. selectedOrganization: { slug: 'my-org', name: 'My Org' } as any,
  56. })
  57. expect(result.organizationHref).toBe('/org/my-org')
  58. expect(result.selectedOrgInitial).toBe('M')
  59. })
  60. it('returns organizations fallback when no org slug', () => {
  61. const result = getProjectBranchSelectorState({
  62. selectedBranch: undefined,
  63. isBranchingEnabled: false,
  64. selectedOrganization: undefined,
  65. })
  66. expect(result.organizationHref).toBe('/organizations')
  67. expect(result.selectedOrgInitial).toBe('O')
  68. })
  69. it('handles org name with leading/trailing spaces for initial', () => {
  70. const result = getProjectBranchSelectorState({
  71. selectedBranch: undefined,
  72. isBranchingEnabled: false,
  73. selectedOrganization: { slug: 'x', name: ' Acme ' } as any,
  74. })
  75. expect(result.selectedOrgInitial).toBe('A')
  76. })
  77. })