"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const assert = require("assert");
const modelSelection_1 = require("./modelSelection");
const mynah_ui_1 = require("@aws/mynah-ui");
/**
 * Tests for modelSelection functionality
 */
describe('modelSelection', () => {
    describe('getModelSelectionChatItem', () => {
        it('should return a chat item with the correct model name', () => {
            const modelName = 'Claude Sonnet 4';
            const chatItem = (0, modelSelection_1.getModelSelectionChatItem)(modelName);
            assert.strictEqual(chatItem.type, mynah_ui_1.ChatItemType.DIRECTIVE);
            assert.strictEqual(chatItem.contentHorizontalAlignment, 'center');
            assert.strictEqual(chatItem.fullWidth, true);
            assert.strictEqual(chatItem.body, `Switched model to ${modelName}`);
        });
    });
    describe('modelUnavailableBanner', () => {
        it('should have the correct properties', () => {
            assert.strictEqual(modelSelection_1.modelUnavailableBanner.messageId, 'model-unavailable-banner');
            assert.ok(modelSelection_1.modelUnavailableBanner.header, 'header should exist');
            assert.strictEqual(modelSelection_1.modelUnavailableBanner.header?.icon, 'warning');
            assert.strictEqual(modelSelection_1.modelUnavailableBanner.header?.iconStatus, 'warning');
            assert.strictEqual(modelSelection_1.modelUnavailableBanner.header?.body, '### Model Unavailable');
            assert.ok(modelSelection_1.modelUnavailableBanner.body?.includes("The model you've selected is experiencing high load"));
            assert.strictEqual(modelSelection_1.modelUnavailableBanner.canBeDismissed, true);
        });
    });
    describe('modelThrottledBanner', () => {
        it('should have the correct properties', () => {
            assert.strictEqual(modelSelection_1.modelThrottledBanner.messageId, 'model-throttled-banner');
            assert.ok(modelSelection_1.modelThrottledBanner.header, 'header should exist');
            assert.strictEqual(modelSelection_1.modelThrottledBanner.header?.icon, 'warning');
            assert.strictEqual(modelSelection_1.modelThrottledBanner.header?.iconStatus, 'warning');
            assert.strictEqual(modelSelection_1.modelThrottledBanner.header?.body, '### Model Unavailable');
            assert.ok(modelSelection_1.modelThrottledBanner.body?.includes('I am experiencing high traffic'));
            assert.strictEqual(modelSelection_1.modelThrottledBanner.canBeDismissed, true);
        });
    });
});
//# sourceMappingURL=modelSelection.test.js.map