Skip to content

Commit

Permalink
Merge pull request #23 from hwbllmnn/fix-add-tests
Browse files Browse the repository at this point in the history
Fix coverage collection and add more tests
  • Loading branch information
hwbllmnn committed Feb 22, 2019
2 parents b3820ba + 214aab1 commit 83e3c3e
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 256 deletions.
250 changes: 0 additions & 250 deletions src/LegendRenderer/LegendRenderer.js

This file was deleted.

69 changes: 67 additions & 2 deletions src/LegendRenderer/LegendRenderer.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/*eslint-env jest*/

import LegendRenderer from './LegendRenderer.js';
import LegendRenderer from './LegendRenderer';
import { select } from 'd3-selection';

describe('LegendRenderer', () => {

Expand Down Expand Up @@ -41,7 +42,7 @@ describe('LegendRenderer', () => {
}],
name: ''
});
expect(config.title).toBe(undefined);
expect(config.title).toBe('');
});

it('will not throw when constructing a rule icon', () => {
Expand All @@ -57,4 +58,68 @@ describe('LegendRenderer', () => {
})).not.toThrow();
});

it('rejects to render a single empty legend item', done => {
const renderer = new LegendRenderer({
size: [0, 0]
});
const dom: any = document.createElement('svg');
const result = renderer.renderLegendItem(select(<SVGSVGElement> dom), {
title: 'Example',
rule: {
name: 'Item 1',
symbolizers: [{
kind: 'Icon'
}]
}
}, [0, 0]);
result.catch(() => {
done();
});
});

it('renders a single non-empty legend item', done => {
const renderer = new LegendRenderer({
size: [0, 0]
});
const dom: any = document.createElement('svg');
const result = renderer.renderLegendItem(select(<SVGSVGElement> dom), {
title: 'Example',
rule: {
name: 'Item 1',
symbolizers: [{
kind: 'Mark',
wellKnownName: 'Circle'
}]
}
}, [0, 0]);
result.then(() => {
expect(dom.querySelector('text').textContent).toBe('Example');
done();
});
});

it('renders legend with a single non-empty legend item', done => {
const renderer = new LegendRenderer({
size: [0, 0],
styles: [{
name: 'Example',
rules: [{
name: 'Item 1',
symbolizers: [{
kind: 'Mark',
wellKnownName: 'Circle'
}]
}]
}]
});
const dom: any = document.createElement('div');
const result: Promise<void> = renderer.render(dom);
result.then(() => {
const texts = dom.querySelectorAll('text');
expect(texts[0].textContent).toBe('Example');
expect(texts[1].textContent).toBe('Item 1');
done();
});
});

});
7 changes: 3 additions & 4 deletions src/LegendRenderer/LegendRenderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -249,8 +249,9 @@ class LegendRenderer {
/**
* Renders the configured legend.
* @param {HTMLElement} parent a node to append the svg to
* @return {Promise<void>} a promise resolving once the legend has finished rendering
*/
render(parent: HTMLElement) {
render(parent: HTMLElement): Promise<void> {
const {
styles,
configs,
Expand All @@ -276,7 +277,7 @@ class LegendRenderer {
const promise = legends.reduce((cur, legend) => {
return cur.then(() => this.renderLegend(legend, svg, position));
}, Promise.resolve());
promise.then(() => {
return promise.then(() => {
const nodes = svg.selectAll('g.legend-item');
this.shortenLabels(nodes, this.config.maxColumnWidth);
if (!this.config.maxColumnHeight) {
Expand All @@ -285,8 +286,6 @@ class LegendRenderer {
.attr('height', position[1]);
}
});

return svg.node();
}

}
Expand Down

0 comments on commit 83e3c3e

Please sign in to comment.