UNPKG

ripple

Version:

Ripple is an elegant TypeScript UI framework

104 lines (91 loc) • 2.67 kB
import { describe, expect, it } from 'vitest'; import { RenderRoute, resolveRippleConfig } from '@ripple-ts/vite-plugin'; describe('vite-plugin-ripple config resolution', () => { it('preserves routes and applies defaults', () => { const route = new RenderRoute({ path: '/', entry: '/src/App.tsrx', }); const config = resolveRippleConfig({ router: { routes: [route], }, }); expect(config.router.routes).toEqual([route]); expect(config.middlewares).toEqual([]); expect(config.platform.env).toEqual({}); expect(config.server.trustProxy).toBe(false); expect(config.rootBoundary).toEqual({}); expect(config.transport).toEqual({}); expect(config.build.outDir).toBe('dist'); }); it('defaults routes to an empty array', () => { const config = resolveRippleConfig({ router: { routes: [], }, }); expect(config.router.routes).toEqual([]); }); it('allows configs without routes', () => { const config = resolveRippleConfig({ middlewares: [() => {}], platform: { env: { API_URL: 'https://example.com', }, }, server: { trustProxy: true, }, }); expect(config.router.routes).toEqual([]); expect(config.middlewares).toHaveLength(1); expect(config.platform.env).toEqual({ API_URL: 'https://example.com', }); expect(config.server.trustProxy).toBe(true); }); it('preserves build options', () => { const config = resolveRippleConfig({ build: { outDir: 'build', minify: true, target: 'es2022', }, }); expect(config.build).toEqual({ outDir: 'build', minify: true, target: 'es2022', }); }); it('throws for invalid routes', () => { expect(() => resolveRippleConfig({ router: { routes: /** @type {any} */ ('/'), }, }), ).toThrow('router.routes must be an array'); }); it('preserves transport functions when resolving a config again', () => { const transport = { Money: { encode: () => false, decode: (data) => data }, }; const config = resolveRippleConfig({ transport }); expect(config.transport).toBe(transport); expect(resolveRippleConfig(config).transport).toBe(transport); }); it.each([null, false, [], 'Money', () => {}])('rejects invalid transport %s', (transport) => { expect(() => resolveRippleConfig({ transport })).toThrow('transport must be an object'); }); it.each([null, [], false, {}, { encode() {} }, { decode() {} }, { encode: true, decode() {} }])( 'rejects invalid transport handler %s', (Money) => { expect(() => resolveRippleConfig({ transport: { Money } })).toThrow( 'transport.Money must be an object with encode and decode functions', ); }, ); });