Port tests to vitest
This commit is contained in:
parent
64a4d7e929
commit
228ceb120d
33 changed files with 673 additions and 326 deletions
436
package-lock.json
generated
436
package-lock.json
generated
|
@ -27,6 +27,7 @@
|
|||
"geojson2svg": "^1.3.1",
|
||||
"i18next-client": "^1.11.4",
|
||||
"idb-keyval": "^6.0.3",
|
||||
"jest-mock": "^29.4.1",
|
||||
"jspdf": "^2.5.1",
|
||||
"latlon2country": "^1.2.6",
|
||||
"leaflet": "^1.9.2",
|
||||
|
@ -64,7 +65,6 @@
|
|||
"@types/leaflet-markercluster": "^1.0.3",
|
||||
"@types/leaflet-providers": "^1.2.0",
|
||||
"@types/lz-string": "^1.3.34",
|
||||
"@types/mocha": "^9.1.0",
|
||||
"@types/node": "^18.11.18",
|
||||
"@types/papaparse": "^5.3.1",
|
||||
"@types/prompt-sync": "^4.1.0",
|
||||
|
@ -74,7 +74,6 @@
|
|||
"chai": "^4.3.6",
|
||||
"dependency-cruiser": "^10.4.0",
|
||||
"fs": "0.0.1-security",
|
||||
"mocha": "^9.2.2",
|
||||
"prettier": "^2.7.1",
|
||||
"prettier-plugin-svelte": "^2.9.0",
|
||||
"read-file": "^0.2.0",
|
||||
|
@ -1622,6 +1621,97 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/schemas": {
|
||||
"version": "29.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz",
|
||||
"integrity": "sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==",
|
||||
"dependencies": {
|
||||
"@sinclair/typebox": "^0.25.16"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/types": {
|
||||
"version": "29.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.1.tgz",
|
||||
"integrity": "sha512-zbrAXDUOnpJ+FMST2rV7QZOgec8rskg2zv8g2ajeqitp4tvZiyqTCYXANrKsM+ryj5o+LI+ZN2EgU9drrkiwSA==",
|
||||
"dependencies": {
|
||||
"@jest/schemas": "^29.4.0",
|
||||
"@types/istanbul-lib-coverage": "^2.0.0",
|
||||
"@types/istanbul-reports": "^3.0.0",
|
||||
"@types/node": "*",
|
||||
"@types/yargs": "^17.0.8",
|
||||
"chalk": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/types/node_modules/ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"dependencies": {
|
||||
"color-convert": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/types/node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/types/node_modules/color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"dependencies": {
|
||||
"color-name": "~1.1.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/types/node_modules/color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"node_modules/@jest/types/node_modules/has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@jest/types/node_modules/supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dependencies": {
|
||||
"has-flag": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
|
||||
|
@ -1831,6 +1921,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@sinclair/typebox": {
|
||||
"version": "0.25.21",
|
||||
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz",
|
||||
"integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g=="
|
||||
},
|
||||
"node_modules/@sveltejs/vite-plugin-svelte": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz",
|
||||
|
@ -3470,6 +3565,27 @@
|
|||
"integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/@types/istanbul-lib-coverage": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
|
||||
"integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g=="
|
||||
},
|
||||
"node_modules/@types/istanbul-lib-report": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
|
||||
"integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
|
||||
"dependencies": {
|
||||
"@types/istanbul-lib-coverage": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/istanbul-reports": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
|
||||
"integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
|
||||
"dependencies": {
|
||||
"@types/istanbul-lib-report": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/json-schema": {
|
||||
"version": "7.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
|
||||
|
@ -3516,12 +3632,6 @@
|
|||
"integrity": "sha512-j6G1e8DULJx3ONf6NdR5JiR2ZY3K3PaaqiEuKYkLQO0Czfi1AzrtjfnfCROyWGeDd5IVMKCwsgSmMip9OWijow==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/mocha": {
|
||||
"version": "9.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
|
||||
"integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.11.18",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
|
||||
|
@ -3587,6 +3697,19 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/yargs": {
|
||||
"version": "17.0.22",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz",
|
||||
"integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==",
|
||||
"dependencies": {
|
||||
"@types/yargs-parser": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/yargs-parser": {
|
||||
"version": "21.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
|
||||
"integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
|
||||
},
|
||||
"node_modules/@ungap/promise-all-settled": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
||||
|
@ -4411,6 +4534,20 @@
|
|||
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/ci-info": {
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz",
|
||||
"integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/sibiraj-s"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/cli-cursor": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
||||
|
@ -5774,8 +5911,7 @@
|
|||
"node_modules/graceful-fs": {
|
||||
"version": "4.2.10",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
|
||||
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
|
||||
"dev": true
|
||||
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
|
||||
},
|
||||
"node_modules/growl": {
|
||||
"version": "1.10.5",
|
||||
|
@ -6419,6 +6555,99 @@
|
|||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
|
||||
},
|
||||
"node_modules/jest-mock": {
|
||||
"version": "29.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.1.tgz",
|
||||
"integrity": "sha512-MwA4hQ7zBOcgVCVnsM8TzaFLVUD/pFWTfbkY953Y81L5ret3GFRZtmPmRFAjKQSdCKoJvvqOu6Bvfpqlwwb0dQ==",
|
||||
"dependencies": {
|
||||
"@jest/types": "^29.4.1",
|
||||
"@types/node": "*",
|
||||
"jest-util": "^29.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-util": {
|
||||
"version": "29.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.1.tgz",
|
||||
"integrity": "sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ==",
|
||||
"dependencies": {
|
||||
"@jest/types": "^29.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.0.0",
|
||||
"ci-info": "^3.2.0",
|
||||
"graceful-fs": "^4.2.9",
|
||||
"picomatch": "^2.2.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^14.15.0 || ^16.10.0 || >=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-util/node_modules/ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"dependencies": {
|
||||
"color-convert": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-util/node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/chalk?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-util/node_modules/color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"dependencies": {
|
||||
"color-name": "~1.1.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-util/node_modules/color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"node_modules/jest-util/node_modules/has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/jest-util/node_modules/supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"dependencies": {
|
||||
"has-flag": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/jose": {
|
||||
"version": "4.11.2",
|
||||
"resolved": "https://registry.npmjs.org/jose/-/jose-4.11.2.tgz",
|
||||
|
@ -12245,6 +12474,72 @@
|
|||
"integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
|
||||
"optional": true
|
||||
},
|
||||
"@jest/schemas": {
|
||||
"version": "29.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.0.tgz",
|
||||
"integrity": "sha512-0E01f/gOZeNTG76i5eWWSupvSHaIINrTie7vCyjiYFKgzNdyEGd12BUv4oNBFHOqlHDbtoJi3HrQ38KCC90NsQ==",
|
||||
"requires": {
|
||||
"@sinclair/typebox": "^0.25.16"
|
||||
}
|
||||
},
|
||||
"@jest/types": {
|
||||
"version": "29.4.1",
|
||||
"resolved": "https://registry.npmjs.org/@jest/types/-/types-29.4.1.tgz",
|
||||
"integrity": "sha512-zbrAXDUOnpJ+FMST2rV7QZOgec8rskg2zv8g2ajeqitp4tvZiyqTCYXANrKsM+ryj5o+LI+ZN2EgU9drrkiwSA==",
|
||||
"requires": {
|
||||
"@jest/schemas": "^29.4.0",
|
||||
"@types/istanbul-lib-coverage": "^2.0.0",
|
||||
"@types/istanbul-reports": "^3.0.0",
|
||||
"@types/node": "*",
|
||||
"@types/yargs": "^17.0.8",
|
||||
"chalk": "^4.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@jridgewell/gen-mapping": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
|
||||
|
@ -12380,6 +12675,11 @@
|
|||
"picomatch": "^2.3.1"
|
||||
}
|
||||
},
|
||||
"@sinclair/typebox": {
|
||||
"version": "0.25.21",
|
||||
"resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.21.tgz",
|
||||
"integrity": "sha512-gFukHN4t8K4+wVC+ECqeqwzBDeFeTzBXroBTqE6vcWrQGbEUpHO7LYdG0f4xnvYq4VOEwITSlHlp0JBAIFMS/g=="
|
||||
},
|
||||
"@sveltejs/vite-plugin-svelte": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.2.tgz",
|
||||
|
@ -13691,6 +13991,27 @@
|
|||
"integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==",
|
||||
"devOptional": true
|
||||
},
|
||||
"@types/istanbul-lib-coverage": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
|
||||
"integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g=="
|
||||
},
|
||||
"@types/istanbul-lib-report": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
|
||||
"integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==",
|
||||
"requires": {
|
||||
"@types/istanbul-lib-coverage": "*"
|
||||
}
|
||||
},
|
||||
"@types/istanbul-reports": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz",
|
||||
"integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==",
|
||||
"requires": {
|
||||
"@types/istanbul-lib-report": "*"
|
||||
}
|
||||
},
|
||||
"@types/json-schema": {
|
||||
"version": "7.0.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz",
|
||||
|
@ -13736,12 +14057,6 @@
|
|||
"integrity": "sha512-j6G1e8DULJx3ONf6NdR5JiR2ZY3K3PaaqiEuKYkLQO0Czfi1AzrtjfnfCROyWGeDd5IVMKCwsgSmMip9OWijow==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/mocha": {
|
||||
"version": "9.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz",
|
||||
"integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==",
|
||||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "18.11.18",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
|
||||
|
@ -13806,6 +14121,19 @@
|
|||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/yargs": {
|
||||
"version": "17.0.22",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz",
|
||||
"integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==",
|
||||
"requires": {
|
||||
"@types/yargs-parser": "*"
|
||||
}
|
||||
},
|
||||
"@types/yargs-parser": {
|
||||
"version": "21.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz",
|
||||
"integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA=="
|
||||
},
|
||||
"@ungap/promise-all-settled": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz",
|
||||
|
@ -14415,6 +14743,11 @@
|
|||
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
|
||||
"dev": true
|
||||
},
|
||||
"ci-info": {
|
||||
"version": "3.7.1",
|
||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.7.1.tgz",
|
||||
"integrity": "sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w=="
|
||||
},
|
||||
"cli-cursor": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
|
||||
|
@ -15472,8 +15805,7 @@
|
|||
"graceful-fs": {
|
||||
"version": "4.2.10",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz",
|
||||
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==",
|
||||
"dev": true
|
||||
"integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
|
||||
},
|
||||
"growl": {
|
||||
"version": "1.10.5",
|
||||
|
@ -15933,6 +16265,74 @@
|
|||
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
|
||||
"integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
|
||||
},
|
||||
"jest-mock": {
|
||||
"version": "29.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.4.1.tgz",
|
||||
"integrity": "sha512-MwA4hQ7zBOcgVCVnsM8TzaFLVUD/pFWTfbkY953Y81L5ret3GFRZtmPmRFAjKQSdCKoJvvqOu6Bvfpqlwwb0dQ==",
|
||||
"requires": {
|
||||
"@jest/types": "^29.4.1",
|
||||
"@types/node": "*",
|
||||
"jest-util": "^29.4.1"
|
||||
}
|
||||
},
|
||||
"jest-util": {
|
||||
"version": "29.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.4.1.tgz",
|
||||
"integrity": "sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ==",
|
||||
"requires": {
|
||||
"@jest/types": "^29.4.1",
|
||||
"@types/node": "*",
|
||||
"chalk": "^4.0.0",
|
||||
"ci-info": "^3.2.0",
|
||||
"graceful-fs": "^4.2.9",
|
||||
"picomatch": "^2.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"requires": {
|
||||
"color-convert": "^2.0.1"
|
||||
}
|
||||
},
|
||||
"chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
||||
"requires": {
|
||||
"ansi-styles": "^4.1.0",
|
||||
"supports-color": "^7.1.0"
|
||||
}
|
||||
},
|
||||
"color-convert": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
||||
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
||||
"requires": {
|
||||
"color-name": "~1.1.4"
|
||||
}
|
||||
},
|
||||
"color-name": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
||||
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
|
||||
},
|
||||
"has-flag": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
||||
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
||||
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
||||
"requires": {
|
||||
"has-flag": "^4.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"jose": {
|
||||
"version": "4.11.2",
|
||||
"resolved": "https://registry.npmjs.org/jose/-/jose-4.11.2.tgz",
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
"watch:css": "tailwindcss -i index.css -o css/index-tailwind-output.css --watch",
|
||||
"generate:css": "tailwindcss -i index.css -o css/index-tailwind-output.css",
|
||||
"generate:doctests": "doctest-ts-improved . --ignore .*.spec.ts --ignore .*ConfigJson.ts",
|
||||
"test:run-only": "mocha --require test/testhooks.ts \"./**/*.doctest.ts\" \"test/*\" \"test/**/*.ts\"",
|
||||
"test:run-only": "vitest --require test/testhooks.ts \"./**/*.doctest.ts\" \"test/*\" \"test/**/*.ts\"",
|
||||
"test": "(npm run generate:doctests 2>&1 | grep -v \"No doctests found in\") && npm run test:run-only && npm run clean:tests",
|
||||
"init": "npm ci && npm run generate && npm run generate:editor-layer-index && npm run generate:layouts && npm run clean",
|
||||
"generate:editor-layer-index": "vite-node scripts/downloadFile.ts -- https://osmlab.github.io/editor-layer-index/imagery.geojson assets/editor-layer-index.json",
|
||||
|
@ -82,6 +82,7 @@
|
|||
"geojson2svg": "^1.3.1",
|
||||
"i18next-client": "^1.11.4",
|
||||
"idb-keyval": "^6.0.3",
|
||||
"jest-mock": "^29.4.1",
|
||||
"jspdf": "^2.5.1",
|
||||
"latlon2country": "^1.2.6",
|
||||
"leaflet": "^1.9.2",
|
||||
|
@ -119,7 +120,6 @@
|
|||
"@types/leaflet-markercluster": "^1.0.3",
|
||||
"@types/leaflet-providers": "^1.2.0",
|
||||
"@types/lz-string": "^1.3.34",
|
||||
"@types/mocha": "^9.1.0",
|
||||
"@types/node": "^18.11.18",
|
||||
"@types/papaparse": "^5.3.1",
|
||||
"@types/prompt-sync": "^4.1.0",
|
||||
|
@ -129,7 +129,6 @@
|
|||
"chai": "^4.3.6",
|
||||
"dependency-cruiser": "^10.4.0",
|
||||
"fs": "0.0.1-security",
|
||||
"mocha": "^9.2.2",
|
||||
"prettier": "^2.7.1",
|
||||
"prettier-plugin-svelte": "^2.9.0",
|
||||
"read-file": "^0.2.0",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { describe } from "mocha"
|
||||
import { exec } from "child_process"
|
||||
import { describe, it } from "vitest"
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import { expect } from "chai"
|
||||
import { Utils } from "../../../Utils"
|
||||
import UserRelatedState from "../../../Logic/State/UserRelatedState"
|
||||
import LayoutConfig from "../../../Models/ThemeConfig/LayoutConfig"
|
||||
|
@ -11,6 +10,7 @@ import SelectedFeatureHandler from "../../../Logic/Actors/SelectedFeatureHandler
|
|||
import { ElementStorage } from "../../../Logic/ElementStorage"
|
||||
import { OsmTags } from "../../../Models/OsmFeature"
|
||||
import { Feature, Geometry } from "geojson"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
const latestTags = {
|
||||
amenity: "public_bookcase",
|
||||
|
@ -83,9 +83,9 @@ it("should download the latest version", () => {
|
|||
SelectedElementTagsUpdater.applyUpdate(state, latestTags, feature.properties.id)
|
||||
|
||||
// The name should be updated
|
||||
expect(feature.properties.name).deep.equal("Stubbekwartier-buurtbibliotheek")
|
||||
expect(feature.properties.name).toEqual("Stubbekwartier-buurtbibliotheek")
|
||||
// The fixme should be removed
|
||||
expect(feature.properties.fixme).deep.equal(undefined)
|
||||
expect(feature.properties.fixme).toBeUndefined()
|
||||
})
|
||||
it("Hash without selected element should download geojson from OSM-API", async () => {
|
||||
const hash = new UIEventSource("node/5568693115")
|
||||
|
@ -97,9 +97,9 @@ it("Hash without selected element should download geojson from OSM-API", async (
|
|||
})
|
||||
|
||||
loc.addCallback((_) => {
|
||||
expect(selected.data.properties.id).deep.equal("node/5568693115")
|
||||
expect(loc.data.zoom).deep.equal(14)
|
||||
expect(loc.data.lat).deep.equal(51.2179199)
|
||||
expect(selected.data.properties.id).toEqual("node/5568693115")
|
||||
expect(loc.data.zoom).toEqual(14)
|
||||
expect(loc.data.lat).toEqual(51.2179199)
|
||||
})
|
||||
|
||||
new SelectedFeatureHandler(hash, {
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import CreateMultiPolygonWithPointReuseAction from "../../../Logic/Osm/Actions/CreateMultiPolygonWithPointReuseAction"
|
||||
import { Tag } from "../../../Logic/Tags/Tag"
|
||||
import { Changes } from "../../../Logic/Osm/Changes"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("CreateMultiPolygonWithPointReuseAction", () => {
|
||||
it("should produce a correct changeset", () => {
|
||||
|
@ -106,21 +105,29 @@ describe("CreateMultiPolygonWithPointReuseAction", () => {
|
|||
const descriptions = await action.Perform(new Changes())
|
||||
|
||||
const ways = descriptions.filter((d) => d.type === "way")
|
||||
expect(ways[0].id == -18, "unexpected id").true
|
||||
expect(ways[1].id == -27, "unexpected id").true
|
||||
// "unexpected id"
|
||||
expect(ways[0].id == -18).toBe(true)
|
||||
// "unexpected id"
|
||||
expect(ways[1].id == -27).toBe(true)
|
||||
const outer = ways[0].changes["coordinates"]
|
||||
expect(outer).deep.equal(feature.geometry.coordinates[0])
|
||||
expect(outer).toEqual(feature.geometry.coordinates[0])
|
||||
const inner = ways[1].changes["coordinates"]
|
||||
expect(inner).deep.equal(feature.geometry.coordinates[1])
|
||||
expect(inner).toEqual(feature.geometry.coordinates[1])
|
||||
const members = <{ type: string; role: string; ref: number }[]>(
|
||||
descriptions.find((d) => d.type === "relation").changes["members"]
|
||||
)
|
||||
expect(members[0].role, "incorrect role").eq("outer")
|
||||
expect(members[1].role, "incorrect role").eq("inner")
|
||||
expect(members[0].type, "incorrect type").eq("way")
|
||||
expect(members[1].type, "incorrect type").eq("way")
|
||||
expect(members[0].ref, "incorrect id").eq(-18)
|
||||
expect(members[1].ref, "incorrect id").eq(-27)
|
||||
// "incorrect role"
|
||||
expect(members[0].role).toBe("outer")
|
||||
// "incorrect role"
|
||||
expect(members[1].role).toBe("inner")
|
||||
// "incorrect type"
|
||||
expect(members[0].type).toBe("way")
|
||||
// "incorrect type"
|
||||
expect(members[1].type).toBe("way")
|
||||
// "incorrect id"
|
||||
expect(members[0].ref).toBe(-18)
|
||||
// "incorrect id"
|
||||
expect(members[1].ref).toBe(-27)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { ExtraFuncParams, ExtraFunctions } from "../../Logic/ExtraFunctions"
|
||||
import { OsmFeature } from "../../Models/OsmFeature"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("OverlapFunc", () => {
|
||||
it("should give doors on the edge", () => {
|
||||
|
@ -122,6 +121,6 @@ describe("OverlapFunc", () => {
|
|||
ExtraFunctions.FullPatchFeature(params, hermanTeirlinck)
|
||||
const overlap = (<any>hermanTeirlinck).overlapWith("*")
|
||||
console.log(JSON.stringify(overlap))
|
||||
expect(overlap[0].feat == door).true
|
||||
expect(overlap[0].feat == door).toBe(true)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import { describe } from "mocha"
|
||||
import OsmFeatureSource from "../../../Logic/FeatureSource/TiledFeatureSource/OsmFeatureSource"
|
||||
import { UIEventSource } from "../../../Logic/UIEventSource"
|
||||
import ScriptUtils from "../../../scripts/ScriptUtils"
|
||||
|
@ -8,7 +7,7 @@ import { readFileSync } from "fs"
|
|||
import { Utils } from "../../../Utils"
|
||||
import { Tag } from "../../../Logic/Tags/Tag"
|
||||
import LayerConfig from "../../../Models/ThemeConfig/LayerConfig"
|
||||
import { expect } from "chai"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
const expected = {
|
||||
type: "Feature",
|
||||
|
@ -92,7 +91,7 @@ function test(done: () => void) {
|
|||
handleTile: (tile) => {
|
||||
fetchedTile = tile
|
||||
const data = tile.features.data[0].feature
|
||||
expect(data.properties).deep.eq({
|
||||
expect(data.properties).toEqual({
|
||||
id: "relation/5759328",
|
||||
timestamp: "2022-06-10T00:46:55Z",
|
||||
version: 6,
|
||||
|
@ -107,8 +106,8 @@ function test(done: () => void) {
|
|||
website: "http://ktahalle.be/",
|
||||
_backend: "https://osm.org",
|
||||
})
|
||||
expect(data.geometry.type).eq("MultiPolygon")
|
||||
expect(data).deep.eq(expected)
|
||||
expect(data.geometry.type).toBe("MultiPolygon")
|
||||
expect(data).toEqual(expected)
|
||||
done()
|
||||
},
|
||||
isActive: new UIEventSource<boolean>(true),
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { describe } from "mocha"
|
||||
import TileFreshnessCalculator from "../../../Logic/FeatureSource/TileFreshnessCalculator"
|
||||
import { Tiles } from "../../../Models/TileRange"
|
||||
import { expect } from "chai"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("TileFreshnessCalculator", () => {
|
||||
it("should get the freshness for loaded tiles", () => {
|
||||
|
@ -11,13 +10,13 @@ describe("TileFreshnessCalculator", () => {
|
|||
date.setTime(42)
|
||||
calc.addTileLoad(Tiles.tile_index(19, 266406, 175534), date)
|
||||
|
||||
expect(calc.freshnessFor(19, 266406, 175534).getTime()).eq(42)
|
||||
expect(calc.freshnessFor(20, 266406 * 2, 175534 * 2 + 1).getTime()).eq(42)
|
||||
expect(calc.freshnessFor(19, 266406, 175535)).undefined
|
||||
expect(calc.freshnessFor(18, 266406 / 2, 175534 / 2)).undefined
|
||||
expect(calc.freshnessFor(19, 266406, 175534).getTime()).toBe(42)
|
||||
expect(calc.freshnessFor(20, 266406 * 2, 175534 * 2 + 1).getTime()).toBe(42)
|
||||
expect(calc.freshnessFor(19, 266406, 175535)).toBeUndefined()
|
||||
expect(calc.freshnessFor(18, 266406 / 2, 175534 / 2)).toBeUndefined()
|
||||
calc.addTileLoad(Tiles.tile_index(19, 266406, 175534 + 1), date)
|
||||
calc.addTileLoad(Tiles.tile_index(19, 266406 + 1, 175534), date)
|
||||
calc.addTileLoad(Tiles.tile_index(19, 266406 + 1, 175534 + 1), date)
|
||||
expect(calc.freshnessFor(18, 266406 / 2, 175534 / 2).getTime()).eq(42)
|
||||
expect(calc.freshnessFor(18, 266406 / 2, 175534 / 2).getTime()).toBe(42)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import * as turf from "@turf/turf"
|
||||
import { GeoOperations } from "../../Logic/GeoOperations"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("GeoOperations", () => {
|
||||
describe("calculateOverlap", () => {
|
||||
|
@ -123,9 +122,9 @@ describe("GeoOperations", () => {
|
|||
}
|
||||
|
||||
const p0 = turf.polygon(polyGrb.geometry.coordinates)
|
||||
expect(p0).not.null
|
||||
expect(p0).not.toBeNull()
|
||||
const p1 = turf.polygon(polyHouse.geometry.coordinates)
|
||||
expect(p1).not.null
|
||||
expect(p1).not.toBeNull()
|
||||
|
||||
const overlaps = GeoOperations.calculateOverlap(polyGrb, [polyHouse])
|
||||
expect(overlaps).empty
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import AllImageProviders from "../../../Logic/ImageProviders/AllImageProviders"
|
||||
import { UIEventSource } from "../../../Logic/UIEventSource"
|
||||
import { Utils } from "../../../Utils"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("ImageProviders", () => {
|
||||
it("should work on a variaty of inputs", () => {
|
||||
|
@ -16,9 +15,9 @@ describe("ImageProviders", () => {
|
|||
if (img === undefined) {
|
||||
throw "No image found"
|
||||
}
|
||||
expect(img.url).deep.equal(url)
|
||||
expect(img.url).toEqual(url)
|
||||
if (providerName) {
|
||||
expect(providerName).deep.equal(img.provider.constructor.name)
|
||||
expect(providerName).toEqual(img.provider.constructor.name)
|
||||
}
|
||||
console.log("OK")
|
||||
})
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { Utils } from "../../../../Utils"
|
||||
import { OsmObject, OsmRelation } from "../../../../Logic/Osm/OsmObject"
|
||||
import {
|
||||
|
@ -7,6 +5,7 @@ import {
|
|||
TurnRestrictionRSH,
|
||||
} from "../../../../Logic/Osm/Actions/RelationSplitHandler"
|
||||
import { Changes } from "../../../../Logic/Osm/Changes"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("RelationSplitHandler", () => {
|
||||
Utils.injectJsonDownloadForTests("https://www.openstreetmap.org/api/0.6/node/1124134958/ways", {
|
||||
|
@ -651,10 +650,8 @@ describe("RelationSplitHandler", () => {
|
|||
const changeDescription = await splitter.CreateChangeDescriptions(new Changes())
|
||||
const allIds = changeDescription[0].changes["members"].map((m) => m.ref).join(",")
|
||||
const expected = "687866206,295132739,-1,690497698"
|
||||
expect(
|
||||
allIds.indexOf(expected) >= 0,
|
||||
"didn't find the expected order of ids in the relation to test"
|
||||
).true
|
||||
// "didn't find the expected order of ids in the relation to test"
|
||||
expect(allIds.indexOf(expected) >= 0).toBe(true)
|
||||
})
|
||||
|
||||
it("should split turn restrictions (split of https://www.openstreetmap.org/way/143298912)", async () => {
|
||||
|
@ -705,7 +702,7 @@ describe("RelationSplitHandler", () => {
|
|||
.map((m) => m.type + "/" + m.ref + "-->" + m.role)
|
||||
.join(",")
|
||||
const expected = "way/318616190-->from,node/1407529979-->via,way/-1-->to"
|
||||
expect(allIds).deep.equal(expected)
|
||||
expect(allIds).toEqual(expected)
|
||||
|
||||
// Reversing the ids has no effect
|
||||
const splitterReverse = new TurnRestrictionRSH(
|
||||
|
@ -719,6 +716,6 @@ describe("RelationSplitHandler", () => {
|
|||
"no-theme"
|
||||
)
|
||||
const changesReverse = await splitterReverse.CreateChangeDescriptions(new Changes())
|
||||
expect(changesReverse.length).deep.equal(0)
|
||||
expect(changesReverse.length).toEqual(0)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import Minimap from "../../../../UI/Base/Minimap"
|
||||
import { Utils } from "../../../../Utils"
|
||||
import LayoutConfig from "../../../../Models/ThemeConfig/LayoutConfig"
|
||||
import State from "../../../../State"
|
||||
import { BBox } from "../../../../Logic/BBox"
|
||||
import ReplaceGeometryAction from "../../../../Logic/Osm/Actions/ReplaceGeometryAction"
|
||||
import ShowDataLayerImplementation from "../../../../UI/ShowDataLayer/ShowDataLayerImplementation"
|
||||
import ShowDataLayer from "../../../../UI/ShowDataLayer/ShowDataLayer"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("ReplaceGeometryAction", () => {
|
||||
const grbStripped = {
|
||||
|
@ -896,7 +894,7 @@ describe("ReplaceGeometryAction", () => {
|
|||
})
|
||||
|
||||
const closestIds = await action.GetClosestIds()
|
||||
expect(closestIds.closestIds).deep.equal([
|
||||
expect(closestIds.closestIds).toEqual([
|
||||
9219979643,
|
||||
1728823481,
|
||||
4978289383,
|
||||
|
@ -910,14 +908,14 @@ describe("ReplaceGeometryAction", () => {
|
|||
undefined,
|
||||
])
|
||||
|
||||
expect(closestIds.reprojectedNodes.size).deep.equal(1)
|
||||
expect(closestIds.reprojectedNodes.size).toEqual(1)
|
||||
const reproj = closestIds.reprojectedNodes.get(1728823549)
|
||||
expect(reproj.projectAfterIndex).deep.equal(1)
|
||||
expect(reproj.newLon).deep.equal(3.2168880864669203)
|
||||
expect(reproj.newLat).deep.equal(51.214739524104694)
|
||||
expect(closestIds.detachedNodes.size).deep.equal(0)
|
||||
expect(reproj.projectAfterIndex).toEqual(1)
|
||||
expect(reproj.newLon).toEqual(3.2168880864669203)
|
||||
expect(reproj.newLat).toEqual(51.214739524104694)
|
||||
expect(closestIds.detachedNodes.size).toEqual(0)
|
||||
const changes = await action.Perform(state.changes)
|
||||
expect(changes[11].changes["coordinates"]).deep.equal([
|
||||
expect(changes[11].changes["coordinates"]).toEqual([
|
||||
[3.216690793633461, 51.21474084112525],
|
||||
[3.2167256623506546, 51.214696737309964],
|
||||
[3.2168880864669203, 51.214739524104694],
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { Utils } from "../../../../Utils"
|
||||
import SplitAction from "../../../../Logic/Osm/Actions/SplitAction"
|
||||
import { Changes } from "../../../../Logic/Osm/Changes"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("SplitAction", () => {
|
||||
{
|
||||
|
@ -2690,20 +2689,20 @@ describe("SplitAction", () => {
|
|||
})
|
||||
const changeDescription = await splitter.CreateChangeDescriptions(new Changes())
|
||||
|
||||
expect(changeDescription[0].type).eq("node")
|
||||
expect(changeDescription[0].id).eq(-1)
|
||||
expect(changeDescription[0].changes["lat"]).eq(51.181710380278176)
|
||||
expect(changeDescription[0].changes["lon"]).eq(3.246733546257019)
|
||||
expect(changeDescription[1].type).eq("way")
|
||||
expect(changeDescription[1].id).eq(-2)
|
||||
expect(changeDescription[1].changes["coordinates"].length).eq(6)
|
||||
expect(changeDescription[1].changes["coordinates"][5][0]).eq(splitPoint[0])
|
||||
expect(changeDescription[1].changes["coordinates"][5][1]).eq(splitPoint[1])
|
||||
expect(changeDescription[2].type).eq("way")
|
||||
expect(changeDescription[2].id).eq(295132739)
|
||||
expect(changeDescription[2].changes["coordinates"].length).eq(10)
|
||||
expect(changeDescription[2].changes["coordinates"][0][0]).eq(splitPoint[0])
|
||||
expect(changeDescription[2].changes["coordinates"][0][1]).eq(splitPoint[1])
|
||||
expect(changeDescription[0].type).toBe("node")
|
||||
expect(changeDescription[0].id).toBe(-1)
|
||||
expect(changeDescription[0].changes["lat"]).toBe(51.181710380278176)
|
||||
expect(changeDescription[0].changes["lon"]).toBe(3.246733546257019)
|
||||
expect(changeDescription[1].type).toBe("way")
|
||||
expect(changeDescription[1].id).toBe(-2)
|
||||
expect(changeDescription[1].changes["coordinates"].length).toBe(6)
|
||||
expect(changeDescription[1].changes["coordinates"][5][0]).toBe(splitPoint[0])
|
||||
expect(changeDescription[1].changes["coordinates"][5][1]).toBe(splitPoint[1])
|
||||
expect(changeDescription[2].type).toBe("way")
|
||||
expect(changeDescription[2].id).toBe(295132739)
|
||||
expect(changeDescription[2].changes["coordinates"].length).toBe(10)
|
||||
expect(changeDescription[2].changes["coordinates"][0][0]).toBe(splitPoint[0])
|
||||
expect(changeDescription[2].changes["coordinates"][0][1]).toBe(splitPoint[1])
|
||||
})
|
||||
|
||||
it("split 295132739 on already existing node", async () => {
|
||||
|
@ -2715,13 +2714,13 @@ describe("SplitAction", () => {
|
|||
})
|
||||
const changeDescription = await splitter.CreateChangeDescriptions(new Changes())
|
||||
|
||||
expect(changeDescription.length).eq(2)
|
||||
expect(changeDescription[0].type).eq("way")
|
||||
expect(changeDescription[1].type).eq("way")
|
||||
expect(changeDescription.length).toBe(2)
|
||||
expect(changeDescription[0].type).toBe("way")
|
||||
expect(changeDescription[1].type).toBe("way")
|
||||
expect(
|
||||
changeDescription[0].changes["nodes"][changeDescription[0].changes["nodes"].length - 1]
|
||||
).eq(changeDescription[1].changes["nodes"][0])
|
||||
expect(changeDescription[1].changes["nodes"][0]).eq(1507524610)
|
||||
).toBe(changeDescription[1].changes["nodes"][0])
|
||||
expect(changeDescription[1].changes["nodes"][0]).toBe(1507524610)
|
||||
})
|
||||
|
||||
it("split 61435323 on already existing node", async () => {
|
||||
|
@ -2733,8 +2732,8 @@ describe("SplitAction", () => {
|
|||
const changeDescription = await splitter.CreateChangeDescriptions(new Changes())
|
||||
|
||||
// Should be a new node
|
||||
expect(changeDescription[0].type).eq("node")
|
||||
expect(changeDescription[3].type).eq("relation")
|
||||
expect(changeDescription[0].type).toBe("node")
|
||||
expect(changeDescription[3].type).toBe("relation")
|
||||
})
|
||||
|
||||
it("Split test line", async () => {
|
||||
|
@ -2764,11 +2763,11 @@ describe("SplitAction", () => {
|
|||
8715440363
|
||||
*/
|
||||
|
||||
expect(changes[0].changes["nodes"]).deep.equal([
|
||||
expect(changes[0].changes["nodes"]).toEqual([
|
||||
6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371, 8715440370,
|
||||
8715440369, 8715440368,
|
||||
])
|
||||
expect(changes[1].changes["nodes"]).deep.equal([
|
||||
expect(changes[1].changes["nodes"]).toEqual([
|
||||
8715440368, 8715440367, 8715440366, 8715440365, 8715440364, 8715440363,
|
||||
])
|
||||
})
|
||||
|
@ -2784,14 +2783,14 @@ describe("SplitAction", () => {
|
|||
const changes = await splitAction.Perform(new Changes())
|
||||
|
||||
// THe first change is the creation of the new node
|
||||
expect(changes[0].type).deep.equal("node")
|
||||
expect(changes[0].id).deep.equal(-1)
|
||||
expect(changes[0].type).toEqual("node")
|
||||
expect(changes[0].id).toEqual(-1)
|
||||
|
||||
expect(changes[1].changes["nodes"]).deep.equal([
|
||||
expect(changes[1].changes["nodes"]).toEqual([
|
||||
6490126559, 8715440375, 8715440374, 8715440373, 8715440372, 8715440371, 8715440370,
|
||||
8715440369, -1,
|
||||
])
|
||||
expect(changes[2].changes["nodes"]).deep.equal([
|
||||
expect(changes[2].changes["nodes"]).toEqual([
|
||||
-1, 8715440368, 8715440367, 8715440366, 8715440365, 8715440364, 8715440363,
|
||||
])
|
||||
})
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { expect } from "chai"
|
||||
import { ChangeDescription } from "../../../Logic/Osm/Actions/ChangeDescription"
|
||||
import { Changes } from "../../../Logic/Osm/Changes"
|
||||
import { expect, it } from "vitest"
|
||||
|
||||
it("Generate preXML from changeDescriptions", () => {
|
||||
const changeDescrs: ChangeDescription[] = [
|
||||
|
@ -29,11 +29,11 @@ it("Generate preXML from changeDescriptions", () => {
|
|||
]
|
||||
const c = new Changes()
|
||||
const descr = c.CreateChangesetObjects(changeDescrs, [])
|
||||
expect(descr.modifiedObjects).length(0)
|
||||
expect(descr.deletedObjects).length(0)
|
||||
expect(descr.newObjects).length(1)
|
||||
expect(descr.modifiedObjects).toHaveLength(0)
|
||||
expect(descr.deletedObjects).toHaveLength(0)
|
||||
expect(descr.newObjects).toHaveLength(1)
|
||||
|
||||
const ch = descr.newObjects[0]
|
||||
expect(ch.tags["foo"]).eq("bar")
|
||||
expect(ch.tags["someKey"]).eq("someValue")
|
||||
expect(ch.tags["foo"]).toBe("bar")
|
||||
expect(ch.tags["someKey"]).toBe("someValue")
|
||||
})
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { Utils } from "../../../Utils"
|
||||
import { ChangesetHandler, ChangesetTag } from "../../../Logic/Osm/ChangesetHandler"
|
||||
import { UIEventSource } from "../../../Logic/UIEventSource"
|
||||
import { OsmConnection } from "../../../Logic/Osm/OsmConnection"
|
||||
import { ElementStorage } from "../../../Logic/ElementStorage"
|
||||
import { Changes } from "../../../Logic/Osm/Changes"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("ChangesetHanlder", () => {
|
||||
describe("RewriteTagsOf", () => {
|
||||
|
@ -56,18 +55,16 @@ describe("ChangesetHanlder", () => {
|
|||
oldChangesetMeta
|
||||
)
|
||||
const d = Utils.asDict(rewritten)
|
||||
expect(d.size).deep.equal(10)
|
||||
expect(d.get("answer")).deep.equal("5")
|
||||
expect(d.get("comment")).deep.equal(
|
||||
"Adding data with #MapComplete for theme #toerisme_vlaanderen"
|
||||
)
|
||||
expect(d.get("created_by")).deep.equal("MapComplete 0.16.6")
|
||||
expect(d.get("host")).deep.equal("https://mapcomplete.osm.be/toerisme_vlaanderen.html")
|
||||
expect(d.get("imagery")).deep.equal("osm")
|
||||
expect(d.get("source")).deep.equal("survey")
|
||||
expect(d.get("source:node/-1")).deep.equal("note/1234")
|
||||
expect(d.get("theme")).deep.equal("toerisme_vlaanderen")
|
||||
expect(d.get("newTag")).deep.equal("newValue")
|
||||
expect(d.size).toEqual(10)
|
||||
expect(d.get("answer")).toEqual("5")
|
||||
expect(d.get("comment")).toEqual("Adding data with #MapComplete for theme #toerisme_vlaanderen")
|
||||
expect(d.get("created_by")).toEqual("MapComplete 0.16.6")
|
||||
expect(d.get("host")).toEqual("https://mapcomplete.osm.be/toerisme_vlaanderen.html")
|
||||
expect(d.get("imagery")).toEqual("osm")
|
||||
expect(d.get("source")).toEqual("survey")
|
||||
expect(d.get("source:node/-1")).toEqual("note/1234")
|
||||
expect(d.get("theme")).toEqual("toerisme_vlaanderen")
|
||||
expect(d.get("newTag")).toEqual("newValue")
|
||||
})
|
||||
it("should aggregate numeric tags", () => {
|
||||
const changesetHandler = new ChangesetHandler(
|
||||
|
@ -116,17 +113,15 @@ describe("ChangesetHanlder", () => {
|
|||
)
|
||||
const d = Utils.asDict(rewritten)
|
||||
|
||||
expect(d.size).deep.equal(9)
|
||||
expect(d.get("answer")).deep.equal("42")
|
||||
expect(d.get("comment")).deep.equal(
|
||||
"Adding data with #MapComplete for theme #toerisme_vlaanderen"
|
||||
)
|
||||
expect(d.get("created_by")).deep.equal("MapComplete 0.16.6")
|
||||
expect(d.get("host")).deep.equal("https://mapcomplete.osm.be/toerisme_vlaanderen.html")
|
||||
expect(d.get("imagery")).deep.equal("osm")
|
||||
expect(d.get("source")).deep.equal("survey")
|
||||
expect(d.get("source:node/-1")).deep.equal("note/1234")
|
||||
expect(d.get("theme")).deep.equal("toerisme_vlaanderen")
|
||||
expect(d.size).toEqual(9)
|
||||
expect(d.get("answer")).toEqual("42")
|
||||
expect(d.get("comment")).toEqual("Adding data with #MapComplete for theme #toerisme_vlaanderen")
|
||||
expect(d.get("created_by")).toEqual("MapComplete 0.16.6")
|
||||
expect(d.get("host")).toEqual("https://mapcomplete.osm.be/toerisme_vlaanderen.html")
|
||||
expect(d.get("imagery")).toEqual("osm")
|
||||
expect(d.get("source")).toEqual("survey")
|
||||
expect(d.get("source:node/-1")).toEqual("note/1234")
|
||||
expect(d.get("theme")).toEqual("toerisme_vlaanderen")
|
||||
})
|
||||
it("should rewrite special reasons with the correct ID", () => {
|
||||
const changesetHandler = new ChangesetHandler(
|
||||
|
@ -169,17 +164,15 @@ describe("ChangesetHanlder", () => {
|
|||
)
|
||||
const d = Utils.asDict(rewritten)
|
||||
|
||||
expect(d.size).deep.equal(9)
|
||||
expect(d.get("answer")).deep.equal("5")
|
||||
expect(d.get("comment")).deep.equal(
|
||||
"Adding data with #MapComplete for theme #toerisme_vlaanderen"
|
||||
)
|
||||
expect(d.get("created_by")).deep.equal("MapComplete 0.16.6")
|
||||
expect(d.get("host")).deep.equal("https://mapcomplete.osm.be/toerisme_vlaanderen.html")
|
||||
expect(d.get("imagery")).deep.equal("osm")
|
||||
expect(d.get("source")).deep.equal("survey")
|
||||
expect(d.get("source:node/42")).deep.equal("note/1234")
|
||||
expect(d.get("theme")).deep.equal("toerisme_vlaanderen")
|
||||
expect(d.size).toEqual(9)
|
||||
expect(d.get("answer")).toEqual("5")
|
||||
expect(d.get("comment")).toEqual("Adding data with #MapComplete for theme #toerisme_vlaanderen")
|
||||
expect(d.get("created_by")).toEqual("MapComplete 0.16.6")
|
||||
expect(d.get("host")).toEqual("https://mapcomplete.osm.be/toerisme_vlaanderen.html")
|
||||
expect(d.get("imagery")).toEqual("osm")
|
||||
expect(d.get("source")).toEqual("survey")
|
||||
expect(d.get("source:node/42")).toEqual("note/1234")
|
||||
expect(d.get("theme")).toEqual("toerisme_vlaanderen")
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -200,12 +193,13 @@ describe("ChangesetHanlder", () => {
|
|||
extraMetaTags,
|
||||
changes
|
||||
)
|
||||
expect(hasSpecialMotivationChanges, "Special rewrite did not trigger").true
|
||||
// "Special rewrite did not trigger"
|
||||
expect(hasSpecialMotivationChanges).toBe(true)
|
||||
// Rewritten inline by rewriteMetaTags
|
||||
expect(extraMetaTags[1].key).deep.equal("source:node/42")
|
||||
expect(extraMetaTags[1].value).deep.equal("note/1234")
|
||||
expect(extraMetaTags[0].key).deep.equal("created_by")
|
||||
expect(extraMetaTags[0].value).deep.equal("mapcomplete")
|
||||
expect(extraMetaTags[1].key).toEqual("source:node/42")
|
||||
expect(extraMetaTags[1].value).toEqual("note/1234")
|
||||
expect(extraMetaTags[0].key).toEqual("created_by")
|
||||
expect(extraMetaTags[0].value).toEqual("mapcomplete")
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { OsmObject } from "../../../Logic/Osm/OsmObject"
|
||||
import { Utils } from "../../../Utils"
|
||||
import ScriptUtils from "../../../scripts/ScriptUtils"
|
||||
import { readFileSync } from "fs"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("OsmObject", () => {
|
||||
describe("download referencing ways", () => {
|
||||
|
@ -81,8 +80,8 @@ describe("OsmObject", () => {
|
|||
|
||||
it("should download referencing ways", async () => {
|
||||
const ways = await OsmObject.DownloadReferencingWays("node/1124134958")
|
||||
expect(ways).not.undefined
|
||||
expect(ways).length(4)
|
||||
expect(ways).toBeDefined()
|
||||
expect(ways).toHaveLength(4)
|
||||
})
|
||||
|
||||
it("should download full OSM-relations", async () => {
|
||||
|
@ -93,7 +92,7 @@ describe("OsmObject", () => {
|
|||
)
|
||||
const r = await OsmObject.DownloadObjectAsync("relation/5759328").then((x) => x)
|
||||
const geojson = r.asGeoJson()
|
||||
expect(geojson.geometry.type).eq("MultiPolygon")
|
||||
expect(geojson.geometry.type).toBe("MultiPolygon")
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { TagUtils } from "../../../Logic/Tags/TagUtils"
|
||||
import { Tag } from "../../../Logic/Tags/Tag"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("Lazy object properties", () => {
|
||||
it("should be matche by a normal tag", () => {
|
||||
|
@ -16,7 +15,7 @@ describe("Lazy object properties", () => {
|
|||
},
|
||||
})
|
||||
const filter = new Tag("_key", "yes")
|
||||
expect(filter.matchesProperties(properties)).true
|
||||
expect(filter.matchesProperties(properties)).toBe(true)
|
||||
})
|
||||
|
||||
it("should be matched by a RegexTag", () => {
|
||||
|
@ -31,6 +30,6 @@ describe("Lazy object properties", () => {
|
|||
},
|
||||
})
|
||||
const filter = TagUtils.Tag("_key~*")
|
||||
expect(filter.matchesProperties(properties)).true
|
||||
expect(filter.matchesProperties(properties)).toBe(true)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,30 +1,29 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { TagsFilter } from "../../../Logic/Tags/TagsFilter"
|
||||
import { And } from "../../../Logic/Tags/And"
|
||||
import { Tag } from "../../../Logic/Tags/Tag"
|
||||
import { TagUtils } from "../../../Logic/Tags/TagUtils"
|
||||
import { Or } from "../../../Logic/Tags/Or"
|
||||
import { RegexTag } from "../../../Logic/Tags/RegexTag"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("Tag optimalization", () => {
|
||||
describe("And", () => {
|
||||
it("with condition and nested and should be flattened", () => {
|
||||
const t = new And([new And([new Tag("x", "y")]), new Tag("a", "b")])
|
||||
const opt = <TagsFilter>t.optimize()
|
||||
expect(TagUtils.toString(opt)).eq(`a=b&x=y`)
|
||||
expect(TagUtils.toString(opt)).toBe(`a=b&x=y`)
|
||||
})
|
||||
|
||||
it("should be 'true' if no conditions are given", () => {
|
||||
const t = new And([])
|
||||
const opt = t.optimize()
|
||||
expect(opt).eq(true)
|
||||
expect(opt).toBe(true)
|
||||
})
|
||||
|
||||
it("should return false on conflicting tags", () => {
|
||||
const t = new And([new Tag("key", "a"), new Tag("key", "b")])
|
||||
const opt = t.optimize()
|
||||
expect(opt).eq(false)
|
||||
expect(opt).toBe(false)
|
||||
})
|
||||
|
||||
it("with nested ors and common property should be extracted", () => {
|
||||
|
@ -35,7 +34,7 @@ describe("Tag optimalization", () => {
|
|||
new Or([new Tag("x", "y"), new Tag("c", "d")]),
|
||||
])
|
||||
const opt = <TagsFilter>t.optimize()
|
||||
expect(TagUtils.toString(opt)).eq("foo=bar& (x=y| (a=b&c=d) )")
|
||||
expect(TagUtils.toString(opt)).toBe("foo=bar& (x=y| (a=b&c=d) )")
|
||||
})
|
||||
|
||||
it("with nested ors and common regextag should be extracted", () => {
|
||||
|
@ -46,7 +45,7 @@ describe("Tag optimalization", () => {
|
|||
new Or([new RegexTag("x", "y"), new RegexTag("c", "d")]),
|
||||
])
|
||||
const opt = <TagsFilter>t.optimize()
|
||||
expect(TagUtils.toString(opt)).eq("foo=bar& ( (a=b&c=d) |x=y)")
|
||||
expect(TagUtils.toString(opt)).toBe("foo=bar& ( (a=b&c=d) |x=y)")
|
||||
})
|
||||
|
||||
it("with nested ors and inverted regextags should _not_ be extracted", () => {
|
||||
|
@ -57,19 +56,19 @@ describe("Tag optimalization", () => {
|
|||
new Or([new RegexTag("x", "y", true), new RegexTag("c", "d")]),
|
||||
])
|
||||
const opt = <TagsFilter>t.optimize()
|
||||
expect(TagUtils.toString(opt)).eq("foo=bar& (a=b|x=y) & (c=d|x!=y)")
|
||||
expect(TagUtils.toString(opt)).toBe("foo=bar& (a=b|x=y) & (c=d|x!=y)")
|
||||
})
|
||||
|
||||
it("should move regextag to the end", () => {
|
||||
const t = new And([new RegexTag("x", "y"), new Tag("a", "b")])
|
||||
const opt = <TagsFilter>t.optimize()
|
||||
expect(TagUtils.toString(opt)).eq("a=b&x=y")
|
||||
expect(TagUtils.toString(opt)).toBe("a=b&x=y")
|
||||
})
|
||||
|
||||
it("should sort tags by their popularity (least popular first)", () => {
|
||||
const t = new And([new Tag("bicycle", "yes"), new Tag("amenity", "binoculars")])
|
||||
const opt = <TagsFilter>t.optimize()
|
||||
expect(TagUtils.toString(opt)).eq("amenity=binoculars&bicycle=yes")
|
||||
expect(TagUtils.toString(opt)).toBe("amenity=binoculars&bicycle=yes")
|
||||
})
|
||||
|
||||
it("should optimize nested ORs", () => {
|
||||
|
@ -163,17 +162,17 @@ describe("Tag optimalization", () => {
|
|||
"leisure=playground&playground!=forest",
|
||||
]
|
||||
|
||||
expect((<Or>opt).or.map((f) => TagUtils.toString(f))).deep.eq(expected)
|
||||
expect((<Or>opt).or.map((f) => TagUtils.toString(f))).toEqual(expected)
|
||||
})
|
||||
|
||||
it("should detect conflicting tags", () => {
|
||||
const q = new And([new Tag("key", "value"), new RegexTag("key", "value", true)])
|
||||
expect(q.optimize()).eq(false)
|
||||
expect(q.optimize()).toBe(false)
|
||||
})
|
||||
|
||||
it("should detect conflicting tags with a regex", () => {
|
||||
const q = new And([new Tag("key", "value"), new RegexTag("key", /value/, true)])
|
||||
expect(q.optimize()).eq(false)
|
||||
expect(q.optimize()).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -184,17 +183,17 @@ describe("Tag optimalization", () => {
|
|||
new And([new Tag("foo", "bar"), new Tag("x", "y")]),
|
||||
])
|
||||
const opt = <TagsFilter>t.optimize()
|
||||
expect(TagUtils.toString(opt)).eq("foo=bar")
|
||||
expect(TagUtils.toString(opt)).toBe("foo=bar")
|
||||
})
|
||||
|
||||
it("should flatten nested ors", () => {
|
||||
const t = new Or([new Or([new Tag("x", "y")])]).optimize()
|
||||
expect(t).deep.eq(new Tag("x", "y"))
|
||||
expect(t).toEqual(new Tag("x", "y"))
|
||||
})
|
||||
|
||||
it("should flatten nested ors", () => {
|
||||
const t = new Or([new Tag("a", "b"), new Or([new Tag("x", "y")])]).optimize()
|
||||
expect(t).deep.eq(new Or([new Tag("a", "b"), new Tag("x", "y")]))
|
||||
expect(t).toEqual(new Or([new Tag("a", "b"), new Tag("x", "y")]))
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -259,33 +258,31 @@ describe("Tag optimalization", () => {
|
|||
)
|
||||
*/
|
||||
|
||||
expect(opt).deep.eq(
|
||||
TagUtils.Tag({
|
||||
or: [
|
||||
"club=climbing",
|
||||
{
|
||||
and: ["sport=climbing", { or: ["club~*", "office~*"] }],
|
||||
},
|
||||
{
|
||||
and: [
|
||||
"sport=climbing",
|
||||
{
|
||||
or: [
|
||||
"leisure=sports_centre",
|
||||
{
|
||||
and: [
|
||||
"climbing!~route",
|
||||
"climbing!=route_top",
|
||||
"climbing!=route_bottom",
|
||||
"leisure!~sports_centre",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
})
|
||||
)
|
||||
expect(opt).toEqual(TagUtils.Tag({
|
||||
or: [
|
||||
"club=climbing",
|
||||
{
|
||||
and: ["sport=climbing", { or: ["club~*", "office~*"] }],
|
||||
},
|
||||
{
|
||||
and: [
|
||||
"sport=climbing",
|
||||
{
|
||||
or: [
|
||||
"leisure=sports_centre",
|
||||
{
|
||||
and: [
|
||||
"climbing!~route",
|
||||
"climbing!=route_top",
|
||||
"climbing!=route_bottom",
|
||||
"leisure!~sports_centre",
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}))
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { TagUtils } from "../../../Logic/Tags/TagUtils"
|
||||
import { equal } from "assert"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
|
||||
describe("TagUtils", () => {
|
||||
describe("ParseTag", () => {
|
||||
it("should refuse a key!=* tag", () => {
|
||||
expect(() => TagUtils.Tag("key!=*")).to.throw()
|
||||
expect(() => TagUtils.Tag("key!=*")).toThrowError()
|
||||
})
|
||||
|
||||
it("should handle compare tag <=5", () => {
|
||||
|
@ -42,8 +42,8 @@ describe("TagUtils", () => {
|
|||
|
||||
it("should handle date comparison tags", () => {
|
||||
const filter = TagUtils.Tag("date_created<2022-01-07")
|
||||
expect(filter.matchesProperties({ date_created: "2022-01-08" })).false
|
||||
expect(filter.matchesProperties({ date_created: "2022-01-01" })).true
|
||||
expect(filter.matchesProperties({ date_created: "2022-01-08" })).toBe(false)
|
||||
expect(filter.matchesProperties({ date_created: "2022-01-01" })).toBe(true)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { Utils } from "../../../Utils"
|
||||
import Wikidata from "../../../Logic/Web/Wikidata"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
const Q140 = {
|
||||
entities: {
|
||||
|
@ -9464,21 +9463,20 @@ Utils.injectJsonDownloadForTests(
|
|||
describe("Wikidata", () => {
|
||||
it("should download Q140 (lion)", async () => {
|
||||
const wikidata = await Wikidata.LoadWikidataEntryAsync("Q140")
|
||||
expect(wikidata.claims.get("P18")).length(2)
|
||||
expect(wikidata.claims.get("P18")).toHaveLength(2)
|
||||
})
|
||||
|
||||
it("should download wikidata", async () => {
|
||||
const wdata = await Wikidata.LoadWikidataEntryAsync(14517013)
|
||||
expect(wdata.wikisites).to.have.key("nl")
|
||||
expect(wdata.wikisites.get("nl")).eq("Vredesmolen")
|
||||
expect(wdata.wikisites.get("nl")).toBe("Vredesmolen")
|
||||
})
|
||||
|
||||
it("should download a lexeme", async () => {
|
||||
const response = await Wikidata.LoadWikidataEntryAsync(
|
||||
"https://www.wikidata.org/wiki/Lexeme:L614072"
|
||||
)
|
||||
expect(response).not.undefined
|
||||
expect(response.labels).to.have.key("nl")
|
||||
expect(response.labels).to.contains("Groen")
|
||||
|
||||
expect(response).toBeDefined()
|
||||
expect(response.labels).toEqual(new Map<string, string>([["nl", "Groen"]]))
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { Utils } from "../../../../Utils"
|
||||
import { DesugaringContext } from "../../../../Models/ThemeConfig/Conversion/Conversion"
|
||||
import { LayerConfigJson } from "../../../../Models/ThemeConfig/Json/LayerConfigJson"
|
||||
|
@ -7,6 +5,7 @@ import { TagRenderingConfigJson } from "../../../../Models/ThemeConfig/Json/TagR
|
|||
import { PrepareLayer } from "../../../../Models/ThemeConfig/Conversion/PrepareLayer"
|
||||
import * as bookcases from "../../../../assets/layers/public_bookcase/public_bookcase.json"
|
||||
import CreateNoteImportLayer from "../../../../Models/ThemeConfig/Conversion/CreateNoteImportLayer"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("CreateNoteImportLayer", () => {
|
||||
it("should generate a layerconfig", () => {
|
||||
|
@ -24,18 +23,15 @@ describe("CreateNoteImportLayer", () => {
|
|||
layer,
|
||||
"ImportLayerGeneratorTest: convert"
|
||||
)
|
||||
expect(generatedLayer.isShown["and"][1].or[0].and[0]).deep.equal(
|
||||
"_tags~(^|.*;)amenity=public_bookcase($|;.*)"
|
||||
)
|
||||
expect(generatedLayer.minzoom <= layer.minzoom, "Zoomlevel is to high").true
|
||||
expect(generatedLayer.isShown["and"][1].or[0].and[0]).toEqual("_tags~(^|.*;)amenity=public_bookcase($|;.*)")
|
||||
// "Zoomlevel is to high"
|
||||
expect(generatedLayer.minzoom <= layer.minzoom).toBe(true)
|
||||
let renderings = Utils.NoNull(
|
||||
Utils.NoNull(
|
||||
generatedLayer.tagRenderings.map((tr) => (<TagRenderingConfigJson>tr).render)
|
||||
).map((render) => render["en"])
|
||||
)
|
||||
expect(
|
||||
renderings.some((r) => r.indexOf("import_button") > 0),
|
||||
"no import button found"
|
||||
).true
|
||||
// "no import button found"
|
||||
expect(renderings.some((r) => r.indexOf("import_button") > 0)).toBe(true)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import LayoutConfig from "../../../../Models/ThemeConfig/LayoutConfig"
|
||||
import { FixLegacyTheme } from "../../../../Models/ThemeConfig/Conversion/LegacyJsonConvert"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("FixLegacyTheme", () => {
|
||||
it("should create a working theme config", () => {
|
||||
|
@ -135,8 +134,9 @@ describe("FixLegacyTheme", () => {
|
|||
],
|
||||
}
|
||||
const fixed = new FixLegacyTheme().convert(<any>walking_node_theme, "While testing")
|
||||
expect(fixed.errors, "Could not fix the legacy theme").empty
|
||||
// "Could not fix the legacy theme"
|
||||
expect(fixed.errors).empty
|
||||
const theme = new LayoutConfig(fixed.result, false)
|
||||
expect(theme).not.undefined
|
||||
expect(theme).toBeDefined()
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { LayerConfigJson } from "../../../../Models/ThemeConfig/Json/LayerConfigJson"
|
||||
import { TagRenderingConfigJson } from "../../../../Models/ThemeConfig/Json/TagRenderingConfigJson"
|
||||
import LineRenderingConfigJson from "../../../../Models/ThemeConfig/Json/LineRenderingConfigJson"
|
||||
|
@ -10,6 +8,7 @@ import {
|
|||
} from "../../../../Models/ThemeConfig/Conversion/PrepareLayer"
|
||||
import { QuestionableTagRenderingConfigJson } from "../../../../Models/ThemeConfig/Json/QuestionableTagRenderingConfigJson"
|
||||
import RewritableConfigJson from "../../../../Models/ThemeConfig/Json/RewritableConfigJson"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("ExpandRewrite", () => {
|
||||
it("should not allow overlapping keys", () => {
|
||||
|
@ -106,7 +105,7 @@ describe("PrepareLayer", () => {
|
|||
titleIcons: [{ render: "defaults", id: "defaults" }],
|
||||
}
|
||||
|
||||
expect(result).deep.eq(expected)
|
||||
expect(result).toEqual(expected)
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -126,7 +125,7 @@ describe("RewriteSpecial", function () {
|
|||
},
|
||||
}
|
||||
const r = new RewriteSpecial().convert(tr, "test").result
|
||||
expect(r).to.deep.eq({
|
||||
expect(r).toEqual({
|
||||
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,)}",
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { LayoutConfigJson } from "../../../../Models/ThemeConfig/Json/LayoutConfigJson"
|
||||
import { LayerConfigJson } from "../../../../Models/ThemeConfig/Json/LayerConfigJson"
|
||||
import { PrepareTheme } from "../../../../Models/ThemeConfig/Conversion/PrepareTheme"
|
||||
|
@ -12,6 +10,7 @@ import * as cyclofix from "../../../../assets/generated/themes/cyclofix.json"
|
|||
import { Tag } from "../../../../Logic/Tags/Tag"
|
||||
import { DesugaringContext } from "../../../../Models/ThemeConfig/Conversion/Conversion"
|
||||
import { And } from "../../../../Logic/Tags/And"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
const themeConfigJson: LayoutConfigJson = {
|
||||
description: "Descr",
|
||||
|
@ -49,7 +48,7 @@ describe("PrepareTheme", () => {
|
|||
const layerUnderTest = <LayerConfig>(
|
||||
themeConfig.layers.find((l) => l.id === "public_bookcase")
|
||||
)
|
||||
expect(layerUnderTest.source.osmTags).deep.eq(
|
||||
expect(layerUnderTest.source.osmTags).toEqual(
|
||||
new And([new Tag("amenity", "public_bookcase")])
|
||||
)
|
||||
})
|
||||
|
@ -65,7 +64,7 @@ describe("PrepareTheme", () => {
|
|||
const layerUnderTest = <LayerConfig>(
|
||||
themeConfig.layers.find((l) => l.id === "public_bookcase")
|
||||
)
|
||||
expect(layerUnderTest.source.geojsonSource).eq("xyz")
|
||||
expect(layerUnderTest.source.geojsonSource).toBe("xyz")
|
||||
})
|
||||
|
||||
it("should apply override", () => {
|
||||
|
@ -85,7 +84,7 @@ describe("PrepareTheme", () => {
|
|||
const layerUnderTest = <LayerConfig>(
|
||||
themeConfig.layers.find((l) => l.id === "public_bookcase")
|
||||
)
|
||||
expect(layerUnderTest.source.geojsonSource).eq("https://example.com/data.geojson")
|
||||
expect(layerUnderTest.source.geojsonSource).toBe("https://example.com/data.geojson")
|
||||
})
|
||||
|
||||
it("should remove names which are overriden with null", () => {
|
||||
|
@ -126,8 +125,8 @@ describe("PrepareTheme", () => {
|
|||
const rewritten = new PrepareTheme(ctx, {
|
||||
skipDefaultLayers: true,
|
||||
}).convertStrict(layout, "test")
|
||||
expect(rewritten.layers[0]).deep.eq(testLayer)
|
||||
expect(rewritten.layers[1]).deep.eq({
|
||||
expect(rewritten.layers[0]).toEqual(testLayer)
|
||||
expect(rewritten.layers[1]).toEqual({
|
||||
source: {
|
||||
osmTags: "x=y",
|
||||
},
|
||||
|
@ -158,7 +157,7 @@ describe("ExtractImages", () => {
|
|||
"close",
|
||||
]
|
||||
for (const expected of expectedValues) {
|
||||
expect(images).contains(expected)
|
||||
expect(images).toEqual(expect.arrayContaining([expected]))
|
||||
}
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import SourceConfig from "../../../Models/ThemeConfig/SourceConfig"
|
||||
import { TagUtils } from "../../../Logic/Tags/TagUtils"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("SourceConfig", () => {
|
||||
it("should throw an error on conflicting tags", () => {
|
||||
|
@ -14,6 +13,6 @@ describe("SourceConfig", () => {
|
|||
},
|
||||
false
|
||||
)
|
||||
}).to.throw(/tags are conflicting/)
|
||||
}).toThrowError(/tags are conflicting/)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import TagRenderingConfig from "../../../Models/ThemeConfig/TagRenderingConfig"
|
||||
import Locale from "../../../UI/i18n/Locale"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("TagRenderingConfig", () => {
|
||||
describe("isKnown", () => {
|
||||
|
@ -26,11 +25,11 @@ describe("TagRenderingConfig", () => {
|
|||
"Tests"
|
||||
)
|
||||
|
||||
expect(tr.GetRenderValue({ foo: "bar" })).undefined
|
||||
expect(tr.GetRenderValue({ foo: "bar" })).toBeUndefined()
|
||||
|
||||
expect(tr.GetRenderValue({ noname: "yes" })?.textFor("nl")).eq("Has no name")
|
||||
expect(tr.GetRenderValue({ name: "xyz" })?.textFor("nl")).eq("Ook een {name}")
|
||||
expect(tr.GetRenderValue({ foo: "bar" })).undefined
|
||||
expect(tr.GetRenderValue({ noname: "yes" })?.textFor("nl")).toBe("Has no name")
|
||||
expect(tr.GetRenderValue({ name: "xyz" })?.textFor("nl")).toBe("Ook een {name}")
|
||||
expect(tr.GetRenderValue({ foo: "bar" })).toBeUndefined()
|
||||
})
|
||||
|
||||
it("should give a correct indication", () => {
|
||||
|
@ -63,8 +62,8 @@ describe("TagRenderingConfig", () => {
|
|||
}
|
||||
|
||||
const tagRendering = new TagRenderingConfig(config, "test")
|
||||
expect(tagRendering.IsKnown({ bottle: "yes" })).true
|
||||
expect(tagRendering.IsKnown({})).false
|
||||
expect(tagRendering.IsKnown({ bottle: "yes" })).toBe(true)
|
||||
expect(tagRendering.IsKnown({})).toBe(false)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { Unit } from "../../Models/Unit"
|
||||
import { Denomination } from "../../Models/Denomination"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("Unit", () => {
|
||||
it("should convert a value back and forth", () => {
|
||||
|
@ -19,10 +18,10 @@ describe("Unit", () => {
|
|||
)
|
||||
|
||||
const canonical = denomintion.canonicalValue("5", true)
|
||||
expect(canonical).eq("5 MW")
|
||||
expect(canonical).toBe("5 MW")
|
||||
const units = new Unit(["key"], [denomintion], false)
|
||||
const [detected, detectedDenom] = units.findDenomination("5 MW", () => "be")
|
||||
expect(detected).eq("5")
|
||||
expect(detectedDenom).eq(denomintion)
|
||||
expect(detected).toBe("5")
|
||||
expect(detectedDenom).toBe(denomintion)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
import { describe } from "mocha"
|
||||
import { TagRenderingConfigJson } from "../../../Models/ThemeConfig/Json/TagRenderingConfigJson"
|
||||
import TagRenderingConfig from "../../../Models/ThemeConfig/TagRenderingConfig"
|
||||
import TagRenderingQuestion from "../../../UI/Popup/TagRenderingQuestion"
|
||||
import { UIEventSource } from "../../../Logic/UIEventSource"
|
||||
import { expect } from "chai"
|
||||
import Locale from "../../../UI/i18n/Locale"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("TagRenderingQuestion", () => {
|
||||
it("should have a freeform text field with the user defined placeholder", () => {
|
||||
|
@ -21,7 +20,7 @@ describe("TagRenderingQuestion", () => {
|
|||
const config = new TagRenderingConfig(configJson, "test")
|
||||
const ui = new TagRenderingQuestion(new UIEventSource<any>({}), config)
|
||||
const html = ui.ConstructElement()
|
||||
expect(html.getElementsByTagName("input")[0]["placeholder"]).eq(
|
||||
expect(html.getElementsByTagName("input")[0]["placeholder"]).toBe(
|
||||
"Some user defined placeholder"
|
||||
)
|
||||
})
|
||||
|
@ -40,7 +39,7 @@ describe("TagRenderingQuestion", () => {
|
|||
const config = new TagRenderingConfig(configJson, "test")
|
||||
const ui = new TagRenderingQuestion(new UIEventSource<any>({}), config)
|
||||
const html = ui.ConstructElement()
|
||||
expect(html.getElementsByTagName("input")[0]["placeholder"]).eq(
|
||||
expect(html.getElementsByTagName("input")[0]["placeholder"]).toBe(
|
||||
"capacity (a positive, whole number)"
|
||||
)
|
||||
})
|
||||
|
|
|
@ -1,16 +1,12 @@
|
|||
import { describe } from "mocha"
|
||||
import SpecialVisualizations from "../../UI/SpecialVisualizations"
|
||||
import { expect } from "chai"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
describe("SpecialVisualisations", () => {
|
||||
describe("predifined special visualisations", () => {
|
||||
it("should not have an argument called 'type'", () => {
|
||||
const specials = SpecialVisualizations.specialVisualizations
|
||||
for (const special of specials) {
|
||||
expect(special.funcName).not.eq(
|
||||
"type",
|
||||
"A special visualisation is not allowed to be named 'type', as this will conflict with the 'special'-blocks"
|
||||
)
|
||||
expect(special.funcName).not.toBe("type")
|
||||
|
||||
if (special.args === undefined) {
|
||||
throw (
|
||||
|
@ -20,10 +16,7 @@ describe("SpecialVisualisations", () => {
|
|||
}
|
||||
|
||||
for (const arg of special.args) {
|
||||
expect(arg.name).not.eq(
|
||||
"type",
|
||||
"An argument is not allowed to be called 'type', as this will conflict with the 'special'-blocks"
|
||||
)
|
||||
expect(arg.name).not.toBe("type")
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import { Utils } from "../Utils"
|
||||
import LZString from "lz-string"
|
||||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
const example = {
|
||||
id: "bookcases",
|
||||
|
@ -36,25 +35,25 @@ describe("Utils", () => {
|
|||
const str = JSON.stringify({ title: "abc", and: "xyz", render: "somevalue" })
|
||||
const minified = Utils.MinifyJSON(str)
|
||||
const restored = Utils.UnMinify(minified)
|
||||
expect(str).eq(restored)
|
||||
expect(str).toBe(restored)
|
||||
})
|
||||
it("should minify and restore the bookcase example", () => {
|
||||
const str = JSON.stringify(example, null, 0)
|
||||
const minified = Utils.MinifyJSON(str)
|
||||
const restored = Utils.UnMinify(minified)
|
||||
expect(str).eq(restored)
|
||||
expect(str).toBe(restored)
|
||||
})
|
||||
it("should LZ-compress a theme", () => {
|
||||
const str = JSON.stringify(example, null, 0)
|
||||
const minified = LZString.compressToBase64(Utils.MinifyJSON(str))
|
||||
const restored = Utils.UnMinify(LZString.decompressFromBase64(minified))
|
||||
expect(str).eq(restored)
|
||||
expect(str).toBe(restored)
|
||||
})
|
||||
it("shoud be able to decode the LZ-compression of a theme", () => {
|
||||
const str = JSON.stringify(example, null, 0)
|
||||
const minified = LZString.compressToBase64(str)
|
||||
const restored = LZString.decompressFromBase64(minified)
|
||||
expect(str).eq(restored)
|
||||
expect(str).toBe(restored)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
import { describe } from "mocha"
|
||||
import { expect } from "chai"
|
||||
import { Utils } from "../../Utils"
|
||||
import { existsSync, mkdirSync, readFileSync, rmdirSync, unlinkSync } from "fs"
|
||||
import ScriptUtils from "../../scripts/ScriptUtils"
|
||||
import { main } from "../../scripts/generateCache"
|
||||
import { describe, expect, it } from "vitest"
|
||||
|
||||
function initDownloads(query: string) {
|
||||
const d = {
|
||||
|
@ -7613,10 +7612,8 @@ describe("GenerateCache", () => {
|
|||
encoding: "utf8",
|
||||
})
|
||||
)
|
||||
expect(birdhides.features.length).deep.equal(5)
|
||||
expect(
|
||||
birdhides.features.some((f) => f.properties.id === "node/5158056232"),
|
||||
"Didn't find birdhide node/5158056232 "
|
||||
).true
|
||||
expect(birdhides.features.length).toEqual(5)
|
||||
// "Didn't find birdhide node/5158056232 "
|
||||
expect(birdhides.features.some((f) => f.properties.id === "node/5158056232")).toBe(true)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -2,40 +2,18 @@ import ScriptUtils from "../scripts/ScriptUtils"
|
|||
import { Utils } from "../Utils"
|
||||
import * as fakedom from "fake-dom"
|
||||
import Locale from "../UI/i18n/Locale"
|
||||
import { beforeEach } from "vitest"
|
||||
|
||||
export const mochaHooks = {
|
||||
beforeEach(done) {
|
||||
ScriptUtils.fixUtils()
|
||||
Locale.language.setData("en")
|
||||
beforeEach(async () => {
|
||||
ScriptUtils.fixUtils()
|
||||
Locale.language.setData("en")
|
||||
|
||||
if (fakedom === undefined || window === undefined) {
|
||||
throw "FakeDom not initialized"
|
||||
}
|
||||
if (fakedom === undefined || window === undefined) {
|
||||
throw "FakeDom not initialized"
|
||||
}
|
||||
|
||||
// Block internet access
|
||||
const realDownloadFunc = Utils.externalDownloadFunction
|
||||
Utils.externalDownloadFunction = async (url) => {
|
||||
console.error(
|
||||
"Fetching ",
|
||||
url,
|
||||
"blocked in tests, use Utils.injectJsonDownloadForTests"
|
||||
)
|
||||
const data = await realDownloadFunc(url)
|
||||
console.log(
|
||||
"\n\n ----------- \nBLOCKED DATA\n Utils.injectJsonDownloadForTests(\n" + " ",
|
||||
JSON.stringify(url),
|
||||
", \n",
|
||||
" ",
|
||||
// JSON.stringify(data),
|
||||
"\n )\n------------------\n\n"
|
||||
)
|
||||
throw new Error(
|
||||
"Detected internet access for URL " +
|
||||
url +
|
||||
", please inject it with Utils.injectJsonDownloadForTests"
|
||||
)
|
||||
}
|
||||
|
||||
done()
|
||||
},
|
||||
}
|
||||
// Block internet access
|
||||
Utils.externalDownloadFunction = async (url) => {
|
||||
throw "Fetching " + url + "blocked in tests, use Utils.injectJsonDownloadForTests instead"
|
||||
}
|
||||
})
|
||||
|
|
8
vitest.config.ts
Normal file
8
vitest.config.ts
Normal file
|
@ -0,0 +1,8 @@
|
|||
import { defineConfig } from "vitest/config"
|
||||
|
||||
export default defineConfig({
|
||||
test: {
|
||||
globals: true,
|
||||
setupFiles: ["./test/testhooks.ts"],
|
||||
},
|
||||
})
|
Loading…
Reference in a new issue