mapcomplete/test/Models/ThemeConfig/Conversion/FixLegacyTheme.spec.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

146 lines
5.6 KiB
TypeScript
Raw Normal View History

import ThemeConfig from "../../../../src/Models/ThemeConfig/ThemeConfig"
2023-07-15 18:55:03 +02:00
import { FixLegacyTheme } from "../../../../src/Models/ThemeConfig/Conversion/LegacyJsonConvert"
2023-02-03 04:48:32 +01:00
import { describe, expect, it } from "vitest"
2023-11-02 04:35:32 +01:00
import { ConversionContext } from "../../../../src/Models/ThemeConfig/Conversion/ConversionContext"
2022-03-24 03:30:05 +01:00
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",
2022-09-08 21:40:48 +02:00
},
source: {
osmTags: {
2022-03-24 03:30:05 +01:00
and: ["network=rwn", "network:type=node_network"],
},
2022-09-08 21:40:48 +02:00
},
2022-03-24 03:30:05 +01:00
minzoom: 12,
title: {
render: {
en: "node to node link",
},
mappings: [
{
if: "ref~*",
then: {
en: "node to node link <strong>{ref}</strong>",
2022-09-08 21:40:48 +02:00
},
},
],
},
width: {
render: "4",
},
color: {
2022-03-24 03:30:05 +01:00
render: "#8b1e20",
2022-09-08 21:40:48 +02:00
},
2022-03-24 03:30:05 +01:00
tagRenderings: [
2022-09-08 21:40:48 +02:00
{
2022-03-24 03:30:05 +01:00
question: {
en: "When was this node to node link last surveyed?",
2022-09-08 21:40:48 +02:00
},
render: {
2022-03-24 03:30:05 +01:00
en: "This node to node link was last surveyed on {survey:date}",
2022-09-08 21:40:48 +02:00
},
2022-03-24 03:30:05 +01:00
freeform: {
key: "survey:date",
type: "date",
},
mappings: [
{
if: "survey:date:={_now:date}",
then: "Surveyed today!",
},
2022-09-08 21:40:48 +02:00
],
2022-03-24 03:30:05 +01:00
},
2022-09-08 21:40:48 +02:00
],
},
{
2022-03-24 03:30:05 +01:00
id: "node",
name: {
en: "nodes",
2022-09-08 21:40:48 +02:00
},
source: {
2022-03-24 03:30:05 +01:00
osmTags: "rwn_ref~*",
2022-09-08 21:40:48 +02:00
},
2022-03-24 03:30:05 +01:00
minzoom: 12,
2022-09-08 21:40:48 +02:00
title: {
2022-03-24 03:30:05 +01:00
render: {
en: "walking node <strong>{rwn_ref}</strong>",
},
2022-09-08 21:40:48 +02:00
},
label: {
2022-03-24 03:30:05 +01:00
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}",
2022-09-08 21:40:48 +02:00
},
2022-03-24 03:30:05 +01:00
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",
2022-09-08 21:40:48 +02:00
type: "int",
},
},
2022-03-24 03:30:05 +01:00
"images",
],
},
],
}
const context = ConversionContext.test()
const fixed = new FixLegacyTheme().convert(<any>walking_node_theme, context)
2023-02-03 04:48:32 +01:00
// "Could not fix the legacy theme"
expect(!context.hasErrors())
const theme = new ThemeConfig(fixed, false)
2023-02-03 04:48:32 +01:00
expect(theme).toBeDefined()
2022-03-24 03:30:05 +01:00
})
})