createTranslationHelper.test.ts•1.8 kB
import { createTranslationHelper } from './createTranslationHelper';
import { writeFileSync, unlinkSync } from 'fs';
import { describe, it, expect, beforeEach } from '@jest/globals';
import path from 'path';
const TEMP_CONFIG_PATH = path.resolve(
  process.cwd(),
  '.backlog-mcp-serverrc.json'
);
describe('createTranslationHelper', () => {
  beforeEach(() => {
    delete process.env.BACKLOG_MCP_HELLO;
    try {
      unlinkSync(TEMP_CONFIG_PATH);
    } catch {
      // noop: cannot do anything
    }
  });
  it('returns fallback if no env or config is present', () => {
    const { t } = createTranslationHelper({ searchDir: process.cwd() });
    expect(t('HELLO', 'Fallback')).toBe('Fallback');
  });
  it('returns value from config file if present', () => {
    writeFileSync(
      TEMP_CONFIG_PATH,
      JSON.stringify({ HELLO: 'From config' }, null, 2),
      'utf-8'
    );
    const { t } = createTranslationHelper({ searchDir: process.cwd() });
    expect(t('HELLO', 'Fallback')).toBe('From config');
  });
  it('returns value from environment variable over config', () => {
    writeFileSync(
      TEMP_CONFIG_PATH,
      JSON.stringify({ HELLO: 'From config' }, null, 2),
      'utf-8'
    );
    process.env.BACKLOG_MCP_HELLO = 'From env';
    const { t } = createTranslationHelper({ searchDir: process.cwd() });
    expect(t('HELLO', 'Fallback')).toBe('From env');
  });
  it('caches the first call to a key', () => {
    process.env.BACKLOG_MCP_HELLO = 'Cached value';
    const { t } = createTranslationHelper({ searchDir: process.cwd() });
    const first = t('HELLO', 'Fallback');
    process.env.BACKLOG_MCP_HELLO = 'Modified value';
    const second = t('HELLO', 'Fallback');
    expect(first).toBe('Cached value');
    expect(second).toBe('Cached value');
  });
});