1111
1212namespace Symfony \UX \Map \Bridge \Leaflet \Tests ;
1313
14+ use Symfony \UX \Map \Bridge \Google \Renderer \GoogleRenderer ;
1415use Symfony \UX \Map \Bridge \Leaflet \Renderer \LeafletRenderer ;
1516use Symfony \UX \Map \Icon \Icon ;
17+ use Symfony \UX \Map \Icon \UxIconRenderer ;
1618use Symfony \UX \Map \InfoWindow ;
1719use Symfony \UX \Map \Map ;
1820use Symfony \UX \Map \Marker ;
@@ -31,24 +33,25 @@ public function provideTestRenderMap(): iterable
3133 ->zoom (12 );
3234
3335 $ marker1 = new Marker (position: new Point (48.8566 , 2.3522 ), title: 'Paris ' , id: 'marker1 ' );
34- $ marker2 = new Marker (position: new Point (48.8566 , 2.3522 ), title: 'Lyon ' , infoWindow: new InfoWindow (content: 'Lyon ' ), id: 'marker2 ' , icon: Icon:: svg (html: ' <svg></svg> ' ) );
36+ $ marker2 = new Marker (position: new Point (48.8566 , 2.3522 ), title: 'Lyon ' , infoWindow: new InfoWindow (content: 'Lyon ' ), id: 'marker2 ' );
3537 $ marker3 = new Marker (position: new Point (45.8566 , 2.3522 ), title: 'Dijon ' , id: 'marker3 ' );
3638
3739 yield 'simple map ' => [
3840 'expected_render ' => '<div data-controller="symfony--ux-leaflet-map--map" data-symfony--ux-leaflet-map--map-provider-options-value="{}" data-symfony--ux-leaflet-map--map-center-value="{"lat":48.8566,"lng":2.3522}" data-symfony--ux-leaflet-map--map-zoom-value="12" data-symfony--ux-leaflet-map--map-fit-bounds-to-markers-value="false" data-symfony--ux-leaflet-map--map-options-value="{"tileLayer":{"url":"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png","attribution":"\u00a9 <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>","options":[]},"@provider":"leaflet"}" data-symfony--ux-leaflet-map--map-markers-value="[]" data-symfony--ux-leaflet-map--map-polygons-value="[]" data-symfony--ux-leaflet-map--map-polylines-value="[]"></div> ' ,
39- 'renderer ' => new LeafletRenderer (new StimulusHelper (null )),
41+ 'renderer ' => new LeafletRenderer (new StimulusHelper (null ), new UxIconRenderer ( null ) ),
4042 'map ' => (clone $ map ),
4143 ];
4244
4345 yield 'with custom attributes ' => [
4446 'expected_render ' => '<div data-controller="my-custom-controller symfony--ux-leaflet-map--map" data-symfony--ux-leaflet-map--map-provider-options-value="{}" data-symfony--ux-leaflet-map--map-center-value="{"lat":48.8566,"lng":2.3522}" data-symfony--ux-leaflet-map--map-zoom-value="12" data-symfony--ux-leaflet-map--map-fit-bounds-to-markers-value="false" data-symfony--ux-leaflet-map--map-options-value="{"tileLayer":{"url":"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png","attribution":"\u00a9 <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>","options":[]},"@provider":"leaflet"}" data-symfony--ux-leaflet-map--map-markers-value="[]" data-symfony--ux-leaflet-map--map-polygons-value="[]" data-symfony--ux-leaflet-map--map-polylines-value="[]" class="map"></div> ' ,
45- 'renderer ' => new LeafletRenderer (new StimulusHelper (null )),
47+ 'renderer ' => new LeafletRenderer (new StimulusHelper (null ), new UxIconRenderer ( null ) ),
4648 'map ' => (clone $ map ),
4749 'attributes ' => ['data-controller ' => 'my-custom-controller ' , 'class ' => 'map ' ],
4850 ];
51+
4952 yield 'with markers and infoWindows ' => [
5053 'expected_render ' => '<div data-controller="symfony--ux-leaflet-map--map" data-symfony--ux-leaflet-map--map-provider-options-value="{}" data-symfony--ux-leaflet-map--map-center-value="{"lat":48.8566,"lng":2.3522}" data-symfony--ux-leaflet-map--map-zoom-value="12" data-symfony--ux-leaflet-map--map-fit-bounds-to-markers-value="false" data-symfony--ux-leaflet-map--map-options-value="{"tileLayer":{"url":"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png","attribution":"\u00a9 <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>","options":[]},"@provider":"leaflet"}" data-symfony--ux-leaflet-map--map-markers-value="[{"position":{"lat":48.8566,"lng":2.3522},"title":"Paris","infoWindow":null,"icon":null,"extra":[],"id":"marker1","@id":"872feba9ebf3905d"},{"position":{"lat":48.8566,"lng":2.3522},"title":"Lyon","infoWindow":{"headerContent":null,"content":"Lyon","position":null,"opened":false,"autoClose":true,"extra":[]},"icon":null,"extra":[],"id":null,"@id":"bce206d73dc5c164"}]" data-symfony--ux-leaflet-map--map-polygons-value="[]" data-symfony--ux-leaflet-map--map-polylines-value="[]"></div> ' ,
51- 'renderer ' => new LeafletRenderer (new StimulusHelper (null )),
54+ 'renderer ' => new LeafletRenderer (new StimulusHelper (null ), new UxIconRenderer ( null ) ),
5255 'map ' => (new Map ())
5356 ->center (new Point (48.8566 , 2.3522 ))
5457 ->zoom (12 )
@@ -58,7 +61,7 @@ public function provideTestRenderMap(): iterable
5861
5962 yield 'with all markers removed ' => [
6063 'expected_render ' => '<div data-controller="symfony--ux-leaflet-map--map" data-symfony--ux-leaflet-map--map-provider-options-value="{}" data-symfony--ux-leaflet-map--map-center-value="{"lat":48.8566,"lng":2.3522}" data-symfony--ux-leaflet-map--map-zoom-value="12" data-symfony--ux-leaflet-map--map-fit-bounds-to-markers-value="false" data-symfony--ux-leaflet-map--map-options-value="{"tileLayer":{"url":"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png","attribution":"\u00a9 <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>","options":[]},"@provider":"leaflet"}" data-symfony--ux-leaflet-map--map-markers-value="[]" data-symfony--ux-leaflet-map--map-polygons-value="[]" data-symfony--ux-leaflet-map--map-polylines-value="[]"></div> ' ,
61- 'renderer ' => new LeafletRenderer (new StimulusHelper (null )),
64+ 'renderer ' => new LeafletRenderer (new StimulusHelper (null ), new UxIconRenderer ( null ) ),
6265 'map ' => (new Map ())
6366 ->center (new Point (48.8566 , 2.3522 ))
6467 ->zoom (12 )
@@ -70,7 +73,7 @@ public function provideTestRenderMap(): iterable
7073
7174 yield 'with marker remove and new ones added ' => [
7275 'expected_render ' => '<div data-controller="symfony--ux-leaflet-map--map" data-symfony--ux-leaflet-map--map-provider-options-value="{}" data-symfony--ux-leaflet-map--map-center-value="{"lat":48.8566,"lng":2.3522}" data-symfony--ux-leaflet-map--map-zoom-value="12" data-symfony--ux-leaflet-map--map-fit-bounds-to-markers-value="false" data-symfony--ux-leaflet-map--map-options-value="{"tileLayer":{"url":"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png","attribution":"\u00a9 <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>","options":[]},"@provider":"leaflet"}" data-symfony--ux-leaflet-map--map-markers-value="[{"position":{"lat":48.8566,"lng":2.3522},"title":"Paris","infoWindow":null,"icon":null,"extra":[],"id":"marker1","@id":"872feba9ebf3905d"},{"position":{"lat":48.8566,"lng":2.3522},"title":"Lyon","infoWindow":{"headerContent":null,"content":"Lyon","position":null,"opened":false,"autoClose":true,"extra":[]},"icon":{"content":"<svg><\/svg>","type":"inline-svg","width":24,"height":24},"extra":[],"id":"marker2","@id":"414a0455a0c33cf0"}]" data-symfony--ux-leaflet-map--map-polygons-value="[]" data-symfony--ux-leaflet-map--map-polylines-value="[]"></div> ' ,
73- 'renderer ' => new LeafletRenderer (new StimulusHelper (null )),
76+ 'renderer ' => new LeafletRenderer (new StimulusHelper (null ), new UxIconRenderer ( null ) ),
7477 'map ' => (new Map ())
7578 ->center (new Point (48.8566 , 2.3522 ))
7679 ->zoom (12 )
@@ -82,7 +85,7 @@ public function provideTestRenderMap(): iterable
8285
8386 yield 'with polygons and infoWindows ' => [
8487 'expected_render ' => '<div data-controller="symfony--ux-leaflet-map--map" data-symfony--ux-leaflet-map--map-provider-options-value="{}" data-symfony--ux-leaflet-map--map-center-value="{"lat":48.8566,"lng":2.3522}" data-symfony--ux-leaflet-map--map-zoom-value="12" data-symfony--ux-leaflet-map--map-fit-bounds-to-markers-value="false" data-symfony--ux-leaflet-map--map-options-value="{"tileLayer":{"url":"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png","attribution":"\u00a9 <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>","options":[]},"@provider":"leaflet"}" data-symfony--ux-leaflet-map--map-markers-value="[]" data-symfony--ux-leaflet-map--map-polygons-value="[{"points":[{"lat":48.8566,"lng":2.3522},{"lat":48.8566,"lng":2.3522},{"lat":48.8566,"lng":2.3522}],"title":null,"infoWindow":null,"extra":[],"id":"polygon1","@id":"35bfa920335b849d"},{"points":[{"lat":1.1,"lng":2.2},{"lat":3.3,"lng":4.4},{"lat":5.5,"lng":6.6}],"title":null,"infoWindow":{"headerContent":null,"content":"Polygon","position":null,"opened":false,"autoClose":true,"extra":[]},"extra":[],"id":"polygon2","@id":"7be1fe9f10489d73"}]" data-symfony--ux-leaflet-map--map-polylines-value="[]"></div> ' ,
85- 'renderer ' => new LeafletRenderer (new StimulusHelper (null )),
88+ 'renderer ' => new LeafletRenderer (new StimulusHelper (null ), new UxIconRenderer ( null ) ),
8689 'map ' => (new Map ())
8790 ->center (new Point (48.8566 , 2.3522 ))
8891 ->zoom (12 )
@@ -92,12 +95,23 @@ public function provideTestRenderMap(): iterable
9295
9396 yield 'with polylines and infoWindows ' => [
9497 'expected_render ' => '<div data-controller="symfony--ux-leaflet-map--map" data-symfony--ux-leaflet-map--map-provider-options-value="{}" data-symfony--ux-leaflet-map--map-center-value="{"lat":48.8566,"lng":2.3522}" data-symfony--ux-leaflet-map--map-zoom-value="12" data-symfony--ux-leaflet-map--map-fit-bounds-to-markers-value="false" data-symfony--ux-leaflet-map--map-options-value="{"tileLayer":{"url":"https:\/\/tile.openstreetmap.org\/{z}\/{x}\/{y}.png","attribution":"\u00a9 <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>","options":[]},"@provider":"leaflet"}" data-symfony--ux-leaflet-map--map-markers-value="[]" data-symfony--ux-leaflet-map--map-polygons-value="[]" data-symfony--ux-leaflet-map--map-polylines-value="[{"points":[{"lat":48.8566,"lng":2.3522},{"lat":48.8566,"lng":2.3522},{"lat":48.8566,"lng":2.3522}],"title":null,"infoWindow":null,"extra":[],"id":"polyline1","@id":"823f6ee5acdb5db3"},{"points":[{"lat":1.1,"lng":2.2},{"lat":3.3,"lng":4.4},{"lat":5.5,"lng":6.6}],"title":null,"infoWindow":{"headerContent":null,"content":"Polyline","position":null,"opened":false,"autoClose":true,"extra":[]},"extra":[],"id":"polyline2","@id":"77fb0e390b5e91f1"}]"></div> ' ,
95- 'renderer ' => new LeafletRenderer (new StimulusHelper (null )),
98+ 'renderer ' => new LeafletRenderer (new StimulusHelper (null ), new UxIconRenderer ( null ) ),
9699 'map ' => (new Map ())
97100 ->center (new Point (48.8566 , 2.3522 ))
98101 ->zoom (12 )
99102 ->addPolyline (new Polyline (points: [new Point (48.8566 , 2.3522 ), new Point (48.8566 , 2.3522 ), new Point (48.8566 , 2.3522 )], id: 'polyline1 ' ))
100103 ->addPolyline (new Polyline (points: [new Point (1.1 , 2.2 ), new Point (3.3 , 4.4 ), new Point (5.5 , 6.6 )], infoWindow: new InfoWindow (content: 'Polyline ' ), id: 'polyline2 ' )),
101104 ];
105+
106+ yield 'markers with icons ' => [
107+ 'expected_render ' => '<div></div> ' ,
108+ 'renderer ' => new GoogleRenderer (new StimulusHelper (null ), new UxIconRenderer (null ), 'my_api_key ' ),
109+ 'map ' => (new Map ())
110+ ->center (new Point (48.8566 , 2.3522 ))
111+ ->zoom (12 )
112+ ->
addMarker (
new Marker (position:
new Point (
48.8566 ,
2.3522 ), title:
'Paris ' , icon: Icon::
url (
'https://cdn.jsdelivr.net/npm/[email protected] /icons/geo-alt.svg ' )->
width (
32 )->
height (
32 )))
113+ ->addMarker (new Marker (position: new Point (45.7640 , 4.8357 ), title: 'Lyon ' , icon: Icon::ux ('fa:map-marker ' )->width (32 )->height (32 )))
114+ ->addMarker (new Marker (position: new Point (45.8566 , 2.3522 ), title: 'Dijon ' , icon: Icon::svg ('<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24">...</svg> ' ))),
115+ ];
102116 }
103117}
0 commit comments