189 lines
6.7 KiB
JavaScript
189 lines
6.7 KiB
JavaScript
import {Panel} from '../../helix/javascript/array_summary/panel';
|
|
import Colors from '../../helix/javascript/array_summary/colors';
|
|
|
|
describe("A Panel", function () {
|
|
var panelLocation = {x: 10, y: 20, width: 2, height: 1.5};
|
|
var subject;
|
|
var shapeSpy;
|
|
var panelData;
|
|
var graphicsSpy;
|
|
|
|
beforeEach(function () {
|
|
var graphicsMethods = ["setStrokeStyle", "beginStroke", "beginFill", "drawRect",
|
|
"endStroke", "endFill", "closePath", "moveTo", "lineTo"];
|
|
graphicsSpy = jasmine.createSpyObj("graphics", graphicsMethods);
|
|
graphicsMethods.forEach(function (method) {
|
|
graphicsSpy[method].and.returnValue(graphicsSpy);
|
|
});
|
|
shapeSpy = {
|
|
dispatchEvent: jasmine.createSpy("dispatchEvent"),
|
|
graphics: graphicsSpy
|
|
};
|
|
spyOn(createjs, "Shape").and.returnValue(shapeSpy);
|
|
panelData = {
|
|
x: 1,
|
|
y: 2,
|
|
width: 2,
|
|
height: 1.5,
|
|
data: {
|
|
ballast: 20,
|
|
wind_anchors: 2,
|
|
seismic_anchors: 1,
|
|
wind_zones: 'C',
|
|
cross_trays: 1,
|
|
link_trays: 1,
|
|
panel_id: 1,
|
|
subarray: 5,
|
|
panel_type: 4,
|
|
psf: 3.2379
|
|
}
|
|
};
|
|
subject = new Panel(panelData);
|
|
});
|
|
|
|
it("locates itself at the panel coordinates", function () {
|
|
expect(subject.x).toEqual(panelLocation.x - subject.width / 2);
|
|
expect(subject.y).toEqual(panelLocation.y - subject.height / 2);
|
|
});
|
|
|
|
it("has a bounds based on the width and height given", function () {
|
|
expect(graphicsSpy.drawRect).toHaveBeenCalledWith(0, 0, 20, 15);
|
|
});
|
|
|
|
it("has a single shape child", function () {
|
|
expect(subject.children).toContain(shapeSpy);
|
|
});
|
|
|
|
describe("background color with anchors", function () {
|
|
it("shows a panel with no anchors in navy", function () {
|
|
panelData.data.seismic_anchors = 0;
|
|
panelData.data.wind_anchors = 0;
|
|
|
|
subject = new Panel(panelData);
|
|
expect(graphicsSpy.beginFill).toHaveBeenCalledWith(Colors.default_background);
|
|
});
|
|
|
|
it("shows the seismic anchors in yellow", function () {
|
|
panelData.data.seismic_anchors = 2;
|
|
panelData.data.wind_anchors = 0;
|
|
|
|
subject = new Panel(panelData);
|
|
expect(graphicsSpy.beginFill).toHaveBeenCalledWith(Colors.seismic_background);
|
|
});
|
|
|
|
it("shows the wind anchors in light-blue", function () {
|
|
panelData.data.seismic_anchors = 0;
|
|
panelData.data.wind_anchors = 1;
|
|
|
|
subject = new Panel(panelData);
|
|
expect(graphicsSpy.beginFill).toHaveBeenCalledWith(Colors.wind_background);
|
|
});
|
|
|
|
it("shows a panel with both wind and seismic anchors with a split color", function () {
|
|
panelData.data.seismic_anchors = 1;
|
|
panelData.data.wind_anchors = 2;
|
|
|
|
subject = new Panel(panelData);
|
|
expect(graphicsSpy.beginFill).toHaveBeenCalledWith(Colors.wind_background);
|
|
expect(graphicsSpy.beginFill).toHaveBeenCalledWith(Colors.seismic_background);
|
|
});
|
|
});
|
|
|
|
describe("selecting the panel", function () {
|
|
beforeEach(function () {
|
|
subject.select();
|
|
});
|
|
|
|
it("marks the panel as selected", function () {
|
|
expect(subject.selected).toBeTruthy();
|
|
});
|
|
|
|
it("changes the background color", function () {
|
|
expect(graphicsSpy.beginFill).toHaveBeenCalledWith('white');
|
|
});
|
|
});
|
|
|
|
describe("changing the overlay", function () {
|
|
describe("to ANCHOR", function () {
|
|
beforeEach(function () {
|
|
subject.setOverlay("ANCHOR");
|
|
});
|
|
|
|
it("shows the ballast information", function () {
|
|
expect(subject.children).toContain(subject.textOverlays.ballast);
|
|
expect(subject.textOverlays.ballast.text).toEqual(20);
|
|
});
|
|
|
|
it("shows the sum of the anchor counts", function () {
|
|
expect(subject.children).toContain(subject.textOverlays.anchors);
|
|
expect(subject.textOverlays.anchors.text).toEqual(3);
|
|
});
|
|
|
|
it("does not show the other information", function () {
|
|
expect(subject.textOverlays.hasOwnProperty('panel_id')).toBeFalsy();
|
|
expect(subject.textOverlays.hasOwnProperty('wind_anchors')).toBeFalsy();
|
|
expect(subject.textOverlays.hasOwnProperty('seismic_anchors')).toBeFalsy();
|
|
expect(subject.textOverlays.hasOwnProperty('wind_zones')).toBeFalsy();
|
|
expect(subject.textOverlays.hasOwnProperty('cross_trays')).toBeFalsy();
|
|
expect(subject.textOverlays.hasOwnProperty('link_trays')).toBeFalsy();
|
|
expect(subject.textOverlays.hasOwnProperty('subarray')).toBeFalsy();
|
|
expect(subject.textOverlays.hasOwnProperty('psf')).toBeFalsy();
|
|
expect(subject.textOverlays.hasOwnProperty('panel_type')).toBeFalsy();
|
|
});
|
|
});
|
|
|
|
describe("to ALL", function () {
|
|
beforeEach(function () {
|
|
subject.setOverlay("ALL");
|
|
});
|
|
|
|
it("shows the panel_id information", function () {
|
|
expect(subject.textOverlays.panel_id.text).toEqual(1);
|
|
expect(subject.children).toContain(subject.textOverlays.panel_id);
|
|
});
|
|
|
|
it("shows the ballast information", function () {
|
|
expect(subject.children).toContain(subject.textOverlays.ballast);
|
|
expect(subject.textOverlays.ballast.text).toEqual(20);
|
|
});
|
|
|
|
it("shows the anchor information", function () {
|
|
expect(subject.children).toContain(subject.textOverlays.wind_anchors);
|
|
expect(subject.children).toContain(subject.textOverlays.seismic_anchors);
|
|
expect(subject.textOverlays.wind_anchors.text).toEqual(2);
|
|
expect(subject.textOverlays.seismic_anchors.text).toEqual('S');
|
|
});
|
|
|
|
it("shows the wind zone information", function () {
|
|
expect(subject.textOverlays.wind_zones.text).toEqual('C');
|
|
expect(subject.children).toContain(subject.textOverlays.wind_zones);
|
|
});
|
|
|
|
it("shows the cross trays information", function () {
|
|
expect(subject.textOverlays.cross_trays.text).toEqual(1);
|
|
expect(subject.children).toContain(subject.textOverlays.cross_trays);
|
|
});
|
|
|
|
it("shows the link trays information", function () {
|
|
expect(subject.textOverlays.link_trays.text).toEqual(1);
|
|
expect(subject.children).toContain(subject.textOverlays.link_trays);
|
|
});
|
|
|
|
it("shows the psf information", function () {
|
|
expect(subject.textOverlays.psf.text).toEqual('3.24');
|
|
expect(subject.children).toContain(subject.textOverlays.link_trays);
|
|
});
|
|
|
|
it("shows the subarray information", function () {
|
|
expect(subject.textOverlays.subarray.text).toEqual(5);
|
|
expect(subject.children).toContain(subject.textOverlays.link_trays);
|
|
});
|
|
|
|
it("shows the panel type information", function () {
|
|
expect(subject.textOverlays.panel_type.text).toEqual(4);
|
|
expect(subject.children).toContain(subject.textOverlays.panel_type);
|
|
});
|
|
});
|
|
});
|
|
});
|