adding some more tests

This commit is contained in:
Mike Adair
2012-06-22 13:05:18 -04:00
parent 5dc156995a
commit e7240062b3
2 changed files with 91 additions and 37 deletions

View File

@@ -155,12 +155,14 @@ ol.Popup.prototype.generateContent_ = function() {
return this.content_; return this.content_;
} else { } else {
if ( goog.isDefAndNotNull(this.template_) && if ( goog.isDefAndNotNull(this.template_) &&
goog.isDefAndNotNull(this.anchor_) &&
(this.anchor_ instanceof ol.Feature)) { (this.anchor_ instanceof ol.Feature)) {
//set content from feature attributes on the template //set content from feature attributes on the template
//TODO: this.setContent(template.apply(this.anchor.getAttributes())); //TODO: this.setContent(template.apply(this.anchor_.getAttributes()));
return this.template_; //stub to return something return this.template_; //stub to return something
} else { } else {
return '<br>'; ol.error('ol.Popup unabale to generate any content');
return '<p>no content</p>'
} }
} }
}; };
@@ -229,6 +231,12 @@ ol.Popup.prototype.setAnchorOffset_ = function() {
return; return;
} }
if (!goog.isDefAndNotNull(this.anchor_)) {
//must have an anchor when trying to set the position
ol.error("ol.Popup must have an anchor to set the position");
return;
}
//position the element //position the element
if (this.anchor_ instanceof ol.Feature) { if (this.anchor_ instanceof ol.Feature) {
this.pos_ = this.anchor_.getGeometry().getCentroid(); this.pos_ = this.anchor_.getGeometry().getCentroid();

View File

@@ -95,56 +95,90 @@ describe("ol.popup", function() {
it("should be able to set the placement top of the location", function() { it("should be able to set the placement top of the location", function() {
var map = ol.map(); var container = document.createElement('div');
container.setAttribute('id', 'map');
document.documentElement.appendChild(container);
var map = ol.map({renderTo: 'map'});
var popup = ol.popup({ var popup = ol.popup({
map: map, map: map,
anchor: ol.loc([10,20]), anchor: ol.loc([10,20]),
placement: 'top' placement: 'top',
}); content: 'foo bar'
expect(popup).toBeA(ol.Popup);
//expect?
});
it("should be able to set the placement right of the location", function() {
var map = ol.map();
var popup = ol.popup({
map: map,
anchor: ol.loc([10,20]),
placement: 'right'
});
expect(popup).toBeA(ol.Popup);
//expect?
});
/*
it("should be able to open and close a popup", function() {
var map = ol.map();
var popup = ol.popup({
map: map,
anchor: ol.loc([10,20]),
content: 'test'
}); });
expect(popup).toBeA(ol.Popup); expect(popup).toBeA(ol.Popup);
popup.open(); popup.open();
var elems = goog.dom.getElementsByClass('ol-popup'); var elems = document.getElementsByClassName('ol-popup-top');
expect(elems.length).toBe(1); expect(elems.length).toBe(1);
expect(elems[0].innerHTML.indexOf('test')).toBe(0);
popup.close(); popup.close();
//expect(popup.container()).toBeNull(); elems = document.getElementsByClassName('ol-popup-top');
expect(elems.length).toBe(0);
map.destroy();
document.documentElement.removeChild(container);
});
it("should be able to open and close a popup", function() {
var container = document.createElement('div');
container.setAttribute('id', 'map');
document.documentElement.appendChild(container);
var map = ol.map({renderTo: 'map'});
var popup = ol.popup({
map: map,
anchor: ol.loc([10,20]),
content: 'foo bar'
});
expect(popup).toBeA(ol.Popup);
popup.open();
var elems = document.getElementsByClassName('ol-popup');
expect(elems.length).toBe(1);
popup.close();
elems = document.getElementsByClassName('ol-popup');
expect(elems.length).toBe(0);
map.destroy();
document.documentElement.removeChild(container);
});
it("should result in an error to open a popup without an anchor or content", function() {
var container = document.createElement('div');
container.setAttribute('id', 'map');
document.documentElement.appendChild(container);
var map = ol.map({renderTo: 'map'});
var popup = ol.popup({
map: map
});
expect(popup).toBeA(ol.Popup);
expect(function(){popup.open()}).toThrow();
popup.content('foo = bar');
expect(function(){popup.open()}).toThrow();
popup.anchor(ol.loc([10,20]));
expect(function(){popup.open()}).not.toThrow();
popup.close();
map.destroy();
document.documentElement.removeChild(container);
}); });
it("should be able to open and close a popup with a feature argument", function() { it("should be able to open and close a popup with a feature argument", function() {
var container = document.createElement('div');
container.setAttribute('id', 'map');
document.documentElement.appendChild(container);
var map = ol.map({renderTo: 'map'});
var point = ol.geom.point([21, 4]); var point = ol.geom.point([21, 4]);
var feat = ol.feature().geometry(point).set('name','foo'); var feat = ol.feature().geometry(point).set('name','foo');
var map = ol.map();
var popup = ol.popup({ var popup = ol.popup({
map: map, map: map,
template: '<p>{{name}}</p>' template: '<p>{{name}}</p>'
@@ -156,13 +190,25 @@ describe("ol.popup", function() {
expect(popup.anchor()).toBeA(ol.Feature); expect(popup.anchor()).toBeA(ol.Feature);
expect(popup.anchor().geometry().x()).toBe(21); expect(popup.anchor().geometry().x()).toBe(21);
expect(popup.anchor().geometry().y()).toBe(4); expect(popup.anchor().geometry().y()).toBe(4);
//expect? var elems = document.getElementsByClassName('ol-popup');
expect(elems.length).toBe(1);
expect(elems[0].innerHTML).toContain('name'); //TODO check for template replacement when implemented
feat.set('name','bar');
popup.open(feat)
expect(elems[0].innerHTML).toContain('name'); //TODO check for template replacement when implemented
popup.content('testing');
popup.open(feat)
expect(elems[0].innerHTML).toContain('testing'); //TODO check for template replacement when implemented
popup.close(); popup.close();
//expect? map.destroy();
document.documentElement.removeChild(container);
}); });
/*
it("should be able to open with a new feature and the popup updates", function() { it("should be able to open with a new feature and the popup updates", function() {
var point = ol.geom.point([21, 4]); var point = ol.geom.point([21, 4]);