blob: eb21f2ad9d7e96f9ea8a76f3233e9886dd733e38 [file] [log] [blame]
import './index';
import { $, $$ } from 'common-sk/modules/dom';
import { eventPromise, setUpElementUnderTest } from '../../../infra-sk/modules/test_util';
const aDigest = '6246b773851984c726cb2e1cb13510c2';
const bDigest = '99c58c7002073346ff55f446d47d6311';
describe('image-compare-sk', () => {
const newInstance = setUpElementUnderTest('image-compare-sk');
let imageCompareSk;
beforeEach(() => imageCompareSk = newInstance());
describe('layout with right and left', () => {
beforeEach(() => {
imageCompareSk.left = {
digest: aDigest,
title: 'a digest title',
detail: 'example.com#aDigest',
};
imageCompareSk.right = {
digest: bDigest,
title: 'the other image',
detail: 'example.com#bDigest',
};
});
it('has three images (left, diff, right) with a zoom button', () => {
const images = $('img', imageCompareSk);
expect(images.length).to.equal(3);
const zBtn = $$('button.zoom_btn');
expect(zBtn.hidden).to.be.false;
});
it('captions the images with the respective links', () => {
const captions = $('figcaption a', imageCompareSk);
expect(captions.length).to.equal(2);
const captionsText = captions.map((c) => c.textContent);
const captionsHref = captions.map((c) => c.href.substring(c.href.lastIndexOf('/')));
expect(captionsText).to.contain('a digest title');
expect(captionsText).to.contain('the other image');
expect(captionsHref).to.contain('/example.com#aDigest');
expect(captionsHref).to.contain('/example.com#bDigest');
});
it('fires events when the zoom dialog is opened and closed', async () => {
expect($$('multi-zoom-sk', imageCompareSk)).to.be.null; // not rendered at first
const openPromise = eventPromise('zoom-dialog-opened');
$$('button.zoom_btn', imageCompareSk).click();
await openPromise;
expect($$('multi-zoom-sk', imageCompareSk)).to.not.be.null; // element should be there now.
const closePromise = eventPromise('zoom-dialog-closed');
$$('button.close_btn', imageCompareSk).click();
await closePromise;
expect($$('multi-zoom-sk', imageCompareSk)).to.be.null; // it should be removed from the DOM.
});
});
describe('layout with just left', () => {
beforeEach(() => {
imageCompareSk.left = {
src: aDigest,
title: 'a digest title',
detail: 'example.com#aDigest',
};
});
it('has one image and no zoom button', () => {
const images = $('img', imageCompareSk);
expect(images.length).to.equal(1);
const zBtn = $$('button.zoom_btn', imageCompareSk);
expect(zBtn.hidden).to.be.true;
});
});
});