"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const jest_dom_mocks_1 = require("@shopify/jest-dom-mocks");
const test_utilities_1 = require("../../test-utilities");
const Icon_1 = require("../Icon");
const Spinner_1 = require("./Spinner");
describe('<Spinner />', () => {
    beforeEach(() => {
        jest_dom_mocks_1.matchMedia.mock();
    });
    afterEach(() => {
        jest_dom_mocks_1.matchMedia.restore();
    });
    it('removes the Spinner when user prefers reduced motion and that accessible content is provided', () => {
        jest_dom_mocks_1.matchMedia.setMedia(() => ({ matches: true }));
        const spinner = test_utilities_1.mountWithContext(<Spinner_1.Spinner accessibilityLabel="Loading"/>);
        expect(spinner).not.toContainReactComponent('div', {
            className: 'Spinner',
        });
    });
    it('renders an Icon when user prefers motion', () => {
        jest_dom_mocks_1.matchMedia.setMedia(() => ({ matches: false }));
        const spinner = test_utilities_1.mountWithContext(<Spinner_1.Spinner />);
        expect(spinner).toContainReactComponent(Icon_1.Icon);
    });
    describe('accessibilityLabel', () => {
        it('renders the accessible label if user prefers reduced motion', () => {
            jest_dom_mocks_1.matchMedia.setMedia(() => ({ matches: true }));
            const accessibleText = 'Loading';
            const spinner = test_utilities_1.mountWithContext(<Spinner_1.Spinner accessibilityLabel={accessibleText}/>);
            expect(spinner).toContainReactText(accessibleText);
        });
        it('does not renders the accessible label if user prefers motion', () => {
            jest_dom_mocks_1.matchMedia.setMedia(() => ({ matches: false }));
            const accessibleText = 'Loading';
            const spinner = test_utilities_1.mountWithContext(<Spinner_1.Spinner accessibilityLabel={accessibleText}/>);
            expect(spinner).not.toContainReactText(accessibleText);
        });
    });
    describe('color', () => {
        it('renders an Icon with "accent" color by default', () => {
            const spinner = test_utilities_1.mountWithContext(<Spinner_1.Spinner />);
            expect(spinner).toContainReactComponent(Icon_1.Icon, {
                appearance: 'accent',
            });
        });
        it('renders an Icon with with no color prop if "inherit" is passed', () => {
            const spinner = test_utilities_1.mountWithContext(<Spinner_1.Spinner color="inherit"/>);
            expect(spinner).toContainReactComponent(Icon_1.Icon, { appearance: undefined });
        });
    });
});
