import { describe, it, expect, beforeEach } from 'vitest' import { initApiEnvSwitcher } from '../../assets/modules/api-env-switcher.js' describe('initApiEnvSwitcher', () => { beforeEach(() => { document.body.innerHTML = '' }) it('does nothing without env-switcher', () => { expect(() => initApiEnvSwitcher()).not.toThrow() }) it('switches to live environment', () => { document.body.innerHTML = `

https://example.com/api/sandbox

Sandbox desc

/api/sandbox /api/sandbox ` initApiEnvSwitcher() document.querySelector('[data-env="live"]').click() expect(document.getElementById('env-base-url').textContent).toBe('https://example.com/api/live') expect(document.getElementById('env-description').textContent).toContain('production') const prefixes = document.querySelectorAll('.api-env-prefix') prefixes.forEach(el => { expect(el.textContent).toBe('/api/live') expect(el.className).toContain('text-green-400') }) }) it('switches back to sandbox', () => { document.body.innerHTML = `

https://test.com/api/live

Live desc

/api/live ` initApiEnvSwitcher() document.querySelector('[data-env="sandbox"]').click() expect(document.getElementById('env-base-url').textContent).toBe('https://test.com/api/sandbox') expect(document.querySelector('.api-env-prefix').textContent).toBe('/api/sandbox') }) it('uses location.origin when no data-host', () => { document.body.innerHTML = `

` initApiEnvSwitcher() document.querySelector('[data-env="live"]').click() expect(document.getElementById('env-base-url').textContent).toContain('/api/live') }) it('handles unknown env gracefully', () => { document.body.innerHTML = `

original

original desc

` initApiEnvSwitcher() document.querySelector('[data-env="unknown"]').click() expect(document.getElementById('env-base-url').textContent).toBe('original') expect(document.getElementById('env-description').textContent).toBe('original desc') }) it('works without base-url and description elements', () => { document.body.innerHTML = `
/api/sandbox ` initApiEnvSwitcher() expect(() => document.querySelector('[data-env="live"]').click()).not.toThrow() expect(document.querySelector('.api-env-prefix').textContent).toBe('/api/live') }) })