UNPKG

ideogram

Version:

Chromosome visualization for the web

173 lines (130 loc) 5 kB
describe('Ideogram should', function() { var config = {}; d3 = Ideogram.d3; beforeEach(function() { delete window.chrBands; d3.selectAll('div').remove(); config = { organism: 'human', showTools: true, dataDir: '/dist/data/bands/native/' }; }); it('hide gear by default, and show gear on ideogram hover', done => { function callback() { const gear = document.getElementById('gear'); // Gear should be hidden by default assert.equal(gear.style.display, 'none'); // Gear should be hidden by default assert.equal(gear.style.display, 'none'); done(); } config.onLoad = callback; ideogram = new Ideogram(config); }); it('show tools on gear click, and hide tools on outside click', done => { function callback() { // Hover over ideogram, then click gear d3.select('_ideogram').dispatch('mouseover'); const gear = document.getElementById('gear'); gear.click(); // Tools should be shown on gear click const tools = document.getElementById('tools'); assert.equal(tools.style.display, ''); // Tools should hide on clicking outside the tools UI document.getElementById('_ideogramOuterWrap').click(); assert.equal(tools.style.display, 'none'); done(); } config.onLoad = callback; ideogram = new Ideogram(config); }); it('show Download and About tools', done => { function callback() { // Hover over ideogram, then click gear d3.select('_ideogram').dispatch('mouseover'); const gear = document.getElementById('gear'); gear.click(); // Hover over "Download" should show inner panel const downloadTool = document.getElementById('download-tool'); const mouseenterEvent = new Event('mouseenter'); downloadTool.dispatchEvent(mouseenterEvent); const downloadPanel = document.getElementById('download'); assert.isDefined(downloadPanel); // Click on "About" should show modal const aboutTool = document.getElementById('about-tool'); aboutTool.click(); const aboutPanel = document.getElementById('about'); assert.isDefined(aboutPanel); done(); } config.onLoad = callback; ideogram = new Ideogram(config); }); it('download image upon clicking "Download" -> "Image"', done => { function callback() { // Hover over ideogram, then click gear d3.select('_ideogram').dispatch('mouseover'); const gear = document.getElementById('gear'); gear.click(); // Hover over "Download", then click "Image" in inner panel const downloadTool = document.getElementById('download-tool'); const mouseenterEvent = new Event('mouseenter'); downloadTool.dispatchEvent(mouseenterEvent); const downloadImageItem = document.getElementById('download-image'); downloadImageItem.click(); // Briefly wait (100 ms), to account for trivial async setTimeout(function() { const selector = '#_ideo-undisplayed-dl-image-link'; const downloadedDataUrl = document.querySelector(selector).href.length; // Ensure the download link has a non-empty data URL // Implementation details are in downloadPng() in `lib.js`. assert.equal(downloadedDataUrl > 100, true); done(); }, 50); } config.onLoad = callback; ideogram = new Ideogram(config); }); it('download image upon clicking "Download" -> "Annotations"', done => { function callback() { // Set up some mock data this.annotDescriptions = { headers: ['# Test header row 1', 'Test header row 2'], annots: { BRCA1: { ensemblId: 'ENSG00000012048', type: 'mock' } } }; // Hover over ideogram, then click gear d3.select('_ideogram').dispatch('mouseover'); const gear = document.getElementById('gear'); gear.click(); // Hover over "Download", then click "Annotations" in inner panel const downloadTool = document.getElementById('download-tool'); const mouseenterEvent = new Event('mouseenter'); downloadTool.dispatchEvent(mouseenterEvent); const downloadAnnotsItem = document.getElementById('download-annots'); downloadAnnotsItem.click(); // Briefly wait (100 ms), to account for trivial async setTimeout(function() { const selector = '#_ideo-undisplayed-dl-annots-link'; const downloadedDataUrl = document.querySelector(selector).href.length; // Ensure the download link has a non-empty data URL // Implementation details are in downloadPng() in `lib.js`. assert.equal(downloadedDataUrl > 100, true); done(); }, 50); } config.onLoad = callback; config.annotations = [{ name: 'BRCA1', chr: '17', start: 43044294, stop: 43125482 }]; ideogram = new Ideogram(config); }); });