forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			145 lines
		
	
	
	
		
			5.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
	
		
			5.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import LayoutConfig from "../../../../src/Models/ThemeConfig/LayoutConfig"
 | |
| import { FixLegacyTheme } from "../../../../src/Models/ThemeConfig/Conversion/LegacyJsonConvert"
 | |
| import { describe, expect, it } from "vitest"
 | |
| 
 | |
| import { ConversionContext } from "../../../../src/Models/ThemeConfig/Conversion/ConversionContext"
 | |
| 
 | |
| describe("FixLegacyTheme", () => {
 | |
|     it("should create a working theme config", () => {
 | |
|         const walking_node_theme = {
 | |
|             id: "walkingnodenetworks",
 | |
|             title: {
 | |
|                 en: "Walking node networks",
 | |
|             },
 | |
|             maintainer: "L'imaginaire",
 | |
|             icon: "https://upload.wikimedia.org/wikipedia/commons/3/30/Man_walking_icon_1410105361.svg",
 | |
|             description: {
 | |
|                 en: "This map shows walking node networks",
 | |
|             },
 | |
|             language: ["en"],
 | |
|             socialImage: "img.jpg",
 | |
|             version: "2021-10-02",
 | |
|             startLat: 51.1599,
 | |
|             startLon: 3.3475,
 | |
|             startZoom: 12,
 | |
|             clustering: {
 | |
|                 maxZoom: 12,
 | |
|             },
 | |
|             layers: [
 | |
|                 {
 | |
|                     id: "node2node",
 | |
|                     name: {
 | |
|                         en: "node to node links",
 | |
|                     },
 | |
|                     source: {
 | |
|                         osmTags: {
 | |
|                             and: ["network=rwn", "network:type=node_network"],
 | |
|                         },
 | |
|                     },
 | |
|                     minzoom: 12,
 | |
|                     title: {
 | |
|                         render: {
 | |
|                             en: "node to node link",
 | |
|                         },
 | |
|                         mappings: [
 | |
|                             {
 | |
|                                 if: "ref~*",
 | |
|                                 then: {
 | |
|                                     en: "node to node link <strong>{ref}</strong>",
 | |
|                                 },
 | |
|                             },
 | |
|                         ],
 | |
|                     },
 | |
|                     width: {
 | |
|                         render: "4",
 | |
|                     },
 | |
|                     color: {
 | |
|                         render: "#8b1e20",
 | |
|                     },
 | |
|                     tagRenderings: [
 | |
|                         {
 | |
|                             question: {
 | |
|                                 en: "When was this node to node link last surveyed?",
 | |
|                             },
 | |
|                             render: {
 | |
|                                 en: "This node to node link was last surveyed on {survey:date}",
 | |
|                             },
 | |
|                             freeform: {
 | |
|                                 key: "survey:date",
 | |
|                                 type: "date",
 | |
|                             },
 | |
|                             mappings: [
 | |
|                                 {
 | |
|                                     if: "survey:date:={_now:date}",
 | |
|                                     then: "Surveyed today!",
 | |
|                                 },
 | |
|                             ],
 | |
|                         },
 | |
|                     ],
 | |
|                 },
 | |
|                 {
 | |
|                     id: "node",
 | |
|                     name: {
 | |
|                         en: "nodes",
 | |
|                     },
 | |
|                     source: {
 | |
|                         osmTags: "rwn_ref~*",
 | |
|                     },
 | |
|                     minzoom: 12,
 | |
|                     title: {
 | |
|                         render: {
 | |
|                             en: "walking node <strong>{rwn_ref}</strong>",
 | |
|                         },
 | |
|                     },
 | |
|                     label: {
 | |
|                         mappings: [
 | |
|                             {
 | |
|                                 if: "rwn_ref~*",
 | |
|                                 then: "<div style='position: absolute; top: 10px; right: 10px; color: white; background-color: #8b1e20; width: 20px; height: 20px; border-radius: 100%'>{rwn_ref}</div>",
 | |
|                             },
 | |
|                         ],
 | |
|                     },
 | |
|                     tagRenderings: [
 | |
|                         {
 | |
|                             question: {
 | |
|                                 en: "When was this walking node last surveyed?",
 | |
|                             },
 | |
|                             render: {
 | |
|                                 en: "This walking node was last surveyed on {survey:date}",
 | |
|                             },
 | |
|                             freeform: {
 | |
|                                 key: "survey:date",
 | |
|                                 type: "date",
 | |
|                             },
 | |
|                             mappings: [
 | |
|                                 {
 | |
|                                     if: "survey:date:={_now:date}",
 | |
|                                     then: "Surveyed today!",
 | |
|                                 },
 | |
|                             ],
 | |
|                         },
 | |
|                         {
 | |
|                             question: {
 | |
|                                 en: "How many other walking nodes does this node link to?",
 | |
|                             },
 | |
|                             render: {
 | |
|                                 en: "This node links to {expected_rwn_route_relations} other walking nodes.",
 | |
|                             },
 | |
|                             freeform: {
 | |
|                                 key: "expected_rwn_route_relations",
 | |
|                                 type: "int",
 | |
|                             },
 | |
|                         },
 | |
|                         "images",
 | |
|                     ],
 | |
|                 },
 | |
|             ],
 | |
|         }
 | |
|         const context = ConversionContext.test()
 | |
|         const fixed = new FixLegacyTheme().convert(<any>walking_node_theme, context)
 | |
|         // "Could not fix the legacy theme"
 | |
|         expect(!context.hasErrors())
 | |
|         const theme = new LayoutConfig(fixed, false)
 | |
|         expect(theme).toBeDefined()
 | |
|     })
 | |
| })
 |