"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateRole = validateRole;
exports.getRoleFromProject = getRoleFromProject;
exports.getUserConstants = getUserConstants;
exports.getOrganizationSettings = getOrganizationSettings;
const test_data_1 = require("../test-data");
const VALID_ROLES = ['Admin', 'Client', 'Agent', 'Bank', 'Debtor'];
/**
 * Проверяет, что роль входит в допустимый набор.
 * @throws Error если роль невалидна
 */
function validateRole(role) {
    if (!VALID_ROLES.includes(role)) {
        throw new Error(`role должен быть одним из: ${VALID_ROLES.join(', ')}. Получено: ${role}`);
    }
}
/**
 * Утилиты для работы с ролями в тестах
 *
 * Роль автоматически определяется из конфигурации Playwright проекта.
 */
/**
 * Маппинг ролей на константы пользователей
 */
const roleToConstantsMap = {
    'Admin': test_data_1.users.AdminConst,
    'Client': test_data_1.users.ClientConst,
    'Agent': test_data_1.users.AgentConst,
    'Bank': test_data_1.users.BankConst,
    'Debtor': test_data_1.users.DebtorConst
};
/**
 * Определяет роль из имени проекта Playwright
 * @param testInfo - информация о тесте из Playwright
 * @returns роль пользователя
 */
function getRoleFromProject(testInfo) {
    if (testInfo.project.name.includes('Client'))
        return 'Client';
    if (testInfo.project.name.includes('Agent'))
        return 'Agent';
    if (testInfo.project.name.includes('Bank'))
        return 'Bank';
    return 'Admin';
}
/**
 * Получает константы пользователя на основе роли
 * @param role - роль пользователя
 * @returns константы пользователя
 */
function getUserConstants(role) {
    return roleToConstantsMap[role] || test_data_1.users.AdminConst;
}
/**
 * Маппинг ролей на настройки организации.
 */
const roleToOrganizationSettingsMap = {
    Admin: test_data_1.organizationSettings.admin,
    Client: test_data_1.organizationSettings.client,
    Agent: test_data_1.organizationSettings.agent,
    Bank: test_data_1.organizationSettings.bank,
    Debtor: test_data_1.organizationSettings.debtor,
};
/**
 * Получает настройки организации на основе роли.
 * @param role — роль пользователя
 * @returns настройки организации роли
 */
function getOrganizationSettings(role) {
    return roleToOrganizationSettingsMap[role] || test_data_1.organizationSettings.admin;
}
