2022-03-24 03:11:29 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								import  { describe }  from  'mocha'  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  { expect }  from  'chai'  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  { LayerConfigJson }  from  "../../../../Models/ThemeConfig/Json/LayerConfigJson" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  { TagRenderingConfigJson }  from  "../../../../Models/ThemeConfig/Json/TagRenderingConfigJson" ;  
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  LineRenderingConfigJson  from  "../../../../Models/ThemeConfig/Json/LineRenderingConfigJson" ;  
						 
					
						
							
								
									
										
										
										
											2022-04-03 03:26:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  { ExpandRewrite ,  PrepareLayer ,  RewriteSpecial }  from  "../../../../Models/ThemeConfig/Conversion/PrepareLayer" ;  
						 
					
						
							
								
									
										
										
										
											2022-03-29 00:20:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    QuestionableTagRenderingConfigJson 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  from  "../../../../Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson" ;  
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								import  RewritableConfigJson  from  "../../../../Models/ThemeConfig/Json/RewritableConfigJson" ;  
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:29 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 03:26:26 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( "ExpandRewrite" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:29 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    it ( "should not allow overlapping keys" ,  ( )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  spec  =  < RewritableConfigJson < string > > { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            rewrite :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                sourceString :  [ "xyz" ,  "longer_xyz" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                into :  [ [ "a" ,  "b" ] ,  [ "A, B" ] ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            renderings :  "The value of xyz is longer_xyz" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  rewrite  =  new  ExpandRewrite ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        expect ( ( )  = >  rewrite . convert ( spec ,  "test" ) ) . to . throw 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} )  
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								describe ( "PrepareLayer" ,  ( )  = >  {  
						 
					
						
							
								
									
										
										
										
											2022-03-29 00:20:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    it ( "should expand rewrites in map renderings" ,  ( )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  exampleLayer : LayerConfigJson  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            id :  "testlayer" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            source :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                osmTags :  "key=value" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            mapRendering :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "rewrite" :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        sourceString :  [ "left|right" ,  "lr_offset" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        into :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            [ "left" ,  - 6 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                           [  "right" ,  + 6 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    renderings :  < LineRenderingConfigJson > { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        "color" :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            "render" :  "#888" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            "mappings" :  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    "if" :  "parking:condition:left|right=free" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    "then" :  "#299921" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    "if" :  "parking:condition:left|right=disc" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                    "then" :  "#219991" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                } 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                            ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        "offset" :  "lr_offset" 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  prep  =  new  PrepareLayer ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            tagRenderings : new  Map < string ,  TagRenderingConfigJson > ( ) , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            sharedLayers : new  Map < string ,  LayerConfigJson > ( ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  result  =  prep . convertStrict ( exampleLayer ,  "test" ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:29 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        const  expected  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "id" :  "testlayer" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "source" :  { "osmTags" :  "key=value" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "mapRendering" :  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "color" :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "render" :  "#888" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "mappings" :  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        "if" :  "parking:condition:left=free" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        "then" :  "#299921" 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            "if" :  "parking:condition:left=disc" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            "then" :  "#219991" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "offset" :  - 6 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ,  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "color" :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "render" :  "#888" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "mappings" :  [ { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        "if" :  "parking:condition:right=free" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        "then" :  "#299921" 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:52 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                    } , 
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                        { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            "if" :  "parking:condition:right=disc" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                            "then" :  "#219991" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "offset" :  6 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "titleIcons" :  [ { "render" :  "defaults" ,  "id" :  "defaults" } ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:29 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-04-03 02:37:31 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        expect ( result ) . deep . eq ( expected ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
									
										
										
										
											2022-03-24 03:11:29 +01:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								} )  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2022-03-29 00:20:10 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'RewriteSpecial' ,  function  ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    it ( "should rewrite the UK import button" ,  ( )  = >  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  tr  =  < QuestionableTagRenderingConfigJson > { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "id" :  "uk_addresses_import_button" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "render" :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                "special" :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "type" :  "import_button" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "targetLayer" :  "address" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "tags" :  "urpn_count=$urpn_count;ref:GB:uprn=$ref:GB:uprn$" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "text" :  "Add this address" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "icon" :  "./assets/themes/uk_addresses/housenumber_add.svg" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    "location_picker" :  "none" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        const  r  =  new  RewriteSpecial ( ) . convert ( tr ,  "test" ) . result 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        expect ( r ) . to . deep . eq ( { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "id" :  "uk_addresses_import_button" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            "render" :   { '*' :  "{import_button(address,urpn_count=$urpn_count;ref:GB:uprn=$ref:GB:uprn$,Add this address,./assets/themes/uk_addresses/housenumber_add.svg,,,,none)}" } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    } ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;