import { describe, test, expect } from 'vitest';
import { usernameFromHref, DISCOVERY_OVERLAY_SCRIPT } from './discovery.js';

describe('usernameFromHref', () => {
  test('extracts a username from a profile link', () => {
    expect(usernameFromHref('/tem.duck/')).toBe('tem.duck');
    expect(usernameFromHref('/reureu_living')).toBe('reureu_living');
  });
  test('rejects reserved / non-profile paths', () => {
    for (const h of ['/reels/', '/explore/', '/p/ABC123/', '/reel/XYZ/', '/stories/x/', '/accounts/login/', '/direct/inbox/']) {
      expect(usernameFromHref(h)).toBeNull();
    }
  });
  test('rejects deep paths and non-username shapes', () => {
    expect(usernameFromHref('/tem.duck/reels/')).toBeNull(); // has a sub-path
    expect(usernameFromHref('/')).toBeNull();
    expect(usernameFromHref('https://other.com/x/')).toBeNull();
    expect(usernameFromHref('/has space/')).toBeNull();
  });
});

describe('DISCOVERY_OVERLAY_SCRIPT', () => {
  test('is a non-empty injectable script referencing the exposed bindings', () => {
    expect(typeof DISCOVERY_OVERLAY_SCRIPT).toBe('string');
    expect(DISCOVERY_OVERLAY_SCRIPT).toContain('__imCheckExists');
    expect(DISCOVERY_OVERLAY_SCRIPT).toContain('__imAddAccount');
  });
});
