Administrator
2022-09-14 58d006e05dcf2a20d0ec5367dd03d66a61db6849
提交 | 用户 | 时间
58d006 1 describe("Creating event listeners", function() {
A 2   var map_events, marker, line, polygon, callbacks_native, callbacks_gmaps;
3   var added_marker, added_line, added_polygon;
4   var marker_added_event, marker_removed_event,
5     polyline_added_event, polyline_removed_event,
6     polygon_added_event, polygon_removed_event;
7
8   beforeEach(function() {
9     map_events = map_events || new GMaps({
10       el : '#events',
11       lat : -12.0433,
12       lng : -77.0283,
13       zoom : 12
14     });
15
16     marker = marker || map_events.addMarker({
17       lat : -12.0433,
18       lng : -77.0283,
19       title : 'New marker'
20     });
21
22     line = line || map_events.drawPolyline({
23       path : [[-12.0440, -77.0247], [-12.0544, -77.0302], [-12.0551, -77.0303], [-12.0759, -77.0276], [-12.0763, -77.0279], [-12.0768, -77.0289], [-12.0885, -77.0241], [-12.0908, -77.0227]],
24       strokeColor : '#131540',
25       strokeOpacity : 0.6,
26       strokeWeight : 6
27     });
28
29     polygon = polygon || map_events.drawPolygon({
30       paths : [[-12.0403,-77.0337],[-12.0402,-77.0399],[-12.0500,-77.0244],[-12.0448,-77.0215]],
31       strokeColor : '#25D359',
32       strokeOpacity : 1,
33       strokeWeight : 3,
34       fillColor : '#25D359',
35       fillOpacity : 0.6
36     });
37   });
38
39   describe("for google.maps events", function() {
40     beforeEach(function() {
41       callbacks_native = callbacks_native || {
42         map : {
43           onclick : function() {
44             console.log('callbacks_native.map.onclick');
45           }
46         },
47         marker : {
48           onclick : function() {
49             console.log('callbacks_native.marker.onclick');
50           }
51         },
52         line : {
53           onclick : function() {
54             console.log('callbacks_native.line.onclick');
55           }
56         },
57         polygon : {
58           onclick : function() {
59             console.log('callbacks_native.polygon.onclick');
60           }
61         }
62       };
63
64       spyOn(callbacks_native.map, 'onclick').andCallThrough();
65       spyOn(callbacks_native.marker, 'onclick').andCallThrough();
66       spyOn(callbacks_native.line, 'onclick').andCallThrough();
67       spyOn(callbacks_native.polygon, 'onclick').andCallThrough();
68     });
69
70     describe("To a map", function() {
71       it("should add the listener to the listeners collection", function() {
72         var click_event = GMaps.on('click', map_events.map, callbacks_native.map.onclick);
73
74         expect(map_events.map['__e3_']['click'][click_event['id']]).toBeDefined();
75         expect(map_events.map['__e3_']['click'][click_event['id']]).toEqual(click_event);
76       });
77     });
78
79     describe("To a marker", function() {
80       it("should add the listener to the listeners collection", function() {
81         var click_event = GMaps.on('click', marker, callbacks_native.marker.onclick);
82
83         expect(marker['__e3_']['click'][click_event['id']]).toBeDefined();
84         expect(marker['__e3_']['click'][click_event['id']]).toEqual(click_event);
85       });
86     });
87
88     describe("To a line", function() {
89       it("should add the listener to the listeners collection", function() {
90         var click_event = GMaps.on('click', line, callbacks_native.line.onclick);
91
92         expect(line['__e3_']['click'][click_event['id']]).toBeDefined();
93         expect(line['__e3_']['click'][click_event['id']]).toEqual(click_event);
94       });
95     });
96
97     describe("To a polygon", function() {
98       it("should add the listener to the listeners collection", function() {
99         var click_event = GMaps.on('click', polygon, callbacks_native.polygon.onclick);
100
101         expect(polygon['__e3_']['click'][click_event['id']]).toBeDefined();
102         expect(polygon['__e3_']['click'][click_event['id']]).toEqual(click_event);
103       });
104     });
105   });
106
107   describe("for GMaps events", function() {
108     beforeEach(function() {
109       callbacks_gmaps = {
110         marker_added : function() {
111           console.log('callbacks_gmaps.marker_added called');
112         },
113         marker_removed : function() {
114           console.log('callbacks_gmaps.marker_removed called');
115         },
116         polyline_added : function() {
117           console.log('callbacks_gmaps.polyline_added called');
118         },
119         polyline_removed : function() {
120           console.log('callbacks_gmaps.polyline_removed called');
121         },
122         polygon_added : function() {
123           console.log('callbacks_gmaps.polygon_added called');
124         },
125         polygon_removed : function() {
126           console.log('callbacks_gmaps.polygon_removed called');
127         }
128       };
129
130       spyOn(callbacks_gmaps, 'marker_added').andCallThrough();
131       spyOn(callbacks_gmaps, 'marker_removed').andCallThrough();
132       spyOn(callbacks_gmaps, 'polyline_added').andCallThrough();
133       spyOn(callbacks_gmaps, 'polyline_removed').andCallThrough();
134       spyOn(callbacks_gmaps, 'polygon_added').andCallThrough();
135       spyOn(callbacks_gmaps, 'polygon_removed').andCallThrough();
136     });
137
138     describe("#marker_added", function() {
139       beforeEach(function() {
140         marker_added_event = GMaps.on('marker_added', map_events, callbacks_gmaps.marker_added);
141       });
142
143       it("should add the listener to the listeners collection", function() {
144         expect(map_events.registered_events['marker_added'][0]).toEqual(marker_added_event);
145       });
146
147       it("should trigger the listener created", function() {
148         added_marker = added_marker || map_events.addMarker({
149           lat : -12.0433,
150           lng : -77.0273,
151           title : 'New marker'
152         });
153
154         expect(callbacks_gmaps.marker_added).toHaveBeenCalled();
155       });
156
157       afterEach(function() {
158         GMaps.off('marker_added', map_events);
159       });
160     });
161
162     describe("#marker_removed", function() {
163       beforeEach(function() {
164         marker_removed_event = GMaps.on('marker_removed', map_events, callbacks_gmaps.marker_removed);
165       });
166
167       it("should add the listener to the listeners collection", function() {
168         expect(map_events.registered_events['marker_removed'][0]).toEqual(marker_removed_event);
169       });
170
171       it("should trigger the listener created", function() {
172         map_events.removeMarker(added_marker);
173
174         expect(callbacks_gmaps.marker_removed).toHaveBeenCalled();
175       });
176
177       afterEach(function() {
178         GMaps.off('marker_removed', map_events);
179       });
180     });
181
182     describe("#polyline_added", function() {
183       beforeEach(function() {
184         polyline_added_event = GMaps.on('polyline_added', map_events, callbacks_gmaps.polyline_added);
185       });
186
187       it("should add the listener to the listeners collection", function() {
188         expect(map_events.registered_events['polyline_added'][0]).toEqual(polyline_added_event);
189       });
190
191       it("should trigger the listener created", function() {
192         added_line = added_line || map_events.drawPolyline({
193           path : [[-12.0420, -77.0247], [-12.0544, -77.0102], [-12.0751, -77.0903], [-12.0759, -77.0276], [-12.0763, -77.0279], [-12.0768, -77.0289], [-12.0885, -77.0241], [-12.0908, -77.0227]],
194           strokeColor : '#271804',
195           strokeOpacity : 0.1,
196           strokeWeight : 1
197         });
198
199         expect(callbacks_gmaps.polyline_added).toHaveBeenCalled();
200       });
201
202       afterEach(function() {
203         GMaps.off('polyline_added', map_events);
204       });
205     });
206
207     describe("#polyline_removed", function() {
208       beforeEach(function() {
209         polyline_removed_event = GMaps.on('polyline_removed', map_events, callbacks_gmaps.polyline_removed);
210       });
211
212       it("should add the listener to the listeners collection", function() {
213         expect(map_events.registered_events['polyline_removed'][0]).toEqual(polyline_removed_event);
214       });
215
216       it("should trigger the listener created", function() {
217         map_events.removePolyline(added_line);
218
219         expect(callbacks_gmaps.polyline_removed).toHaveBeenCalled();
220       });
221
222       afterEach(function() {
223         GMaps.off('polyline_removed', map_events);
224       });
225     });
226
227     describe("#polygon_added", function() {
228       beforeEach(function() {
229         polygon_added_event = GMaps.on('polygon_added', map_events, callbacks_gmaps.polygon_added);
230       });
231
232       it("should add the listener to the listeners collection", function() {
233         expect(map_events.registered_events['polygon_added'][0]).toEqual(polygon_added_event);
234       });
235
236       it("should trigger the listener created", function() {
237         added_polygon = added_polygon || map_events.drawPolygon({
238           paths : [[-12.0203,-77.0137],[-12.0402,-77.0109],[-12.0500,-77.0144],[-12.0848,-77.0115]],
239           strokeColor : '#D32559',
240           strokeOpacity : 0.7,
241           strokeWeight : 8,
242           fillColor : '#D32559',
243           fillOpacity : 0.6
244         });
245
246         expect(callbacks_gmaps.polygon_added).toHaveBeenCalled();
247       });
248
249       afterEach(function() {
250         GMaps.off('polygon_added', map_events);
251       });
252     });
253
254     describe("#polygon_removed", function() {
255       beforeEach(function() {
256         polygon_removed_event = GMaps.on('polygon_removed', map_events, callbacks_gmaps.polygon_removed);
257       });
258
259       it("should add the listener to the listeners collection", function() {
260         expect(map_events.registered_events['polygon_removed'][0]).toEqual(polygon_removed_event);
261       });
262
263       it("should trigger the listener created", function() {
264         map_events.removePolygon(added_polygon);
265
266         expect(callbacks_gmaps.polygon_removed).toHaveBeenCalled();
267       });
268
269       afterEach(function() {
270         GMaps.off('polygon_removed', map_events);
271       });
272     });
273   });
274 });