[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-merchant-backoffice] branch master updated: test hooks example
From: |
gnunet |
Subject: |
[taler-merchant-backoffice] branch master updated: test hooks example |
Date: |
Thu, 11 Feb 2021 18:07:50 +0100 |
This is an automated email from the git hooks/post-receive script.
sebasjm pushed a commit to branch master
in repository merchant-backoffice.
The following commit(s) were added to refs/heads/master by this push:
new 045cd4b test hooks example
045cd4b is described below
commit 045cd4bf9f76846718fdd105829db4f2f3d3e9fe
Author: Sebastian <sebasjm@gmail.com>
AuthorDate: Thu Feb 11 14:07:28 2021 -0300
test hooks example
---
package.json | 2 ++
src/hooks/notifications.ts | 14 +++++-----
tests/__mocks__/setupTests.ts | 1 +
tests/hooks/notification.test.ts | 31 +++++++++++++++++++++
yarn.lock | 59 +++++++++++++++++++++++++++++++++++++++-
5 files changed, 99 insertions(+), 8 deletions(-)
diff --git a/package.json b/package.json
index 0e3c39c..9cbf459 100644
--- a/package.json
+++ b/package.json
@@ -42,6 +42,8 @@
"@storybook/addon-links": "^6.1.16",
"@storybook/preact": "^6.1.16",
"@storybook/preset-scss": "^1.0.3",
+ "@testing-library/preact": "^2.0.1",
+ "@testing-library/preact-hooks": "^1.1.0",
"@types/enzyme": "^3.10.5",
"@types/jest": "^26.0.8",
"@typescript-eslint/eslint-plugin": "^2.25.0",
diff --git a/src/hooks/notifications.ts b/src/hooks/notifications.ts
index 0dc361f..013fa3e 100644
--- a/src/hooks/notifications.ts
+++ b/src/hooks/notifications.ts
@@ -1,4 +1,4 @@
-import { useState } from 'react';
+import { useState } from "preact/hooks";
import { Notification } from '../declaration';
interface Result {
@@ -6,14 +6,14 @@ interface Result {
pushNotification: (n: Notification) => void;
}
-export function useNotifications(): Result {
- const [notifications, setNotifications] = useState<(Notification & {since:
Date})[]>([])
+export function useNotifications(timeout = 2000): Result {
+ const [notifications, setNotifications] = useState<(Notification & { since:
Date })[]>([])
const pushNotification = (n: Notification): void => {
- const entry = {...n, since: new Date() }
+ const entry = { ...n, since: new Date() }
setNotifications(ns => [...ns, entry])
- setTimeout(()=>{
+ setTimeout(() => {
setNotifications(ns => ns.filter(x => x.since !== entry.since))
- }, 2000)
+ }, timeout)
}
- return {notifications, pushNotification}
+ return { notifications, pushNotification }
}
diff --git a/tests/__mocks__/setupTests.ts b/tests/__mocks__/setupTests.ts
index 01dc92a..53f96ee 100644
--- a/tests/__mocks__/setupTests.ts
+++ b/tests/__mocks__/setupTests.ts
@@ -1,3 +1,4 @@
+import 'regenerator-runtime/runtime'
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-preact-pure';
diff --git a/tests/hooks/notification.test.ts b/tests/hooks/notification.test.ts
new file mode 100644
index 0000000..e33b04a
--- /dev/null
+++ b/tests/hooks/notification.test.ts
@@ -0,0 +1,31 @@
+import { renderHook, act} from '@testing-library/preact-hooks';
+import { useNotifications } from '../../src/hooks/notifications';
+
+jest.useFakeTimers()
+
+test('notification should disapear after timeout', () => {
+ jest.spyOn(global, 'setTimeout');
+
+ const timeout = 1000
+ const { result, rerender } = renderHook(() => useNotifications(timeout));
+
+ expect(result.current?.notifications.length).toBe(0);
+
+ act(() => {
+ result.current?.pushNotification({
+ description: 'desc',
+ title: 'title',
+ type: 'INFO'
+ });
+ });
+ expect(result.current?.notifications.length).toBe(1);
+
+ jest.advanceTimersByTime(timeout/2);
+ rerender()
+ expect(result.current?.notifications.length).toBe(1);
+
+ jest.advanceTimersByTime(timeout);
+ rerender()
+ expect(result.current?.notifications.length).toBe(0);
+
+});
diff --git a/yarn.lock b/yarn.lock
index 039e2bc..f3bc12b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -960,6 +960,14 @@
pirates "^4.0.0"
source-map-support "^0.5.16"
+"@babel/runtime-corejs3@^7.10.2":
+ version "7.12.13"
+ resolved
"https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.12.13.tgz#53d09813b7c20d616caf258e9325550ff701c039"
+ integrity
sha512-8fSpqYRETHATtNitsCXq8QQbKJP31/KnDl2Wz2Vtui9nKzjss2ysuZtyVsWjBtvkeEFo346gkwjYPab1hvrXkQ==
+ dependencies:
+ core-js-pure "^3.0.0"
+ regenerator-runtime "^0.13.4"
+
"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.5",
"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.3.1",
"@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2",
"@babel/runtime@^7.8.4":
version "7.12.13"
resolved
"https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.13.tgz#0a21452352b02542db0ffb928ac2d3ca7cb6d66d"
@@ -2087,11 +2095,42 @@
dependencies:
defer-to-connect "^1.0.1"
+"@testing-library/dom@^7.16.2":
+ version "7.29.4"
+ resolved
"https://registry.yarnpkg.com/@testing-library/dom/-/dom-7.29.4.tgz#1647c2b478789621ead7a50614ad81ab5ae5b86c"
+ integrity
sha512-CtrJRiSYEfbtNGtEsd78mk1n1v2TUbeABlNIcOCJdDfkN5/JTOwQEbbQpoSRxGqzcWPgStMvJ4mNolSuBRv1NA==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ "@babel/runtime" "^7.12.5"
+ "@types/aria-query" "^4.2.0"
+ aria-query "^4.2.2"
+ chalk "^4.1.0"
+ dom-accessibility-api "^0.5.4"
+ lz-string "^1.4.4"
+ pretty-format "^26.6.2"
+
+"@testing-library/preact-hooks@^1.1.0":
+ version "1.1.0"
+ resolved
"https://registry.yarnpkg.com/@testing-library/preact-hooks/-/preact-hooks-1.1.0.tgz#f4e197ec77b295ce6c122c560c46b5b03bc4f015"
+ integrity
sha512-+JIor+NsOHkK3oIrwMDGKGHXTN0JJi462dBJlj4FNbGaDPTlctE6eu2ranWQirh7/FJMkWfzQCP+tk7jmY8ZrQ==
+
+"@testing-library/preact@^2.0.1":
+ version "2.0.1"
+ resolved
"https://registry.yarnpkg.com/@testing-library/preact/-/preact-2.0.1.tgz#c69200b16c4eda58986c8d65e1043ad9cbe409d3"
+ integrity
sha512-79kwVOY+3caoLgaPbiPzikjgY0Aya7Fc7TvGtR1upCnz2wrtmPDnN2t9vO7I7vDP2zoA+feSwOH5Q0BFErhaaQ==
+ dependencies:
+ "@testing-library/dom" "^7.16.2"
+
"@types/anymatch@*":
version "1.3.1"
resolved
"https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a"
integrity
sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==
+"@types/aria-query@^4.2.0":
+ version "4.2.1"
+ resolved
"https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.1.tgz#78b5433344e2f92e8b306c06a5622c50c245bf6b"
+ integrity
sha512-S6oPal772qJZHoRZLFc/XoZW2gFvwXusYUmXPXkgxJLuEk2vOt7jc4Yo6z/vtI0EBkbPBVrJJ0B+prLIKiWqHg==
+
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7":
version "7.1.12"
resolved
"https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d"
@@ -2871,6 +2910,14 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
+aria-query@^4.2.2:
+ version "4.2.2"
+ resolved
"https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
+ integrity
sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
+ dependencies:
+ "@babel/runtime" "^7.10.2"
+ "@babel/runtime-corejs3" "^7.10.2"
+
arr-diff@^4.0.0:
version "4.0.0"
resolved
"https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
@@ -4632,7 +4679,7 @@ core-js-compat@^3.8.0:
browserslist "^4.16.1"
semver "7.0.0"
-core-js-pure@^3.0.1:
+core-js-pure@^3.0.0, core-js-pure@^3.0.1:
version "3.8.3"
resolved
"https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.3.tgz#10e9e3b2592ecaede4283e8f3ad7020811587c02"
integrity
sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA==
@@ -5352,6 +5399,11 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
+dom-accessibility-api@^0.5.4:
+ version "0.5.4"
+ resolved
"https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.4.tgz#b06d059cdd4a4ad9a79275f9d414a5c126241166"
+ integrity
sha512-TvrjBckDy2c6v6RLxPv5QXOnU+SmF9nBII5621Ve5fu6Z/BDrENurBEvlC1f44lKEUVqOpK4w9E5Idc5/EgkLQ==
+
dom-converter@^0.2:
version "0.2.0"
resolved
"https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
@@ -9164,6 +9216,11 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
+lz-string@^1.4.4:
+ version "1.4.4"
+ resolved
"https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
+ integrity sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=
+
magic-string@^0.25.0, magic-string@^0.25.7:
version "0.25.7"
resolved
"https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-merchant-backoffice] branch master updated: test hooks example,
gnunet <=