Connect.utils.test.ts 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. import { describe, expect, test } from 'vitest'
  2. import { resolveFrameworkLibraryKey } from './Connect.utils'
  3. describe('Connect.utils:resolveFrameworkLibraryKey', () => {
  4. test('should return null if no framework provided', () => {
  5. const result = resolveFrameworkLibraryKey({
  6. framework: undefined,
  7. frameworkVariant: undefined,
  8. library: undefined,
  9. })
  10. expect(result).toBeNull()
  11. })
  12. test('should return null for empty framework string', () => {
  13. const result = resolveFrameworkLibraryKey({
  14. framework: '',
  15. frameworkVariant: undefined,
  16. library: undefined,
  17. })
  18. expect(result).toBeNull()
  19. })
  20. test('should return explicit library if provided', () => {
  21. const result = resolveFrameworkLibraryKey({
  22. framework: 'nextjs',
  23. frameworkVariant: 'app',
  24. library: 'custom-library',
  25. })
  26. expect(result).toBe('custom-library')
  27. })
  28. test('should resolve library for Next.js App Router', () => {
  29. const result = resolveFrameworkLibraryKey({
  30. framework: 'nextjs',
  31. frameworkVariant: 'app',
  32. library: undefined,
  33. })
  34. // Next.js App Router has brivenjs as its library
  35. expect(result).toBe('brivenjs')
  36. })
  37. test('should resolve library for Next.js Pages Router', () => {
  38. const result = resolveFrameworkLibraryKey({
  39. framework: 'nextjs',
  40. frameworkVariant: 'pages',
  41. library: undefined,
  42. })
  43. expect(result).toBe('brivenjs')
  44. })
  45. test('should resolve library for React with Vite variant', () => {
  46. const result = resolveFrameworkLibraryKey({
  47. framework: 'react',
  48. frameworkVariant: 'vite',
  49. library: undefined,
  50. })
  51. expect(result).toBe('brivenjs')
  52. })
  53. test('should resolve library for React with Create React App variant', () => {
  54. const result = resolveFrameworkLibraryKey({
  55. framework: 'react',
  56. frameworkVariant: 'create-react-app',
  57. library: undefined,
  58. })
  59. expect(result).toBe('brivenjs')
  60. })
  61. test('should resolve library for framework without variants (Remix)', () => {
  62. const result = resolveFrameworkLibraryKey({
  63. framework: 'remix',
  64. frameworkVariant: undefined,
  65. library: undefined,
  66. })
  67. // Remix has single child which is brivenjs
  68. expect(result).toBe('brivenjs')
  69. })
  70. test('should resolve library for Flutter', () => {
  71. const result = resolveFrameworkLibraryKey({
  72. framework: 'flutter',
  73. frameworkVariant: undefined,
  74. library: undefined,
  75. })
  76. expect(result).toBe('brivenflutter')
  77. })
  78. test('should resolve library for Swift', () => {
  79. const result = resolveFrameworkLibraryKey({
  80. framework: 'swift',
  81. frameworkVariant: undefined,
  82. library: undefined,
  83. })
  84. expect(result).toBe('brivenswift')
  85. })
  86. test('should resolve library for Android Kotlin', () => {
  87. const result = resolveFrameworkLibraryKey({
  88. framework: 'androidkotlin',
  89. frameworkVariant: undefined,
  90. library: undefined,
  91. })
  92. expect(result).toBe('brivenkt')
  93. })
  94. test('should resolve library for Flask (Python)', () => {
  95. const result = resolveFrameworkLibraryKey({
  96. framework: 'flask',
  97. frameworkVariant: undefined,
  98. library: undefined,
  99. })
  100. expect(result).toBe('brivenpy')
  101. })
  102. test('should fallback to first variant library when variant not specified for multi-variant framework', () => {
  103. const result = resolveFrameworkLibraryKey({
  104. framework: 'nextjs',
  105. frameworkVariant: undefined,
  106. library: undefined,
  107. })
  108. // Should get library from first variant (app router)
  109. expect(result).toBe('brivenjs')
  110. })
  111. test('should return null for unknown framework', () => {
  112. const result = resolveFrameworkLibraryKey({
  113. framework: 'unknown-framework',
  114. frameworkVariant: undefined,
  115. library: undefined,
  116. })
  117. expect(result).toBeNull()
  118. })
  119. test('should handle SvelteKit framework', () => {
  120. const result = resolveFrameworkLibraryKey({
  121. framework: 'sveltekit',
  122. frameworkVariant: undefined,
  123. library: undefined,
  124. })
  125. expect(result).toBe('brivenjs')
  126. })
  127. test('should handle Nuxt framework', () => {
  128. const result = resolveFrameworkLibraryKey({
  129. framework: 'nuxt',
  130. frameworkVariant: undefined,
  131. library: undefined,
  132. })
  133. expect(result).toBe('brivenjs')
  134. })
  135. test('should handle Vue.js framework', () => {
  136. const result = resolveFrameworkLibraryKey({
  137. framework: 'vuejs',
  138. frameworkVariant: undefined,
  139. library: undefined,
  140. })
  141. expect(result).toBe('brivenjs')
  142. })
  143. test('should handle Solid.js framework', () => {
  144. const result = resolveFrameworkLibraryKey({
  145. framework: 'solidjs',
  146. frameworkVariant: undefined,
  147. library: undefined,
  148. })
  149. expect(result).toBe('brivenjs')
  150. })
  151. test('should handle Astro framework', () => {
  152. const result = resolveFrameworkLibraryKey({
  153. framework: 'astro',
  154. frameworkVariant: undefined,
  155. library: undefined,
  156. })
  157. expect(result).toBe('brivenjs')
  158. })
  159. test('should handle Expo React Native', () => {
  160. const result = resolveFrameworkLibraryKey({
  161. framework: 'exporeactnative',
  162. frameworkVariant: undefined,
  163. library: undefined,
  164. })
  165. expect(result).toBe('brivenjs')
  166. })
  167. test('should handle Ionic React', () => {
  168. const result = resolveFrameworkLibraryKey({
  169. framework: 'ionicreact',
  170. frameworkVariant: undefined,
  171. library: undefined,
  172. })
  173. expect(result).toBe('brivenjs')
  174. })
  175. test('should handle Ionic Angular', () => {
  176. const result = resolveFrameworkLibraryKey({
  177. framework: 'ionicangular',
  178. frameworkVariant: undefined,
  179. library: undefined,
  180. })
  181. expect(result).toBe('brivenjs')
  182. })
  183. test('should handle Refine framework', () => {
  184. const result = resolveFrameworkLibraryKey({
  185. framework: 'refine',
  186. frameworkVariant: undefined,
  187. library: undefined,
  188. })
  189. expect(result).toBe('brivenjs')
  190. })
  191. test('should handle TanStack Start framework', () => {
  192. const result = resolveFrameworkLibraryKey({
  193. framework: 'tanstack',
  194. frameworkVariant: undefined,
  195. library: undefined,
  196. })
  197. expect(result).toBe('brivenjs')
  198. })
  199. })