import { describe, it, expect } from 'vitest';
import { isLeagueAdminOrHigherRole, LeagueRoleUtility, LeagueMembershipUtility } from './leagueRoles';

describe('leagueRoles', () => {
  describe('isLeagueAdminOrHigherRole', () => {
    it('should return true for "owner" role', () => {
      expect(isLeagueAdminOrHigherRole('owner')).toBe(true);
    });

    it('should return true for "admin" role', () => {
      expect(isLeagueAdminOrHigherRole('admin')).toBe(true);
    });

    it('should return true for "steward" role', () => {
      expect(isLeagueAdminOrHigherRole('steward')).toBe(true);
    });

    it('should return false for "member" role', () => {
      expect(isLeagueAdminOrHigherRole('member')).toBe(false);
    });

    it('should return false for "viewer" role', () => {
      expect(isLeagueAdminOrHigherRole('viewer')).toBe(false);
    });

    it('should return false for empty string', () => {
      expect(isLeagueAdminOrHigherRole('')).toBe(false);
    });

    it('should return false for unknown roles', () => {
      expect(isLeagueAdminOrHigherRole('unknown')).toBe(false);
      expect(isLeagueAdminOrHigherRole('moderator')).toBe(false);
    });

    it('should be case-sensitive', () => {
      expect(isLeagueAdminOrHigherRole('OWNER')).toBe(false);
      expect(isLeagueAdminOrHigherRole('Admin')).toBe(false);
      expect(isLeagueAdminOrHigherRole('STEWARD')).toBe(false);
    });
  });

  describe('LeagueRoleUtility re-export', () => {
    it('should be exported', () => {
      expect(LeagueRoleUtility).toBeDefined();
    });

    it('should be a class', () => {
      // This verifies that the re-export works correctly
      // The actual functionality is tested in the utility's own test file
      expect(typeof LeagueRoleUtility).toBe('function');
      expect(LeagueRoleUtility.prototype).toBeDefined();
    });
  });

  describe('LeagueMembershipUtility re-export', () => {
    it('should be exported', () => {
      expect(LeagueMembershipUtility).toBeDefined();
    });

    it('should be a class', () => {
      // This verifies that the re-export works correctly
      // The actual functionality is tested in the utility's own test file
      expect(typeof LeagueMembershipUtility).toBe('function');
      expect(LeagueMembershipUtility.prototype).toBeDefined();
    });
  });
});