diff --git a/CHANGELOG.md b/CHANGELOG.md index d3f27b1..b6d694e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,18 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Fixed ### Removed +## [2.1.0] - 2020-12-26 + +### Added +- feat: Add method for reading alerts (#94) + +### Changed +- chore(lint): Lint mocks folder +- test(refactor): Move helpers to a support folder + +### Fixed +- fix: Remove mocks-server-plugin tag from package.json (#93) + ## [2.0.5] - 2020-12-21 ### Added diff --git a/README.md b/README.md index 98943a7..56d3e0e 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@ # Mocks-server administration api client -This package contains methods for administrating the mocks-server _(through the [@mocks-server/plugin-admin-api](https://github.com/mocks-server/plugin-admin-api) REST API)_. +This package contains methods for administrating `mocks-server` _(through the [@mocks-server/plugin-admin-api](https://github.com/mocks-server/plugin-admin-api) REST API)_. -Requests to the @mocks-server are made using [cross-fetch](https://www.npmjs.com/package/cross-fetch), which makes this package compatible with browsers and nodejs environments, but, if you are going to build a browser application, you'll probably prefer to use the [@mocks-server/admin-api-client-data-provider package](https://www.npmjs.com/package/@mocks-server/admin-api-client-data-provider), which uses [@data-provider](https://github.com/data-provider), and works well with Redux, React, etc. +Requests to `mocks-server` are made using [cross-fetch](https://www.npmjs.com/package/cross-fetch), which makes this package compatible with browsers and nodejs environments, but, if you are going to build a browser application, you'll probably prefer to use the [@mocks-server/admin-api-client-data-provider package](https://www.npmjs.com/package/@mocks-server/admin-api-client-data-provider), which uses [@data-provider](https://github.com/data-provider), and works well with Redux, React, etc. ## Install @@ -24,7 +24,7 @@ The UMD build is also available on unpkg: ``` -> The umd distribution is bundled with the "cross-env" dependency, but requires the "@mocks-server/admin-api-paths" dependency to be added separately. +> The umd distribution is bundled with the `cross-env` dependency, but requires the `@mocks-server/admin-api-paths` dependency to be added separately. ## Usage @@ -59,6 +59,8 @@ example(); * `behavior(behaviorName).read()` - Returns an specific behavior. * `fixtures.read()` - Returns collection of available fixtures. * `fixture(fixtureId).read()` - Returns an specific fixture. +* `alerts.read()` - Returns array of current alerts. +* `alert(alertId).read()` - Returns an specific alert. ## Configuration diff --git a/jest.config.js b/jest.config.js index a41d05f..26be6ce 100644 --- a/jest.config.js +++ b/jest.config.js @@ -25,10 +25,7 @@ module.exports = { }, // The glob patterns Jest uses to detect test files - testMatch: [ - "/test/?(*.)+(spec|test).js?(x)", - "/test/*/?(*.)+(spec|test).js?(x)", - ], + testMatch: ["/test/*.spec.js"], transform: { ".js$": "babel-jest", diff --git a/mocks/mocks-server.config.js b/mocks/mocks-server.config.js index fcc3ecd..5460b3f 100644 --- a/mocks/mocks-server.config.js +++ b/mocks/mocks-server.config.js @@ -1,5 +1,6 @@ module.exports = { options: { - port: 3200 - } + port: 3200, + log: "debug", + }, }; diff --git a/mocks/mocks-with-error/fixtures.js b/mocks/mocks-with-error/fixtures.js new file mode 100644 index 0000000..64fce11 --- /dev/null +++ b/mocks/mocks-with-error/fixtures.js @@ -0,0 +1,2 @@ +//eslint-disable-next-line +module.exports = FOO diff --git a/mocks/mocks/behaviors.js b/mocks/mocks/behaviors.js index 8ca9887..fdef5ae 100644 --- a/mocks/mocks/behaviors.js +++ b/mocks/mocks/behaviors.js @@ -7,5 +7,5 @@ const user2 = new Behavior([getUser2]); module.exports = { base, - user2 + user2, }; diff --git a/mocks/mocks/fixtures.js b/mocks/mocks/fixtures.js index 0eec0a3..8451f91 100644 --- a/mocks/mocks/fixtures.js +++ b/mocks/mocks/fixtures.js @@ -3,8 +3,8 @@ const getUser = { method: "GET", response: { status: 200, - body: [{ email: "foo@foo.com" }] - } + body: [{ email: "foo@foo.com" }], + }, }; const getUser2 = { @@ -12,11 +12,11 @@ const getUser2 = { method: "GET", response: { status: 200, - body: [{ email: "foo2@foo2.com" }] - } + body: [{ email: "foo2@foo2.com" }], + }, }; module.exports = { getUser, - getUser2 + getUser2, }; diff --git a/mocks/package-lock.json b/mocks/package-lock.json index a47a54d..c674426 100644 --- a/mocks/package-lock.json +++ b/mocks/package-lock.json @@ -4,6 +4,17 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@dabh/diagnostics": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.2.tgz", + "integrity": "sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q==", + "dev": true, + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "@hapi/boom": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.0.tgz", @@ -14,79 +25,74 @@ } }, "@hapi/hoek": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.0.4.tgz", - "integrity": "sha512-EwaJS7RjoXUZ2cXXKZZxZqieGtc7RbvQhUy8FwDoMQtxWVi14tFjeFCYPZAM1mBCpOpiBpyaZbb9NeHc7eGKgw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.1.0.tgz", + "integrity": "sha512-i9YbZPN3QgfighY/1X1Pu118VUz2Fmmhd6b2n0/O8YVgGGfw0FbUYoA97k7FkpGJ+pLCFEDLUmAPPV4D1kpeFw==", "dev": true }, "@mocks-server/admin-api-paths": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@mocks-server/admin-api-paths/-/admin-api-paths-1.0.7.tgz", - "integrity": "sha512-9AOpcA6YLLq8ssS7niWLNsvLMTcxM0gs1sogirPr7M3J6hap0La1uSncwfSt5nDAqgL6pv7ivhdL13dq7A1b8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mocks-server/admin-api-paths/-/admin-api-paths-1.1.0.tgz", + "integrity": "sha512-qFcIsRtfD9uXj3Js0qKyKZKUeoCgzcjxZWPw3Xe64bPByE5lrPYlMzVMbmENVLIkQS5aOlVttxOzpG8jHO/DxA==", "dev": true }, "@mocks-server/core": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/@mocks-server/core/-/core-1.4.8.tgz", - "integrity": "sha512-YSJ/kcIB4wfmxLICk2Dw3Jii+Q+VGtjLKBvrsXqIpBooq8jq8ACLEGnp8bOwR3uSmpAmbcrpMOB1svp7fpIhPw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@mocks-server/core/-/core-1.6.0.tgz", + "integrity": "sha512-Gh2C7RGXvs09x7qDArby2XN1G11iOyLY5AcZzSaJXHM59F59NV9E17rNKf5i8S2XJVv1aNA4WO/AqsIfMFDcXQ==", "dev": true, "requires": { "@hapi/boom": "9.1.0", "body-parser": "1.19.0", - "commander": "5.1.0", + "commander": "6.2.0", "cors": "2.8.5", "express": "4.17.1", "express-request-id": "1.4.1", "fs-extra": "9.0.1", "is-promise": "4.0.0", - "lodash": "4.17.15", - "md5": "2.2.1", - "node-watch": "0.6.4", + "lodash": "4.17.20", + "md5": "2.3.0", + "node-watch": "0.7.0", "require-all": "3.0.0", "route-parser": "0.0.5", - "winston": "3.2.1" + "winston": "3.3.3" } }, "@mocks-server/main": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@mocks-server/main/-/main-1.8.6.tgz", - "integrity": "sha512-G4G+yDcz32QZmsiuyle1VsS9r/ye4TJtHrfTsnzvKtkx4eSZJG8iGv4m2Or9zyPpPbmDmoGnTjW+mHm76TkjCA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@mocks-server/main/-/main-1.9.0.tgz", + "integrity": "sha512-42UjkNiyzDPTo+LsNFz5hKC1TJsbF77TwdM1FDPSQc2PYFfUFswnjAz3Oz5NIfpTsCdV5CBbIWaHqvR2sTudUQ==", "dev": true, "requires": { - "@mocks-server/core": "1.4.8", - "@mocks-server/plugin-admin-api": "1.4.5", - "@mocks-server/plugin-inquirer-cli": "1.3.5" + "@mocks-server/core": "1.6.0", + "@mocks-server/plugin-admin-api": "1.5.0", + "@mocks-server/plugin-inquirer-cli": "1.4.1" } }, "@mocks-server/plugin-admin-api": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@mocks-server/plugin-admin-api/-/plugin-admin-api-1.4.5.tgz", - "integrity": "sha512-Y2qwGCNRqu0ZxLu3m39HeADw/mmIwIbL9alHH+e1yQt419kF2FHVGUEwBSxOEIwnpJD6y2iL5f0JBvQMf4oGQg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@mocks-server/plugin-admin-api/-/plugin-admin-api-1.5.0.tgz", + "integrity": "sha512-yR5RQ4zgNxO4iR206tV5tWOpqKaGw5CHvXY1qUkGK3h6Kj8M+qNu/I8JWihx/mAvoW/LgUvzFylNAFQEY9MewQ==", "dev": true, "requires": { "@hapi/boom": "9.1.0", - "@mocks-server/admin-api-paths": "1.0.7", + "@mocks-server/admin-api-paths": "1.1.0", "express": "4.17.1" } }, "@mocks-server/plugin-inquirer-cli": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@mocks-server/plugin-inquirer-cli/-/plugin-inquirer-cli-1.3.5.tgz", - "integrity": "sha512-sbaHW4ZDAhhQzGm3j6a4ePcOeVM7u3pNKVCMNajeu6qWuajZMljXmGHsqvX61E9R1uZ3wNZJX20f4lJdkLD+ig==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@mocks-server/plugin-inquirer-cli/-/plugin-inquirer-cli-1.4.1.tgz", + "integrity": "sha512-njA1fxorXaueoH4VU2j4YMLbvxpm058s2Xav2OOovUXY5lU1EWpBJ0zBEDolsjnkQNsx0MnfRPopsCwxjfcORw==", "dev": true, "requires": { "chalk": "4.1.0", - "inquirer": "7.2.0", - "inquirer-autocomplete-prompt": "1.0.2", - "lodash": "4.17.15" + "inquirer": "7.3.3", + "inquirer-autocomplete-prompt": "1.3.0", + "lodash": "4.17.20", + "node-emoji": "1.10.0" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", - "dev": true - }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -113,12 +119,11 @@ "dev": true }, "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" }, "dependencies": { @@ -146,13 +151,10 @@ "dev": true }, "async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true }, "at-least-node": { "version": "1.0.0", @@ -216,9 +218,9 @@ } }, "cli-width": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", - "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, "color": { @@ -247,21 +249,15 @@ "dev": true }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", "dev": true, "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, - "colornames": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", - "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=", - "dev": true - }, "colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -279,9 +275,9 @@ } }, "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", "dev": true }, "content-disposition": { @@ -354,17 +350,6 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "diagnostics": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", - "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", - "dev": true, - "requires": { - "colorspace": "1.1.x", - "enabled": "1.0.x", - "kuler": "1.0.x" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -378,13 +363,10 @@ "dev": true }, "enabled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", - "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", - "dev": true, - "requires": { - "env-variable": "0.0.x" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", + "dev": true }, "encodeurl": { "version": "1.0.2", @@ -392,12 +374,6 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "dev": true }, - "env-variable": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.6.tgz", - "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==", - "dev": true - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -510,6 +486,12 @@ "unpipe": "~1.0.0" } }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", + "dev": true + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -575,100 +557,37 @@ "dev": true }, "inquirer": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.2.0.tgz", - "integrity": "sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", - "chalk": "^3.0.0", + "chalk": "^4.1.0", "cli-cursor": "^3.1.0", - "cli-width": "^2.0.0", + "cli-width": "^3.0.0", "external-editor": "^3.0.3", "figures": "^3.0.0", - "lodash": "^4.17.15", + "lodash": "^4.17.19", "mute-stream": "0.0.8", "run-async": "^2.4.0", - "rxjs": "^6.5.3", + "rxjs": "^6.6.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0", "through": "^2.3.6" - }, - "dependencies": { - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } } }, "inquirer-autocomplete-prompt": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.0.2.tgz", - "integrity": "sha512-vNmAhhrOQwPnUm4B9kz1UB7P98rVF1z8txnjp53r40N0PBCuqoRWqjg3Tl0yz0UkDg7rEUtZ2OZpNc7jnOU9Zw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.3.0.tgz", + "integrity": "sha512-zvAc+A6SZdcN+earG5SsBu1RnQdtBS4o8wZ/OqJiCfL34cfOx+twVRq7wumYix6Rkdjn1N2nVCcO3wHqKqgdGg==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "figures": "^2.0.0", - "run-async": "^2.3.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "figures": "^3.2.0", + "run-async": "^2.4.0", + "rxjs": "^6.6.2" } }, "ipaddr.js": { @@ -702,9 +621,9 @@ "dev": true }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, "isarray": { @@ -714,28 +633,39 @@ "dev": true }, "jsonfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", - "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { "graceful-fs": "^4.1.6", - "universalify": "^1.0.0" + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } } }, "kuler": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", - "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", - "dev": true, - "requires": { - "colornames": "^1.1.1" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "dev": true }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lodash.toarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz", + "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE=", "dev": true }, "logform": { @@ -752,22 +682,22 @@ }, "dependencies": { "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true } } }, "md5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", - "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", "dev": true, "requires": { - "charenc": "~0.0.1", - "crypt": "~0.0.1", - "is-buffer": "~1.1.1" + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" } }, "media-typer": { @@ -833,10 +763,19 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, + "node-emoji": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", + "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==", + "dev": true, + "requires": { + "lodash.toarray": "^4.4.0" + } + }, "node-watch": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.6.4.tgz", - "integrity": "sha512-cI6CHzivIFESe8djiK3Wh90CtWQBxLwMem8x8S+2GSvCvFgoMuOKVlfJtQ/2v3Afg3wOnHl/+tXotEs8z5vOrg==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.0.tgz", + "integrity": "sha512-OOBiglke5SlRQT5WYfwXTmYqTfXjcTNBHpalyHLtLxDpQYVpVRkJqabcch1kmwJsjV/J4OZuzEafeb4soqtFZA==", "dev": true }, "object-assign": { @@ -855,15 +794,18 @@ } }, "one-time": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", - "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dev": true, + "requires": { + "fn.name": "1.x.x" + } }, "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "requires": { "mimic-fn": "^2.1.0" @@ -967,9 +909,9 @@ "dev": true }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -1099,9 +1041,9 @@ } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -1141,9 +1083,9 @@ "dev": true }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, "type-fest": { @@ -1199,20 +1141,20 @@ "dev": true }, "winston": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", - "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.3.3.tgz", + "integrity": "sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==", "dev": true, "requires": { - "async": "^2.6.1", - "diagnostics": "^1.1.1", - "is-stream": "^1.1.0", - "logform": "^2.1.1", - "one-time": "0.0.4", - "readable-stream": "^3.1.1", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.1.0", + "is-stream": "^2.0.0", + "logform": "^2.2.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.3.0" + "winston-transport": "^4.4.0" } }, "winston-transport": { diff --git a/mocks/package.json b/mocks/package.json index 7f87b59..c2ef5cb 100644 --- a/mocks/package.json +++ b/mocks/package.json @@ -7,6 +7,6 @@ "mocks:ci": "mocks-server --cli=false" }, "devDependencies": { - "@mocks-server/main": "1.8.6" + "@mocks-server/main": "1.9.0" } } diff --git a/package-lock.json b/package-lock.json index 081776e..c7b7b16 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@mocks-server/admin-api-client", - "version": "2.0.5", + "version": "2.1.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -2712,9 +2712,9 @@ } }, "@mocks-server/admin-api-paths": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@mocks-server/admin-api-paths/-/admin-api-paths-1.0.8.tgz", - "integrity": "sha512-UH7PqoUWhUjUexP5IeS08frHKsKa5mzLi/HosbWLxo0rkk6SqzOmxg+2mtBPPx+y/Pw8RygfiwvRdUJGvK1byA==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mocks-server/admin-api-paths/-/admin-api-paths-1.1.0.tgz", + "integrity": "sha512-qFcIsRtfD9uXj3Js0qKyKZKUeoCgzcjxZWPw3Xe64bPByE5lrPYlMzVMbmENVLIkQS5aOlVttxOzpG8jHO/DxA==" }, "@rollup/plugin-babel": { "version": "5.2.1", diff --git a/package.json b/package.json index 1a16a7a..0415824 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,8 @@ { "name": "@mocks-server/admin-api-client", - "version": "2.0.5", + "version": "2.1.0", "description": "Client of @mocks-server/plugin-admin-api", "keywords": [ - "mocks-server-plugin", "administration", "admin", "api", @@ -24,7 +23,7 @@ "module": "dist/index.esm.js", "scripts": { "build": "rollup --config", - "lint": "eslint *.js test src jest.config.js", + "lint": "eslint *.js test src mocks/*.js mocks/mocks/*.js", "lint-staged": "lint-staged", "mocks:install": "cd mocks && npm i", "mocks:ci": "cd mocks && npm run mocks:ci", @@ -33,7 +32,7 @@ }, "dependencies": { "cross-fetch": "3.0.6", - "@mocks-server/admin-api-paths": "1.0.8" + "@mocks-server/admin-api-paths": "1.1.0" }, "devDependencies": { "@babel/preset-env": "7.12.1", @@ -60,7 +59,8 @@ "test/**/*.js": "eslint", "src/**/*.js": "eslint", "*.js": "eslint", - "jest.config.js": "eslint" + "mocks/*.js": "eslint", + "mocks/mocks/*.js": "eslint" }, "husky": { "hooks": { diff --git a/sonar-project.properties b/sonar-project.properties index 9dc60e5..967fcd9 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -1,13 +1,13 @@ sonar.organization=mocks-server sonar.projectKey=mocks-server-admin-api-client -sonar.projectVersion=2.0.5 +sonar.projectVersion=2.1.0 sonar.javascript.file.suffixes=.js sonar.sourceEncoding=UTF-8 -sonar.exclusions=node_modules/**,*.config.js +sonar.exclusions=node_modules/**,*.config.js,mocks/mocks-with-error/**,mocks/node_modules/** sonar.test.exclusions=test/**/*,mocks/**/* sonar.coverage.exclusions=test/**/*,mocks/**/* -sonar.cpd.exclusions=test/**,test-e2e/**/* +sonar.cpd.exclusions=test/**,mocks/**/* sonar.javascript.lcov.reportPaths=coverage/lcov.info sonar.host.url=https://sonarcloud.io diff --git a/src/methods.js b/src/methods.js index 3ff8930..3600c29 100644 --- a/src/methods.js +++ b/src/methods.js @@ -6,6 +6,7 @@ import { SETTINGS, BEHAVIORS, FIXTURES, + ALERTS, } from "@mocks-server/admin-api-paths"; const DEFAULT_OPTIONS = { @@ -27,7 +28,7 @@ export const config = (options) => { class Fetcher { constructor(url, id) { this._url = url; - this._id = id ? `/${id}` : ""; + this._id = id ? `/${encodeURIComponent(id)}` : ""; } get url() { @@ -72,3 +73,9 @@ export const fixtures = new Fetcher(FIXTURES); export const fixture = (id) => { return new Fetcher(FIXTURES, id); }; + +export const alerts = new Fetcher(ALERTS); + +export const alert = (id) => { + return new Fetcher(ALERTS, id); +}; diff --git a/test/.eslintrc.json b/test/.eslintrc.json index 2378e5a..3305270 100644 --- a/test/.eslintrc.json +++ b/test/.eslintrc.json @@ -1,4 +1,12 @@ { + "env": { + "node": true, + "es6": true + }, + "parserOptions": { + "ecmaVersion": "2018", + "sourceType": "module" + }, "globals": { "jest": true, "beforeAll": true, diff --git a/test/index.spec.js b/test/index.spec.js index d312330..a3636fe 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -5,18 +5,60 @@ import { readFixtures, readFixture, readSettings, + readAlerts, + readAlert, updateSettings, -} from "./index"; + wait, +} from "./support/helpers"; describe("react-admin-client methods used through node", () => { - describe("whe reading about", () => { + describe("when reading about", () => { it("should return current version", async () => { const about = await readAbout(); expect(about.version).toBeDefined(); }); }); - describe("whe reading fixtures", () => { + describe("when reading alerts", () => { + describe("when there are no alerts", () => { + it("should return an empty array", async () => { + const alerts = await readAlerts(); + expect(alerts).toEqual([]); + }); + }); + + describe("when there are alerts", () => { + it("should return alerts array", async () => { + expect.assertions(1); + await updateSettings({ + path: "mocks-with-error", + }); + await wait(2000); + const alerts = await readAlerts(); + expect(alerts.length).toEqual(1); + }); + + it("first alert model should exist", async () => { + const alerts = await readAlerts(); + const alertId = alerts[0].id; + const alert = await readAlert(alertId); + expect(alert.id).toEqual(alertId); + }); + }); + + describe("when alerts are removed", () => { + it("should return an empty array again", async () => { + await updateSettings({ + path: "mocks", + }); + await wait(2000); + const alerts = await readAlerts(); + expect(alerts).toEqual([]); + }); + }); + }); + + describe("when reading fixtures", () => { it("should return current fixtures collection", async () => { const fixtures = await readFixtures(); expect(fixtures.length).toEqual(2); @@ -37,7 +79,7 @@ describe("react-admin-client methods used through node", () => { }); }); - describe("whe reading behaviors", () => { + describe("when reading behaviors", () => { it("should return behaviors collection", async () => { const behaviors = await readBehaviors(); expect(behaviors.length).toEqual(2); @@ -79,7 +121,7 @@ describe("react-admin-client methods used through node", () => { }); }); - describe("whe reading settings", () => { + describe("when reading settings", () => { it("should return current behavior", async () => { const settings = await readSettings(); expect(settings.behavior).toEqual("base"); @@ -92,7 +134,7 @@ describe("react-admin-client methods used through node", () => { }); }); - describe("whe updating settings", () => { + describe("when updating settings", () => { it("should update current behavior", async () => { await updateSettings({ behavior: "user2", diff --git a/test/index.js b/test/support/helpers.js similarity index 60% rename from test/index.js rename to test/support/helpers.js index 399e757..a687845 100644 --- a/test/index.js +++ b/test/support/helpers.js @@ -1,4 +1,14 @@ -import { about, behaviors, behavior, fixtures, fixture, settings, config } from "../index"; +import { + about, + behaviors, + behavior, + fixtures, + fixture, + settings, + config, + alerts, + alert, +} from "../../index"; config({ baseUrl: "http://localhost:3200", @@ -32,6 +42,22 @@ const updateSettings = (newSettings) => { return settings.update(newSettings); }; +const readAlerts = () => { + return alerts.read(); +}; + +const readAlert = (id) => { + return alert(id).read(); +}; + +const wait = (time = 1000) => { + return new Promise((resolve) => { + setTimeout(() => { + resolve(); + }, time); + }); +}; + module.exports = { readAbout, readBehaviors, @@ -40,4 +66,7 @@ module.exports = { readFixture, readSettings, updateSettings, + readAlerts, + readAlert, + wait, };