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" ,
2022-07-14 15:45:57 +02:00
"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,)}" }
2022-03-29 00:20:10 +02:00
} )
} )
} ) ;