"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 faker_1 = __importDefault(require("faker"));
const test_utilities_1 = require("../../test-utilities");
const Icon_1 = require("../Icon");
const _1 = require(".");
const defaultProps = {
    description: faker_1.default.lorem.words(2),
};
describe('<Thumbnail />', () => {
    describe('badge', () => {
        it('renders a badge when provided as a string', () => {
            const badge = 'New';
            const thumbnail = test_utilities_1.mountWithContext(<_1.Thumbnail {...defaultProps} badge={badge}/>);
            expect(thumbnail).toContainReactComponent('span', {
                children: badge,
            });
        });
        it('renders a badge when provided as a number', () => {
            const badge = 1;
            const thumbnail = test_utilities_1.mountWithContext(<_1.Thumbnail {...defaultProps} badge={badge}/>);
            expect(thumbnail).toContainReactComponent('span', {
                children: badge,
            });
        });
    });
    describe('source & description', () => {
        it('renders an <img /> with a src and alt when provided with source and description', () => {
            const source = faker_1.default.internet.url();
            const description = faker_1.default.lorem.words(2);
            const thumbnail = test_utilities_1.mountWithContext(<_1.Thumbnail source={source} description={description}/>);
            expect(thumbnail).toContainReactComponent('img', {
                src: source,
                alt: description,
            });
        });
        it('renders a placeholder Icon if source is not provided', () => {
            const thumbnail = test_utilities_1.mountWithContext(<_1.Thumbnail {...defaultProps}/>);
            expect(thumbnail).toContainReactComponent(Icon_1.Icon, {
                source: 'camera',
            });
        });
    });
    describe('sources', () => {
        it('renders a <img /> with srcset when provided with sources', () => {
            const source = faker_1.default.internet.url();
            const sources = [
                { source: faker_1.default.internet.url(), resolution: 1 },
                { source: faker_1.default.internet.url(), resolution: 2 },
                { source: faker_1.default.internet.url(), resolution: 3 },
            ];
            const thumbnail = test_utilities_1.mountWithContext(<_1.Thumbnail {...defaultProps} source={source} sources={sources}/>);
            expect(thumbnail).toContainReactComponent('img', {
                srcSet: sources
                    .map(({ source, resolution }) => `${source} ${resolution}x`)
                    .join(', '),
            });
        });
        it('does not render a <img /> with srcset if sources are undefined', () => {
            const thumbnail = test_utilities_1.mountWithContext(<_1.Thumbnail {...defaultProps}/>);
            expect(thumbnail).not.toContainReactComponent('img', {
                srcSet: expect.anything(),
            });
        });
    });
});
