mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 11:50:00 +00:00
Refactor mock-data for weather-tests generation (#3000)
Refactored the mock data generation for the tests so we can use plain JSON files for the data and read it in a more general way. Comments welcome! Co-authored-by: veeck <michael@veeck.de>
This commit is contained in:
parent
6e80e5a295
commit
877f8ad380
@ -12,6 +12,7 @@ _This release is scheduled to be released on 2023-04-01._
|
||||
### Added
|
||||
|
||||
- Added increments for hourly forecasts in weather module (#2996)
|
||||
- Added tests for hourly weather forecast
|
||||
|
||||
### Removed
|
||||
|
||||
|
@ -2,7 +2,7 @@ module.exports = async () => {
|
||||
return {
|
||||
verbose: true,
|
||||
testTimeout: 20000,
|
||||
testSequencer: "<rootDir>/tests/configs/test_sequencer.js",
|
||||
testSequencer: "<rootDir>/tests/utils/test_sequencer.js",
|
||||
projects: [
|
||||
{
|
||||
displayName: "unit",
|
||||
|
112
package-lock.json
generated
112
package-lock.json
generated
@ -27,17 +27,17 @@
|
||||
"socket.io": "^4.5.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-jest": "^27.2.0",
|
||||
"eslint-config-prettier": "^8.6.0",
|
||||
"eslint-plugin-jest": "^27.2.1",
|
||||
"eslint-plugin-jsdoc": "^39.6.4",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"express-basic-auth": "^1.2.1",
|
||||
"husky": "^8.0.2",
|
||||
"husky": "^8.0.3",
|
||||
"jest": "^29.3.1",
|
||||
"jsdom": "^20.0.3",
|
||||
"jsdom": "^21.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"playwright": "^1.29.1",
|
||||
"prettier": "^2.8.1",
|
||||
"playwright": "^1.29.2",
|
||||
"prettier": "^2.8.2",
|
||||
"pretty-quick": "^3.1.3",
|
||||
"sinon": "^15.0.1",
|
||||
"stylelint": "^14.16.1",
|
||||
@ -3125,9 +3125,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-config-prettier": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
|
||||
"integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
|
||||
"version": "8.6.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz",
|
||||
"integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"eslint-config-prettier": "bin/cli.js"
|
||||
@ -3137,9 +3137,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-plugin-jest": {
|
||||
"version": "27.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.0.tgz",
|
||||
"integrity": "sha512-KGIYtelk4rIhKocxRKUEeX+kJ0ZCab/CiSgS8BMcKD7AY7YxXhlg/d51oF5jq2rOrtuJEDYWRwXD95l6l2vtrA==",
|
||||
"version": "27.2.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz",
|
||||
"integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/utils": "^5.10.0"
|
||||
@ -4233,9 +4233,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/husky": {
|
||||
"version": "8.0.2",
|
||||
"resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz",
|
||||
"integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==",
|
||||
"version": "8.0.3",
|
||||
"resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz",
|
||||
"integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"husky": "lib/bin.js"
|
||||
@ -5194,9 +5194,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jsdom": {
|
||||
"version": "20.0.3",
|
||||
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
|
||||
"integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
|
||||
"version": "21.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.0.0.tgz",
|
||||
"integrity": "sha512-AIw+3ZakSUtDYvhwPwWHiZsUi3zHugpMEKlNPaurviseYoBqo0zBd3zqoUi3LPCNtPFlEP8FiW9MqCZdjb2IYA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"abab": "^2.0.6",
|
||||
@ -5420,9 +5420,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/luxon": {
|
||||
"version": "1.28.0",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz",
|
||||
"integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ==",
|
||||
"version": "1.28.1",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz",
|
||||
"integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
@ -6252,13 +6252,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/playwright": {
|
||||
"version": "1.29.1",
|
||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.29.1.tgz",
|
||||
"integrity": "sha512-lasC+pMqsQ2uWhNurt3YK3xo0gWlMjslYUylKbHcqF/NTjwp9KStRGO7S6wwz2f52GcSnop8XUK/GymJjdzrxw==",
|
||||
"version": "1.29.2",
|
||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.29.2.tgz",
|
||||
"integrity": "sha512-hKBYJUtdmYzcjdhYDkP9WGtORwwZBBKAW8+Lz7sr0ZMxtJr04ASXVzH5eBWtDkdb0c3LLFsehfPBTRfvlfKJOA==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"playwright-core": "1.29.1"
|
||||
"playwright-core": "1.29.2"
|
||||
},
|
||||
"bin": {
|
||||
"playwright": "cli.js"
|
||||
@ -6268,9 +6268,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/playwright-core": {
|
||||
"version": "1.29.1",
|
||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.29.1.tgz",
|
||||
"integrity": "sha512-20Ai3d+lMkWpI9YZYlxk8gxatfgax5STW8GaMozAHwigLiyiKQrdkt7gaoT9UQR8FIVDg6qVXs9IoZUQrDjIIg==",
|
||||
"version": "1.29.2",
|
||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.29.2.tgz",
|
||||
"integrity": "sha512-94QXm4PMgFoHAhlCuoWyaBYKb92yOcGVHdQLoxQ7Wjlc7Flg4aC/jbFW7xMR52OfXMVkWicue4WXE7QEegbIRA==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"playwright": "cli.js"
|
||||
@ -6359,9 +6359,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/prettier": {
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz",
|
||||
"integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==",
|
||||
"version": "2.8.2",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.2.tgz",
|
||||
"integrity": "sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"prettier": "bin-prettier.js"
|
||||
@ -10598,16 +10598,16 @@
|
||||
}
|
||||
},
|
||||
"eslint-config-prettier": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
|
||||
"integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==",
|
||||
"version": "8.6.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz",
|
||||
"integrity": "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==",
|
||||
"dev": true,
|
||||
"requires": {}
|
||||
},
|
||||
"eslint-plugin-jest": {
|
||||
"version": "27.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.0.tgz",
|
||||
"integrity": "sha512-KGIYtelk4rIhKocxRKUEeX+kJ0ZCab/CiSgS8BMcKD7AY7YxXhlg/d51oF5jq2rOrtuJEDYWRwXD95l6l2vtrA==",
|
||||
"version": "27.2.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.2.1.tgz",
|
||||
"integrity": "sha512-l067Uxx7ZT8cO9NJuf+eJHvt6bqJyz2Z29wykyEdz/OtmcELQl2MQGQLX8J94O1cSJWAwUSEvCjwjA7KEK3Hmg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@typescript-eslint/utils": "^5.10.0"
|
||||
@ -11413,9 +11413,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"husky": {
|
||||
"version": "8.0.2",
|
||||
"resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz",
|
||||
"integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==",
|
||||
"version": "8.0.3",
|
||||
"resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz",
|
||||
"integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==",
|
||||
"dev": true
|
||||
},
|
||||
"iconv-lite": {
|
||||
@ -12135,9 +12135,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"jsdom": {
|
||||
"version": "20.0.3",
|
||||
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz",
|
||||
"integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==",
|
||||
"version": "21.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.0.0.tgz",
|
||||
"integrity": "sha512-AIw+3ZakSUtDYvhwPwWHiZsUi3zHugpMEKlNPaurviseYoBqo0zBd3zqoUi3LPCNtPFlEP8FiW9MqCZdjb2IYA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"abab": "^2.0.6",
|
||||
@ -12317,9 +12317,9 @@
|
||||
}
|
||||
},
|
||||
"luxon": {
|
||||
"version": "1.28.0",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.0.tgz",
|
||||
"integrity": "sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ=="
|
||||
"version": "1.28.1",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz",
|
||||
"integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw=="
|
||||
},
|
||||
"make-dir": {
|
||||
"version": "3.1.0",
|
||||
@ -12936,18 +12936,18 @@
|
||||
}
|
||||
},
|
||||
"playwright": {
|
||||
"version": "1.29.1",
|
||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.29.1.tgz",
|
||||
"integrity": "sha512-lasC+pMqsQ2uWhNurt3YK3xo0gWlMjslYUylKbHcqF/NTjwp9KStRGO7S6wwz2f52GcSnop8XUK/GymJjdzrxw==",
|
||||
"version": "1.29.2",
|
||||
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.29.2.tgz",
|
||||
"integrity": "sha512-hKBYJUtdmYzcjdhYDkP9WGtORwwZBBKAW8+Lz7sr0ZMxtJr04ASXVzH5eBWtDkdb0c3LLFsehfPBTRfvlfKJOA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"playwright-core": "1.29.1"
|
||||
"playwright-core": "1.29.2"
|
||||
}
|
||||
},
|
||||
"playwright-core": {
|
||||
"version": "1.29.1",
|
||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.29.1.tgz",
|
||||
"integrity": "sha512-20Ai3d+lMkWpI9YZYlxk8gxatfgax5STW8GaMozAHwigLiyiKQrdkt7gaoT9UQR8FIVDg6qVXs9IoZUQrDjIIg==",
|
||||
"version": "1.29.2",
|
||||
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.29.2.tgz",
|
||||
"integrity": "sha512-94QXm4PMgFoHAhlCuoWyaBYKb92yOcGVHdQLoxQ7Wjlc7Flg4aC/jbFW7xMR52OfXMVkWicue4WXE7QEegbIRA==",
|
||||
"dev": true
|
||||
},
|
||||
"postcss": {
|
||||
@ -13002,9 +13002,9 @@
|
||||
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
|
||||
},
|
||||
"prettier": {
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz",
|
||||
"integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==",
|
||||
"version": "2.8.2",
|
||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.2.tgz",
|
||||
"integrity": "sha512-BtRV9BcncDyI2tsuS19zzhzoxD8Dh8LiCx7j7tHzrkz8GFXAexeWFdi22mjE1d16dftH2qNaytVxqiRTGlMfpw==",
|
||||
"dev": true
|
||||
},
|
||||
"prettier-linter-helpers": {
|
||||
|
12
package.json
12
package.json
@ -49,17 +49,17 @@
|
||||
},
|
||||
"homepage": "https://magicmirror.builders",
|
||||
"devDependencies": {
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-jest": "^27.2.0",
|
||||
"eslint-config-prettier": "^8.6.0",
|
||||
"eslint-plugin-jest": "^27.2.1",
|
||||
"eslint-plugin-jsdoc": "^39.6.4",
|
||||
"eslint-plugin-prettier": "^4.2.1",
|
||||
"express-basic-auth": "^1.2.1",
|
||||
"husky": "^8.0.2",
|
||||
"husky": "^8.0.3",
|
||||
"jest": "^29.3.1",
|
||||
"jsdom": "^20.0.3",
|
||||
"jsdom": "^21.0.0",
|
||||
"lodash": "^4.17.21",
|
||||
"playwright": "^1.29.1",
|
||||
"prettier": "^2.8.1",
|
||||
"playwright": "^1.29.2",
|
||||
"prettier": "^2.8.2",
|
||||
"pretty-quick": "^3.1.3",
|
||||
"sinon": "^15.0.1",
|
||||
"stylelint": "^14.16.1",
|
||||
|
@ -1,7 +1,5 @@
|
||||
const helpers = require("./global-setup");
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
const { generateWeather, generateWeatherForecast, generateWeatherHourly } = require("../../mocks/weather_test");
|
||||
const { injectMockData } = require("../../utils/weather_mocker");
|
||||
|
||||
exports.getText = async (element, result) => {
|
||||
const elem = await helpers.waitForElement(element);
|
||||
@ -14,18 +12,8 @@ exports.getText = async (element, result) => {
|
||||
).toBe(result);
|
||||
};
|
||||
|
||||
exports.startApp = async (configFile, additionalMockData) => {
|
||||
let mockWeather;
|
||||
if (configFile.includes("forecast")) {
|
||||
mockWeather = generateWeatherForecast(additionalMockData);
|
||||
} else if (configFile.includes("hourly")) {
|
||||
mockWeather = generateWeatherHourly(additionalMockData);
|
||||
} else {
|
||||
mockWeather = generateWeather(additionalMockData);
|
||||
}
|
||||
let content = fs.readFileSync(path.resolve(__dirname + "../../../../" + configFile)).toString();
|
||||
content = content.replace("#####WEATHERDATA#####", mockWeather);
|
||||
fs.writeFileSync(path.resolve(__dirname + "../../../../config/config.js"), content);
|
||||
exports.startApp = async (configFileName, additionalMockData) => {
|
||||
injectMockData(configFileName, additionalMockData);
|
||||
await helpers.startApplication("");
|
||||
await helpers.getDocument();
|
||||
};
|
||||
|
@ -1,7 +1,5 @@
|
||||
const helpers = require("./global-setup");
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
const { generateWeather, generateWeatherForecast, generateWeatherHourly } = require("../../mocks/weather_test");
|
||||
const { injectMockData } = require("../../utils/weather_mocker");
|
||||
|
||||
exports.getText = async (element, result) => {
|
||||
const elem = await helpers.getElement(element);
|
||||
@ -15,17 +13,7 @@ exports.getText = async (element, result) => {
|
||||
).toBe(result);
|
||||
};
|
||||
|
||||
exports.startApp = async (configFile, systemDate) => {
|
||||
let mockWeather;
|
||||
if (configFile.includes("forecast")) {
|
||||
mockWeather = generateWeatherForecast();
|
||||
} else if (configFile.includes("hourly")) {
|
||||
mockWeather = generateWeatherHourly();
|
||||
} else {
|
||||
mockWeather = generateWeather();
|
||||
}
|
||||
let content = fs.readFileSync(path.resolve(__dirname + "../../../../" + configFile)).toString();
|
||||
content = content.replace("#####WEATHERDATA#####", mockWeather);
|
||||
fs.writeFileSync(path.resolve(__dirname + "../../../../config/config.js"), content);
|
||||
exports.startApp = async (configFileNameName, systemDate) => {
|
||||
injectMockData(configFileNameName);
|
||||
await helpers.startApplication("", systemDate);
|
||||
};
|
||||
|
48
tests/mocks/weather_current.json
Normal file
48
tests/mocks/weather_current.json
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
"coord": {
|
||||
"lon": 11.58,
|
||||
"lat": 48.14
|
||||
},
|
||||
"weather": [
|
||||
{
|
||||
"id": 615,
|
||||
"main": "Snow",
|
||||
"description": "light rain and snow",
|
||||
"icon": "13d"
|
||||
},
|
||||
{
|
||||
"id": 500,
|
||||
"main": "Rain",
|
||||
"description": "light rain",
|
||||
"icon": "10d"
|
||||
}
|
||||
],
|
||||
"base": "stations",
|
||||
"main": {
|
||||
"temp": 1.49,
|
||||
"pressure": 1005,
|
||||
"humidity": 93.7,
|
||||
"temp_min": 1,
|
||||
"temp_max": 2
|
||||
},
|
||||
"visibility": 7000,
|
||||
"wind": {
|
||||
"speed": 11.8,
|
||||
"deg": 250
|
||||
},
|
||||
"clouds": {
|
||||
"all": 75
|
||||
},
|
||||
"dt": 1547387400,
|
||||
"sys": {
|
||||
"type": 1,
|
||||
"id": 1267,
|
||||
"message": 0.0031,
|
||||
"country": "DE",
|
||||
"sunrise": 1547362817,
|
||||
"sunset": 1547394301
|
||||
},
|
||||
"id": 2867714,
|
||||
"name": "Munich",
|
||||
"cod": 200
|
||||
}
|
200
tests/mocks/weather_forecast.json
Normal file
200
tests/mocks/weather_forecast.json
Normal file
@ -0,0 +1,200 @@
|
||||
{
|
||||
"city": {
|
||||
"id": 2867714,
|
||||
"name": "Munich",
|
||||
"coord": {
|
||||
"lon": 11.5754,
|
||||
"lat": 48.1371
|
||||
},
|
||||
"country": "DE",
|
||||
"population": 1260391,
|
||||
"timezone": 7200
|
||||
},
|
||||
"cod": "200",
|
||||
"message": 0.9653487,
|
||||
"cnt": 7,
|
||||
"list": [
|
||||
{
|
||||
"dt": 1568372400,
|
||||
"sunrise": 1568350044,
|
||||
"sunset": 1568395948,
|
||||
"temp": {
|
||||
"day": 24.44,
|
||||
"min": 15.35,
|
||||
"max": 24.44,
|
||||
"night": 15.35,
|
||||
"eve": 18,
|
||||
"morn": 23.03
|
||||
},
|
||||
"pressure": 1031.65,
|
||||
"humidity": 70,
|
||||
"weather": [
|
||||
{
|
||||
"id": 801,
|
||||
"main": "Clouds",
|
||||
"description": "few clouds",
|
||||
"icon": "02d"
|
||||
}
|
||||
],
|
||||
"speed": 3.35,
|
||||
"deg": 314,
|
||||
"clouds": 21
|
||||
},
|
||||
{
|
||||
"dt": 1568458800,
|
||||
"sunrise": 1568436525,
|
||||
"sunset": 1568482223,
|
||||
"temp": {
|
||||
"day": 20.81,
|
||||
"min": 13.56,
|
||||
"max": 21.02,
|
||||
"night": 13.56,
|
||||
"eve": 16.6,
|
||||
"morn": 15.88
|
||||
},
|
||||
"pressure": 1028.81,
|
||||
"humidity": 72,
|
||||
"weather": [
|
||||
{
|
||||
"id": 500,
|
||||
"main": "Rain",
|
||||
"description": "light rain",
|
||||
"icon": "10d"
|
||||
}
|
||||
],
|
||||
"speed": 2.21,
|
||||
"deg": 81,
|
||||
"clouds": 100
|
||||
},
|
||||
{
|
||||
"dt": 1568545200,
|
||||
"sunrise": 1568523007,
|
||||
"sunset": 1568568497,
|
||||
"temp": {
|
||||
"day": 22.65,
|
||||
"min": 13.76,
|
||||
"max": 22.88,
|
||||
"night": 15.27,
|
||||
"eve": 17.45,
|
||||
"morn": 13.76
|
||||
},
|
||||
"pressure": 1023.75,
|
||||
"humidity": 64,
|
||||
"weather": [
|
||||
{
|
||||
"id": 800,
|
||||
"main": "Clear",
|
||||
"description": "sky is clear",
|
||||
"icon": "01d"
|
||||
}
|
||||
],
|
||||
"speed": 1.15,
|
||||
"deg": 7,
|
||||
"clouds": 0
|
||||
},
|
||||
{
|
||||
"dt": 1568631600,
|
||||
"sunrise": 1568609489,
|
||||
"sunset": 1568654771,
|
||||
"temp": {
|
||||
"day": 23.45,
|
||||
"min": 13.95,
|
||||
"max": 23.45,
|
||||
"night": 13.95,
|
||||
"eve": 17.75,
|
||||
"morn": 15.21
|
||||
},
|
||||
"pressure": 1020.41,
|
||||
"humidity": 64,
|
||||
"weather": [
|
||||
{
|
||||
"id": 800,
|
||||
"main": "Clear",
|
||||
"description": "sky is clear",
|
||||
"icon": "01d"
|
||||
}
|
||||
],
|
||||
"speed": 3.07,
|
||||
"deg": 298,
|
||||
"clouds": 7
|
||||
},
|
||||
{
|
||||
"dt": 1568718000,
|
||||
"sunrise": 1568695970,
|
||||
"sunset": 1568741045,
|
||||
"temp": {
|
||||
"day": 20.55,
|
||||
"min": 10.95,
|
||||
"max": 20.55,
|
||||
"night": 10.95,
|
||||
"eve": 14.82,
|
||||
"morn": 13.24
|
||||
},
|
||||
"pressure": 1019.4,
|
||||
"humidity": 66,
|
||||
"weather": [
|
||||
{
|
||||
"id": 800,
|
||||
"main": "Clear",
|
||||
"description": "sky is clear",
|
||||
"icon": "01d"
|
||||
}
|
||||
],
|
||||
"speed": 2.8,
|
||||
"deg": 333,
|
||||
"clouds": 2
|
||||
},
|
||||
{
|
||||
"dt": 1568804400,
|
||||
"sunrise": 1568782452,
|
||||
"sunset": 1568827319,
|
||||
"temp": {
|
||||
"day": 18.15,
|
||||
"min": 7.75,
|
||||
"max": 18.15,
|
||||
"night": 7.75,
|
||||
"eve": 12.45,
|
||||
"morn": 9.41
|
||||
},
|
||||
"pressure": 1017.56,
|
||||
"humidity": 52,
|
||||
"weather": [
|
||||
{
|
||||
"id": 800,
|
||||
"main": "Clear",
|
||||
"description": "sky is clear",
|
||||
"icon": "01d"
|
||||
}
|
||||
],
|
||||
"speed": 2.92,
|
||||
"deg": 34,
|
||||
"clouds": 0
|
||||
},
|
||||
{
|
||||
"dt": 1568890800,
|
||||
"sunrise": 1568868934,
|
||||
"sunset": 1568913593,
|
||||
"temp": {
|
||||
"day": 14.85,
|
||||
"min": 5.56,
|
||||
"max": 15.05,
|
||||
"night": 5.56,
|
||||
"eve": 9.56,
|
||||
"morn": 6.25
|
||||
},
|
||||
"pressure": 1022.7,
|
||||
"humidity": 59,
|
||||
"weather": [
|
||||
{
|
||||
"id": 800,
|
||||
"main": "Clear",
|
||||
"description": "sky is clear",
|
||||
"icon": "01d"
|
||||
}
|
||||
],
|
||||
"speed": 2.89,
|
||||
"deg": 51,
|
||||
"clouds": 1
|
||||
}
|
||||
]
|
||||
}
|
1114
tests/mocks/weather_hourly.json
Normal file
1114
tests/mocks/weather_hourly.json
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
43
tests/utils/weather_mocker.js
Normal file
43
tests/utils/weather_mocker.js
Normal file
@ -0,0 +1,43 @@
|
||||
const _ = require("lodash");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
/**
|
||||
* @param {string} type what data to read, can be "current" "forecast" or "hourly
|
||||
* @param {object} extendedData extra data to add to the default mock data
|
||||
* @returns {string} mocked current weather data
|
||||
*/
|
||||
const readMockData = (type, extendedData = {}) => {
|
||||
let fileName;
|
||||
|
||||
switch (type) {
|
||||
case "forecast":
|
||||
fileName = "weather_forecast.json";
|
||||
break;
|
||||
case "hourly":
|
||||
fileName = "weather_hourly.json";
|
||||
break;
|
||||
case "current":
|
||||
default:
|
||||
fileName = "weather_current.json";
|
||||
break;
|
||||
}
|
||||
|
||||
return JSON.stringify(_.merge({}, JSON.parse(fs.readFileSync(path.resolve(__dirname + "/../mocks/" + fileName)).toString()), extendedData));
|
||||
};
|
||||
|
||||
const injectMockData = (configFileName, extendedData = {}) => {
|
||||
let mockWeather;
|
||||
if (configFileName.includes("forecast")) {
|
||||
mockWeather = readMockData("forecast", extendedData);
|
||||
} else if (configFileName.includes("hourly")) {
|
||||
mockWeather = readMockData("hourly", extendedData);
|
||||
} else {
|
||||
mockWeather = readMockData("current", extendedData);
|
||||
}
|
||||
let content = fs.readFileSync(path.resolve(__dirname + "../../../" + configFileName)).toString();
|
||||
content = content.replace("#####WEATHERDATA#####", mockWeather);
|
||||
fs.writeFileSync(path.resolve(__dirname + "../../../config/config.js"), content);
|
||||
};
|
||||
|
||||
module.exports = { injectMockData };
|
Loading…
x
Reference in New Issue
Block a user