mirror of https://github.com/djteang/OrangeTV.git
63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
const {
|
|
buildRedisUrl,
|
|
getRedisConfig,
|
|
isPortAvailable,
|
|
resolveRedisAction,
|
|
} = require('../dev-with-redis');
|
|
const net = require('net');
|
|
|
|
describe('dev-with-redis helpers', () => {
|
|
test('uses stable defaults for the local Redis container', () => {
|
|
const config = getRedisConfig({});
|
|
|
|
expect(config).toEqual({
|
|
containerName: 'orangetv-redis-dev',
|
|
image: 'redis:alpine',
|
|
port: '6379',
|
|
});
|
|
});
|
|
|
|
test('allows env overrides for container name, image, and port', () => {
|
|
const config = getRedisConfig({
|
|
REDIS_CONTAINER_NAME: 'custom-redis',
|
|
REDIS_IMAGE: 'redis:7-alpine',
|
|
REDIS_PORT: '6380',
|
|
});
|
|
|
|
expect(config).toEqual({
|
|
containerName: 'custom-redis',
|
|
image: 'redis:7-alpine',
|
|
port: '6380',
|
|
});
|
|
});
|
|
|
|
test('builds the Redis URL passed to the Next.js dev process', () => {
|
|
expect(buildRedisUrl('6380')).toBe('redis://localhost:6380');
|
|
});
|
|
|
|
test('starts an existing stopped container instead of creating it', () => {
|
|
expect(resolveRedisAction({ exists: true, running: false })).toBe('start');
|
|
});
|
|
|
|
test('does nothing when the container is already running', () => {
|
|
expect(resolveRedisAction({ exists: true, running: true })).toBe('none');
|
|
});
|
|
|
|
test('creates the container when it does not exist', () => {
|
|
expect(resolveRedisAction({ exists: false, running: false })).toBe('create');
|
|
});
|
|
|
|
test('detects when a dev port is already occupied', async () => {
|
|
const server = net.createServer();
|
|
|
|
await new Promise((resolve) => server.listen(0, resolve));
|
|
const { port } = server.address();
|
|
|
|
try {
|
|
await expect(isPortAvailable(port)).resolves.toBe(false);
|
|
} finally {
|
|
await new Promise((resolve) => server.close(resolve));
|
|
}
|
|
});
|
|
});
|