| 
									
										
										
										
											2023-07-15 18:55:03 +02:00
										 |  |  | import { LayerConfigJson } from "../../../../src/Models/ThemeConfig/Json/LayerConfigJson" | 
					
						
							|  |  |  | import LineRenderingConfigJson from "../../../../src/Models/ThemeConfig/Json/LineRenderingConfigJson" | 
					
						
							| 
									
										
										
										
											2022-03-29 00:20:10 +02:00
										 |  |  | import { | 
					
						
							| 
									
										
										
										
											2023-06-14 20:39:36 +02:00
										 |  |  |     PrepareLayer, | 
					
						
							|  |  |  |     RewriteSpecial, | 
					
						
							| 
									
										
										
										
											2023-07-15 18:55:03 +02:00
										 |  |  | } from "../../../../src/Models/ThemeConfig/Conversion/PrepareLayer" | 
					
						
							|  |  |  | import { QuestionableTagRenderingConfigJson } from "../../../../src/Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson" | 
					
						
							|  |  |  | import RewritableConfigJson from "../../../../src/Models/ThemeConfig/Json/RewritableConfigJson" | 
					
						
							| 
									
										
										
										
											2023-06-14 20:39:36 +02:00
										 |  |  | import { describe, expect, it } from "vitest" | 
					
						
							| 
									
										
										
										
											2023-11-02 04:35:32 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | import { ConversionContext } from "../../../../src/Models/ThemeConfig/Conversion/ConversionContext" | 
					
						
							| 
									
										
										
										
											2023-12-12 03:43:55 +01:00
										 |  |  | import { ExpandRewrite } from "../../../../src/Models/ThemeConfig/Conversion/ExpandRewrite" | 
					
						
							| 
									
										
										
										
											2022-04-03 03:26:26 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  | describe("ExpandRewrite", () => { | 
					
						
							|  |  |  |     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() | 
					
						
							| 
									
										
										
										
											2023-10-12 16:55:26 +02:00
										 |  |  |         expect(() => rewrite.convertStrict(spec, ConversionContext.test())).to.throw | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |     }) | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2022-03-24 03:11:52 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | describe("PrepareLayer", () => { | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |     it("should expand rewrites in map renderings", () => { | 
					
						
							| 
									
										
										
										
											2023-10-12 16:55:26 +02:00
										 |  |  |         const exampleLayer: LayerConfigJson = <any>{ | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |             id: "testlayer", | 
					
						
							|  |  |  |             source: { | 
					
						
							|  |  |  |                 osmTags: "key=value", | 
					
						
							|  |  |  |             }, | 
					
						
							| 
									
										
										
										
											2023-10-12 16:55:26 +02:00
										 |  |  |             lineRendering: [ | 
					
						
							|  |  |  |                 <any>{ | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |                     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({ | 
					
						
							| 
									
										
										
										
											2023-10-12 16:55:26 +02:00
										 |  |  |             tagRenderings: new Map<string, QuestionableTagRenderingConfigJson>(), | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |             sharedLayers: new Map<string, LayerConfigJson>(), | 
					
						
							|  |  |  |         }) | 
					
						
							| 
									
										
										
										
											2023-10-12 16:55:26 +02:00
										 |  |  |         const result = prep.convertStrict(exampleLayer, ConversionContext.test()) | 
					
						
							| 
									
										
										
										
											2022-03-24 03:11:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |         const expected = { | 
					
						
							|  |  |  |             id: "testlayer", | 
					
						
							| 
									
										
										
										
											2023-06-14 20:39:36 +02:00
										 |  |  |             source: { osmTags: "key=value" }, | 
					
						
							| 
									
										
										
										
											2023-10-12 16:55:26 +02:00
										 |  |  |             lineRendering: [ | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |                 { | 
					
						
							|  |  |  |                     color: { | 
					
						
							|  |  |  |                         render: "#888", | 
					
						
							|  |  |  |                         mappings: [ | 
					
						
							|  |  |  |                             { | 
					
						
							|  |  |  |                                 if: "parking:condition:left=free", | 
					
						
							|  |  |  |                                 then: "#299921", | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                             }, | 
					
						
							|  |  |  |                             { | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |                                 if: "parking:condition:left=disc", | 
					
						
							|  |  |  |                                 then: "#219991", | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                             }, | 
					
						
							|  |  |  |                         ], | 
					
						
							| 
									
										
										
										
											2022-03-24 03:11:52 +01:00
										 |  |  |                     }, | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |                     offset: -6, | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |                 { | 
					
						
							|  |  |  |                     color: { | 
					
						
							|  |  |  |                         render: "#888", | 
					
						
							|  |  |  |                         mappings: [ | 
					
						
							|  |  |  |                             { | 
					
						
							|  |  |  |                                 if: "parking:condition:right=free", | 
					
						
							|  |  |  |                                 then: "#299921", | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                             }, | 
					
						
							|  |  |  |                             { | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |                                 if: "parking:condition:right=disc", | 
					
						
							|  |  |  |                                 then: "#219991", | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |                             }, | 
					
						
							|  |  |  |                         ], | 
					
						
							| 
									
										
										
										
											2022-03-24 03:11:52 +01:00
										 |  |  |                     }, | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |                     offset: 6, | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |             ], | 
					
						
							| 
									
										
										
										
											2023-06-14 20:39:36 +02:00
										 |  |  |             titleIcons: [{ render: "icons.defaults", id: "iconsdefaults" }], | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-03-24 03:11:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-03 04:48:32 +01:00
										 |  |  |         expect(result).toEqual(expected) | 
					
						
							| 
									
										
										
										
											2022-04-03 02:37:31 +02:00
										 |  |  |     }) | 
					
						
							| 
									
										
										
										
											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", | 
					
						
							|  |  |  |                 }, | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2023-10-12 16:55:26 +02:00
										 |  |  |         const r = new RewriteSpecial().convertStrict(tr, ConversionContext.test()) | 
					
						
							| 
									
										
										
										
											2023-02-03 04:48:32 +01:00
										 |  |  |         expect(r).toEqual({ | 
					
						
							| 
									
										
										
										
											2022-03-29 00:20:10 +02:00
										 |  |  |             id: "uk_addresses_import_button", | 
					
						
							| 
									
										
										
										
											2022-07-14 15:45:57 +02:00
										 |  |  |             render: { | 
					
						
							| 
									
										
										
										
											2023-05-30 03:33:41 +02:00
										 |  |  |                 "*": "{import_button(address,urpn_count=$urpn_count;ref:GB:uprn=$ref:GB:uprn$,Add this address,./assets/themes/uk_addresses/housenumber_add.svg,,,,)}", | 
					
						
							| 
									
										
										
										
											2022-09-08 21:40:48 +02:00
										 |  |  |             }, | 
					
						
							| 
									
										
										
										
											2022-03-29 00:20:10 +02:00
										 |  |  |         }) | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  | }) |